<?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>91850</bug_id>
          
          <creation_ts>2012-07-20 04:12:41 -0700</creation_ts>
          <short_desc>add 7 bit strings capabilities to the v8 binding layer</short_desc>
          <delta_ts>2012-12-05 17:05:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dan Carney">dcarney</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>leviw</cc>
    
    <cc>msaboff</cc>
    
    <cc>ojan</cc>
    
    <cc>pdr</cc>
    
    <cc>sullivan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674446</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-07-20 04:12:41 -0700</bug_when>
    <thetext>add 7 bit strings capabilities to the v8 binding layer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674483</commentid>
    <comment_count>1</comment_count>
      <attachid>153483</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-07-20 05:47:26 -0700</bug_when>
    <thetext>Created attachment 153483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674486</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-20 05:51:42 -0700</bug_when>
    <thetext>Attachment 153483 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/bindings/v8/V8Binding.cpp:406:  The parameter name &quot;resource&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 3 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674490</commentid>
    <comment_count>3</comment_count>
      <attachid>153485</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-07-20 05:59:14 -0700</bug_when>
    <thetext>Created attachment 153485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674491</commentid>
    <comment_count>4</comment_count>
      <attachid>153483</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-20 06:00:42 -0700</bug_when>
    <thetext>Comment on attachment 153483
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        No new tests.  Refactor - no new functionality.

(I&apos;ve not looked into the patch in detail but) would you check performance impact? We want to confirm that this change won&apos;t regress binding performance. You can test binding performance by WebKit/PerformanceTests/Dromaeo/dom-*.html and WebKit/PerformanceTests/Bindings/*. (You can add a new one if needed.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674579</commentid>
    <comment_count>5</comment_count>
      <attachid>153506</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-07-20 08:08:38 -0700</bug_when>
    <thetext>Created attachment 153506
typical performance test results without patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674580</commentid>
    <comment_count>6</comment_count>
      <attachid>153507</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-07-20 08:09:06 -0700</bug_when>
    <thetext>Created attachment 153507
typical performance test results with patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674582</commentid>
    <comment_count>7</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-07-20 08:10:57 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 153483 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153483&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        No new tests.  Refactor - no new functionality.
&gt; 
&gt; (I&apos;ve not looked into the patch in detail but) would you check performance impact? We want to confirm that this change won&apos;t regress binding performance. You can test binding performance by WebKit/PerformanceTests/Dromaeo/dom-*.html and WebKit/PerformanceTests/Bindings/*. (You can add a new one if needed.)




I&apos;ve run the performance tests for you.  No obvious degradation, but the one place I suspect there could be performance degradation String::containsOnlyASCII() I intend to fix upstream, so that the cost of calling that will be gone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674586</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-20 08:15:23 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I&apos;ve run the performance tests for you.  No obvious degradation, 

Great!

Is this just a noise?

    - without your patch: dom-attr= 7587.33618079 runs/s
    - with your patch: dom-attr= 7055.17692413 runs/s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674588</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-20 08:18:40 -0700</bug_when>
    <thetext>Anyway this patch looks really great. I believe this patch will definitely save memory but I&apos;m not sure how much. It would be also helpful to investigate how much memory are saved by this patch in a couple of real-world websites (Google Docs, Google SpreadSheet, Gmail, facebook, twitter etc).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674606</commentid>
    <comment_count>10</comment_count>
      <attachid>153485</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 08:47:08 -0700</bug_when>
    <thetext>Comment on attachment 153485
Patch

This patch is causing a large number of tests to fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675564</commentid>
    <comment_count>11</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-07-23 02:38:23 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 153485 [details])
&gt; This patch is causing a large number of tests to fail.

The errors come from v8 ascii handling.  A bug has been filed with the v8 team.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676839</commentid>
    <comment_count>12</comment_count>
      <attachid>154067</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-07-24 08:24:25 -0700</bug_when>
    <thetext>Created attachment 154067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676850</commentid>
    <comment_count>13</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-07-24 08:29:45 -0700</bug_when>
    <thetext>reuploaded patch with bug fix from v8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676867</commentid>
    <comment_count>14</comment_count>
      <attachid>154067</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-24 08:42:06 -0700</bug_when>
    <thetext>Comment on attachment 154067
Patch

Attachment 154067 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13323635</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676872</commentid>
    <comment_count>15</comment_count>
      <attachid>154067</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-24 08:46:53 -0700</bug_when>
    <thetext>Comment on attachment 154067
Patch

This is a big (wonderful) change. Before looking into details, I&apos;d like to confirm a couple of things. Would you describe the following points in ChangeLog?

- Performance impact. (Was the dom-attr.html result just a noise? WebKit performance tests can just catch 10%~ regression. So it is important to manually make sure that a doubtful patch never regresses performance. Please check Bindings/* and Dromaeo/dom-*)

- Memory benefit. (How much memory is saved by this patch? Let&apos;s take a couple of real-world websites or artificial benchmarks and measure the memory benefit.)

- Test coverage. (You mentioned that existing tests are already testing the call path of this patch. Would you list up some of them instead of writing &quot;No new tests. Refactor - no new functionality.&quot;?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676873</commentid>
    <comment_count>16</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-24 08:49:36 -0700</bug_when>
    <thetext>Looks like you need to update the V8 DEPS of chromium-ews. (You can ask it in IRC. If tomorrow is OK, I can do it.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677745</commentid>
    <comment_count>17</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-07-25 00:45:13 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Looks like you need to update the V8 DEPS of chromium-ews. (You can ask it in IRC. If tomorrow is OK, I can do it.)

The V8 update was reverted because it caused random crashes, so we&apos;ll have to wait a bit longer it seems :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677753</commentid>
    <comment_count>18</comment_count>
      <attachid>154067</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-25 00:51:38 -0700</bug_when>
    <thetext>Comment on attachment 154067
Patch

OK. For now marking r- due to the build failure. (We do not just want to list up r? patches in the review list.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716004</commentid>
    <comment_count>19</comment_count>
      <attachid>163109</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-10 06:12:33 -0700</bug_when>
    <thetext>Created attachment 163109
patch for perfalizer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716006</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 06:14:07 -0700</bug_when>
    <thetext>Attachment 163109 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/bindings/v8/V8PerIsolateDat...&quot; exit_code: 1
Source/WebCore/bindings/v8/V8StringResource.cpp:143:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Source/WebCore/bindings/v8/V8StringResource.cpp:134:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebCore/bindings/v8/V8ValueCache.h:146:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/bindings/v8/V8ValueCache.h:147:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/bindings/v8/V8ValueCache.h:164:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/bindings/v8/V8ValueCache.h:165:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 6 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717051</commentid>
    <comment_count>21</comment_count>
      <attachid>163333</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-11 04:33:58 -0700</bug_when>
    <thetext>Created attachment 163333
perfalizer patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717052</commentid>
    <comment_count>22</comment_count>
      <attachid>163334</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-11 04:35:18 -0700</bug_when>
    <thetext>Created attachment 163334
perf results of 163333</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744241</commentid>
    <comment_count>23</comment_count>
      <attachid>169187</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-17 08:03:06 -0700</bug_when>
    <thetext>Created attachment 169187
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744290</commentid>
    <comment_count>24</comment_count>
      <attachid>169187</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-17 09:04:55 -0700</bug_when>
    <thetext>Comment on attachment 169187
Patch

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

New failing tests:
inspector/timeline/timeline-load.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744330</commentid>
    <comment_count>25</comment_count>
      <attachid>169187</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-17 09:56:21 -0700</bug_when>
    <thetext>Comment on attachment 169187
Patch

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

New failing tests:
inspector/timeline/timeline-load.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744608</commentid>
    <comment_count>26</comment_count>
      <attachid>169187</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-17 14:18:04 -0700</bug_when>
    <thetext>Comment on attachment 169187
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        No new tests. Test coverage already extensive.

Since this should be a perf win, it seems appropriate to comment on how much of a win it is (in whatever example benchmarks you like) in the ChangeLog.

&gt; Source/WebCore/bindings/v8/V8StringResource.cpp:42
&gt; +    inline static String fromStringResource(WebCoreStringResourceBase* resource)

Should this return const String&amp;?  it seems the resource always owns the String.

&gt; Source/WebCore/bindings/v8/V8StringResource.cpp:135
&gt;          return String(&quot;&quot;);

String::empty() is faster. :)

&gt; Source/WebCore/bindings/v8/V8ValueCache.cpp:44
&gt; +    if (string.is8Bit() &amp;&amp; string.containsOnlyASCII()) {
&gt; +        WebCoreStringResource8* stringResource = new WebCoreStringResource8(string);
&gt; +        v8::Local&lt;v8::String&gt; newString = v8::String::NewExternal(stringResource);
&gt; +        if (newString.IsEmpty())
&gt; +            delete stringResource;
&gt; +        return newString;
&gt; +    }
&gt; +
&gt; +    WebCoreStringResource16* stringResource = new WebCoreStringResource16(string);

Can&apos;t we share this block by using a WebCoreStringResourceBase* ?  Or does it not have a virtual destructor?

&gt; Source/WebCore/bindings/v8/V8ValueCache.h:87
&gt; +    inline explicit WebCoreStringResourceBase(const AtomicString&amp; string)

I was under the impression that marking things &quot;inline&quot; in headers was meanlingless?  I thought &apos;inline&apos; was implied for anything which was listed as part of the class definition?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744612</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-17 14:23:42 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 169187 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169187&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8StringResource.cpp:135
&gt; &gt;          return String(&quot;&quot;);
&gt; 
&gt; String::empty() is faster. :)

But not thread safe.  My understanding is that this code is used in workers as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745227</commentid>
    <comment_count>28</comment_count>
      <attachid>169406</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-18 06:53:14 -0700</bug_when>
    <thetext>Created attachment 169406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745231</commentid>
    <comment_count>29</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-18 07:07:59 -0700</bug_when>
    <thetext>I&apos;ve cleaned up the patch a bit.  It will fail until a v8 bug fix makes its way through the pipeline, but I&apos;d still like another review so I can get this patch in the commit queue as soon as that happens. I have the feeling that this patch will get rolled back a few times, as it&apos;s using a bunch of v8 functionality never used before, and I&apos;d like to work through that sooner rather than later.

&gt; Since this should be a perf win, it seems appropriate to comment on how much of a win it is (in whatever example benchmarks you like) in the ChangeLog.

Okay, I forgot to add them in this patch, I&apos;ll add those in on the final submit. Some representative numbers are in https://bugs.webkit.org/attachment.cgi?id=163334, but like are perf numbers are probably somewhat wrong.

In particular:

Bindings/append-child
Bindings/create-element 
Bindings/id-getter
Dromaeo/jslib-style-jquery
Dromaeo/jslib-attr-jquery
Dromaeo/dromaeo-object-regexp
Dromaeo/sunspider-crypto-md5 

see some consistent improvement.  There are a few loses but they seem less drastic than the gains, and I have future patches to v8 which should mitigate them.

&gt; &gt; Source/WebCore/bindings/v8/V8ValueCache.cpp:44
&gt; &gt; +    if (string.is8Bit() &amp;&amp; string.containsOnlyASCII()) {
&gt; &gt; +        WebCoreStringResource8* stringResource = new WebCoreStringResource8(string);
&gt; &gt; +        v8::Local&lt;v8::String&gt; newString = v8::String::NewExternal(stringResource);
&gt; &gt; +        if (newString.IsEmpty())
&gt; &gt; +            delete stringResource;
&gt; &gt; +        return newString;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    WebCoreStringResource16* stringResource = new WebCoreStringResource16(string);
&gt; 
&gt; Can&apos;t we share this block by using a WebCoreStringResourceBase* ?  Or does it not have a virtual destructor?

It&apos;s not obvious here, but  v8::String::NewExternal() is the problem as it&apos;s overloaded and doesn&apos;t accept ExternalStringBase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745615</commentid>
    <comment_count>30</comment_count>
      <attachid>169406</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-18 15:12:52 -0700</bug_when>
    <thetext>Comment on attachment 169406
Patch

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

&gt; Source/WebCore/bindings/v8/V8PerIsolateData.cpp:116
&gt; +            if (encoding == v8::String::ASCII_ENCODING)
&gt; +                base = static_cast&lt;WebCoreStringResource8*&gt;(resource);
&gt; +            else
&gt; +                base = static_cast&lt;WebCoreStringResource16*&gt;(resource);

This code looks very strange.  Why is it important to use the right static cast?  Presumably WebCoreStringResourceBase is the only base class for WebCoreStringResource8 and WebCoreStringResource16, which means these static casts should be zero offsets.  We can add an ASSERT to that effect.

&gt; Source/WebCore/bindings/v8/V8StringResource.cpp:82
&gt; +    static const int inlineBufferSize = 16;

Is this constant related to something intrinsic to AtomicString?  if so, can we get the constant from AtomicString rather than having to duplicate it here?

&gt; Source/WebCore/bindings/v8/V8StringResource.cpp:100
&gt; +    v8String-&gt;WriteAscii(reinterpret_cast&lt;char*&gt;(buffer), 0, length, v8::String::PRESERVE_ASCII_NULL);

The NULL in this constant got me thinking.  Are we getting things correct w.r.t. null termination?  For example, the buffer in String isn&apos;t null terminated.  If V8 is trying to write a null terminator, the lengths will be off by one.  I guess that would show up in tests if we were goofing that up.

&gt; Source/WebCore/bindings/v8/V8StringResource.cpp:125
&gt; +        v8::String::Encoding encoding;
&gt; +        v8::String::ExternalStringResourceBase* resource = v8String-&gt;GetExternalStringResourceBase(&amp;encoding);
&gt; +        if (LIKELY(!!resource)) {
&gt; +            WebCoreStringResourceBase* base;
&gt; +            if (encoding == v8::String::ASCII_ENCODING)
&gt; +                base = static_cast&lt;WebCoreStringResource8*&gt;(resource);
&gt; +            else
&gt; +                base = static_cast&lt;WebCoreStringResource16*&gt;(resource);
&gt; +            return StringTraits&lt;StringType&gt;::fromStringResource(base);
&gt; +        }

This code looks largely duplicated from V8PerIsolateData.cpp.  Is there no way to share this logic?

I also don&apos;t understand why we need this tricky static_cast logic (same question as above)

&gt; Source/WebCore/bindings/v8/V8StringResource.cpp:129
&gt; -    if (!length)
&gt; +    if (UNLIKELY(!length))

Did you measure this UNLIKELY as having a performance benefit?  It&apos;s most likely a no-op.

&gt; Source/WebCore/bindings/v8/V8ValueCache.h:151
&gt; +        return static_cast&lt;WebCoreStringResource16*&gt;(v8String-&gt;GetExternalStringResource());

Should we add an ASSERT about the encoding of v8String?

&gt; Source/WebCore/bindings/v8/V8ValueCache.h:154
&gt; +    explicit WebCoreStringResource16(const String&amp; string): WebCoreStringResourceBase(string) { }
&gt; +    explicit WebCoreStringResource16(const AtomicString&amp; string): WebCoreStringResourceBase(string) { }

nit: Space before :</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745616</commentid>
    <comment_count>31</comment_count>
      <attachid>169406</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-18 15:13:32 -0700</bug_when>
    <thetext>Comment on attachment 169406
Patch

I&apos;m marking this r- because its causing a lot of tests to fail, but I actually think this is looking pretty good.  My previous comments are mostly just details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745617</commentid>
    <comment_count>32</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-18 15:14:49 -0700</bug_when>
    <thetext>(If I were you, I&apos;d add a link to https://bug-91850-attachments.webkit.org/attachment.cgi?id=163334 in the ChangeLog entry.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745625</commentid>
    <comment_count>33</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-18 15:18:13 -0700</bug_when>
    <thetext>Some of those perf results show large swings in &quot;bytes&quot;.  Is that expected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745666</commentid>
    <comment_count>34</comment_count>
      <attachid>169406</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-18 15:50:54 -0700</bug_when>
    <thetext>Comment on attachment 169406
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/V8PerIsolateData.cpp:116
&gt;&gt; +                base = static_cast&lt;WebCoreStringResource16*&gt;(resource);
&gt; 
&gt; This code looks very strange.  Why is it important to use the right static cast?  Presumably WebCoreStringResourceBase is the only base class for WebCoreStringResource8 and WebCoreStringResource16, which means these static casts should be zero offsets.  We can add an ASSERT to that effect.

The hierarchy is a little wierd here because we computing offsets between 2 different base classes with respect to 4 subclasses.  I expect the offsets are the same because of the similarity of ExternalAsciiStringResource and ExternalStringResource, but the offsets are definitely not 0.  I can add an ASSERT to verify the sameness, but I was assuming the compiler would remove the branch if they happened to be equal.

&gt;&gt; Source/WebCore/bindings/v8/V8StringResource.cpp:82
&gt;&gt; +    static const int inlineBufferSize = 16;
&gt; 
&gt; Is this constant related to something intrinsic to AtomicString?  if so, can we get the constant from AtomicString rather than having to duplicate it here?

I didn&apos;t write this, but I expect there is a performance gain up to a point doing everything on the stack, and the original writer just guessed at a number that sounded reasonable.  It has nothing to do with AtomicString.

&gt;&gt; Source/WebCore/bindings/v8/V8StringResource.cpp:100
&gt;&gt; +    v8String-&gt;WriteAscii(reinterpret_cast&lt;char*&gt;(buffer), 0, length, v8::String::PRESERVE_ASCII_NULL);
&gt; 
&gt; The NULL in this constant got me thinking.  Are we getting things correct w.r.t. null termination?  For example, the buffer in String isn&apos;t null terminated.  If V8 is trying to write a null terminator, the lengths will be off by one.  I guess that would show up in tests if we were goofing that up.

PRESERVE_ASCII_NULL is a bug fix for some bizarre legacy thing in v8 where &apos;\0&apos; was swapped out with &apos; &apos;.  As far as null termination goes, v8 doesn&apos;t need it and doesn&apos;t add null terminators, just like webcore

&gt;&gt; Source/WebCore/bindings/v8/V8StringResource.cpp:125
&gt;&gt; +        }
&gt; 
&gt; This code looks largely duplicated from V8PerIsolateData.cpp.  Is there no way to share this logic?
&gt; 
&gt; I also don&apos;t understand why we need this tricky static_cast logic (same question as above)

I was going to share the logic, but this particular block gets hit literally billions of times in certain dromeao tests, so i duplicated the code.  Otherwise there would need to be an additional branch here.

&gt;&gt; Source/WebCore/bindings/v8/V8StringResource.cpp:129
&gt;&gt; +    if (UNLIKELY(!length))
&gt; 
&gt; Did you measure this UNLIKELY as having a performance benefit?  It&apos;s most likely a no-op.

I didn&apos;t measure the performance impact, but because this code gets hit hard in the benchmarks (less so than the above block), i added it.  I figured it might swap the branch contents to put everything after the branch in starting at the next instruction, but i didn&apos;t bother to check.

&gt;&gt; Source/WebCore/bindings/v8/V8ValueCache.h:151
&gt;&gt; +        return static_cast&lt;WebCoreStringResource16*&gt;(v8String-&gt;GetExternalStringResource());
&gt; 
&gt; Should we add an ASSERT about the encoding of v8String?

this might no longer be used.  if so i&apos;ll drop it, but the original intention of the call was to check whether the resource existed, as v8 has no cheap way of checking so the assert would be incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745671</commentid>
    <comment_count>35</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-18 15:52:33 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; Some of those perf results show large swings in &quot;bytes&quot;.  Is that expected?

I&apos;ll double check once the v8 fix is in and this patch can go out, but those number were largely random in my original tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745690</commentid>
    <comment_count>36</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-18 16:05:35 -0700</bug_when>
    <thetext>Ah, I think I didn&apos;t understand the class hierarchy quite correctly.  Thanks.

This patch seems close to ready to be landed once we roll in a new version of V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745691</commentid>
    <comment_count>37</comment_count>
      <attachid>169406</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-18 16:06:05 -0700</bug_when>
    <thetext>Comment on attachment 169406
Patch

I&apos;ve adjusted the flags to more closely match my understanding of the status of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754371</commentid>
    <comment_count>38</comment_count>
      <attachid>171452</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-30 08:03:14 -0700</bug_when>
    <thetext>Created attachment 171452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754372</commentid>
    <comment_count>39</comment_count>
      <attachid>171452</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-30 08:04:03 -0700</bug_when>
    <thetext>Comment on attachment 171452
Patch

The necessary v8 fix has been committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754401</commentid>
    <comment_count>40</comment_count>
      <attachid>171452</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 08:48:04 -0700</bug_when>
    <thetext>Comment on attachment 171452
Patch

Clearing flags on attachment: 171452

Committed r132913: &lt;http://trac.webkit.org/changeset/132913&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754402</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 08:48:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757420</commentid>
    <comment_count>42</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-02 11:53:52 -0700</bug_when>
    <thetext>Reopening, this was rolled out in https://bugs.webkit.org/show_bug.cgi?id=100872.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769235</commentid>
    <comment_count>43</comment_count>
      <attachid>174676</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-16 07:08:36 -0800</bug_when>
    <thetext>Created attachment 174676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769239</commentid>
    <comment_count>44</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-16 07:11:48 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; Created an attachment (id=174676) [details]
&gt; Patch

I believe I&apos;ve addressed the performance issues that caused the rollback of the last patch. See bug 100872  for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769253</commentid>
    <comment_count>45</comment_count>
      <attachid>174676</attachid>
    <who name="">jochen</who>
    <bug_when>2012-11-16 07:26:39 -0800</bug_when>
    <thetext>Comment on attachment 174676
Patch

let&apos;s give it another try</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769272</commentid>
    <comment_count>46</comment_count>
      <attachid>174676</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 07:47:42 -0800</bug_when>
    <thetext>Comment on attachment 174676
Patch

Clearing flags on attachment: 174676

Committed r134950: &lt;http://trac.webkit.org/changeset/134950&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769273</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 07:47:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769365</commentid>
    <comment_count>48</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-16 09:39:02 -0800</bug_when>
    <thetext>I&apos;m very happy to see this patch land again.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769368</commentid>
    <comment_count>49</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-16 09:41:43 -0800</bug_when>
    <thetext>Yes, thank you Dan!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769845</commentid>
    <comment_count>50</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-16 18:49:19 -0800</bug_when>
    <thetext>3% memory improvement: http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/morejs/report.html?rev=168337&amp;graph=ws_single_peak_r&amp;trace=ws_spk_r&amp;history=30

No performance regressions yet. Fingers crossed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770007</commentid>
    <comment_count>51</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-17 14:07:20 -0800</bug_when>
    <thetext>Not sure what to make of this data. But it looks like there&apos;s a regression on Mac. Maybe there some conversion we&apos;re doing only on Mac with this patch?

17% improvement on DOMDivWalk on Windows and Linux:
http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/dom_perf/report.html?rev=168452&amp;graph=DOMDivWalk&amp;trace=score&amp;history=50
http://build.chromium.org/f/chromium/perf/linux-release-webkit-latest/dom_perf/report.html?rev=168452&amp;graph=Get%20Elements&amp;trace=score&amp;history=50

12% improvement on jslib_attr_jquery_jQuery___addClass on Mac 10.6: http://build.chromium.org/f/chromium/perf/mac-release-10.6-webkit-latest/dromaeo_jslibattrjquery/report.html?rev=168452&amp;graph=jslib_attr_jquery_jQuery___addClass&amp;trace=score&amp;history=50

9% regression on DOMDivWalk on Mac 10.6: http://build.chromium.org/f/chromium/perf/mac-release-10.6-webkit-latest/dom_perf/report.html?rev=168452&amp;graph=DOMDivWalk&amp;trace=score&amp;history=50

8% regression on GetElements on Mac 10.6: http://build.chromium.org/f/chromium/perf/mac-release-10.6-webkit-latest/dom_perf/report.html?rev=168452&amp;graph=Get%20Elements&amp;trace=score&amp;history=50</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770009</commentid>
    <comment_count>52</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-17 14:13:59 -0800</bug_when>
    <thetext>Mac is the only platform on which we don&apos;t use tcmalloc (I believe by mistake): http://code.google.com/p/chromium/issues/detail?id=158645</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770117</commentid>
    <comment_count>53</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-18 06:28:16 -0800</bug_when>
    <thetext>(In reply to comment #51)
&gt; Not sure what to make of this data. But it looks like there&apos;s a regression on Mac. Maybe there some conversion we&apos;re doing only on Mac with this patch?

I only tested on linux, but I can look further into why this is happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772322</commentid>
    <comment_count>54</comment_count>
      <attachid>174676</attachid>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-11-20 17:22:06 -0800</bug_when>
    <thetext>Comment on attachment 174676
Patch

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

&gt; Source/WebCore/bindings/v8/V8ValueCache.h:86
&gt; +        v8::V8::AdjustAmountOfExternalAllocatedMemory(memoryConsumption(string));

Here and elsewhere: memoryConsumption()?  I believe you can get that from WTF::String.sizeInBytes(), right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784297</commentid>
    <comment_count>55</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-12-05 17:05:12 -0800</bug_when>
    <thetext>Nice work! This patch produced a ~2.5% improvement on two SVG tests on linux: http://webkit-perf.appspot.com/graph.html#tests=[[10927939,2001,173262],[11590529,2001,173262]]&amp;sel=1353031234357.7446,1353130502442.851&amp;displayrange=30&amp;datatype=running</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153483</attachid>
            <date>2012-07-20 05:47:26 -0700</date>
            <delta_ts>2012-07-24 08:24:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91850-20120720144721.patch</filename>
            <type>text/plain</type>
            <size>17612</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ4ZTZhYzQ1ZWZiMzMw
Njk3ODgxZTc2YTFjOWJkOTczOTNiYjg4Zi4uZTZlYjA5YWRiN2JlNGZiZjk1NmI4NGYyOTQzOWQ1
ZTFkZTg4MTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA3LTIwICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIGFkZCA3IGJpdCBzdHJpbmdz
IGNhcGFiaWxpdGllcyB0byB0aGUgdjggYmluZGluZyBsYXllcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBlbmFibGVzIHRoZSB2OCBi
aW5kaW5nIGxheWVyIHRvIG1ha2UgdXNlIG9mIHdlYmtpdCdzCisJOCBiaXQgc3RyaW5nIGNhcGFi
aWxpdGllcy4gIEV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgZm9yIDE2IGJpdCBzdHJpbmdzCisJaXMg
c2ltcGx5IHRlbXBsYXRpemVkIGFuZCBtYXBwZWQgb250byB2OCdzIDcgYXNjaWkgc3RyaW5nIGFw
aS4KKworICAgICAgICBObyBuZXcgdGVzdHMuICBSZWZhY3RvciAtIG5vIG5ldyBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNlOjpXZWJDb3Jl
U3RyaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNl
Ojp+V2ViQ29yZVN0cmluZ1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJp
bmdSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3RyaW5nUmVzb3Vy
Y2U6OmF0b21pY1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlU3RyaW5nUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNlOjpleHRlcm5hbGl6ZVN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3RyaW5nUmVzb3VyY2U6OnZpc2l0U3RyaW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjo6OmdldFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6
d3JpdGVJbnRvQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6c3RyaW5nRnJvbVY4U3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6Ojo6YXRvbWljU3RyaW5nRnJvbVY4U3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp2aXNpdEV4dGVybmFsU3RyaW5n
cyk6CisgICAgICAgIChTdHJpbmdUcmFpdHMpOgorICAgICAgICAoV2ViQ29yZTo6YXRvbWljQ29w
eUZhaWxlZCk6UmV0dXJucyB0cnVlIGZvciB0aGUgZWRnZSBjYXNlIHdoZXJlIGFuIDggYml0IHN0
cmluZyBpcyBjb252ZXJ0ZWQgdG8gYSAxNiBiaXQgc3RyaW5nIG9uIGluc2VydCBpbnRvIHRoZSBh
dG9taWMgc3RyaW5nIHRhYmxlLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVN0cmluZ1Jlc291
cmNlN0JpdCk6CisgICAgICAgIChXZWJDb3JlOjp2OFN0cmluZ1RvV2ViQ29yZVN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjptYWtlRXh0ZXJuYWxTdHJpbmcpOgorCiAyMDEyLTA3LTIwICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTaG93IG9yIGhp
ZGUgPGRpYWxvZz4gZGVwZW5kaW5nIG9uIHRoZSBvcGVuIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggZDI4MmIwZGJlZjc4Njk5MzQyNWI5ZDc2
YjA3N2EzM2QwMzZhY2YxMy4uYzM4ZmZhYjc4ODQ4ZWZiMTIxYzBhZGMwNGE2YTQ1NmNlY2YzMWM4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCkBAIC0xMDQsNyAr
MTA0LDggQEAgdm9pZCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW4KIAogLy8gV2ViQ29yZVN0cmluZ1Jlc291
cmNlIGlzIGEgaGVscGVyIGNsYXNzIGZvciB2OEV4dGVybmFsU3RyaW5nLiBJdCBpcyB1c2VkCiAv
LyB0byBtYW5hZ2UgdGhlIGxpZmUtY3ljbGUgb2YgdGhlIHVuZGVybHlpbmcgYnVmZmVyIG9mIHRo
ZSBleHRlcm5hbCBzdHJpbmcuCi1jbGFzcyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UgOiBwdWJsaWMg
djg6OlN0cmluZzo6RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZSB7Cit0ZW1wbGF0ZTxjbGFzcyBTdHJp
bmdSZXNvdXJjZSwgdHlwZW5hbWUgRGF0YVR5cGUsIHR5cGVuYW1lIENoYXJUeXBlPgorY2xhc3Mg
V2ViQ29yZVN0cmluZ1Jlc291cmNlIDogcHVibGljIFN0cmluZ1Jlc291cmNlIHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiAgICAgICAgIDogbV9wbGFpblN0cmluZyhzdHJpbmcpCkBAIC0xMTMsNyArMTE0LDcgQEAgcHVi
bGljOgogICAgICAgICBtX3RocmVhZElkID0gV1RGOjpjdXJyZW50VGhyZWFkKCk7CiAjZW5kaWYK
ICAgICAgICAgQVNTRVJUKCFzdHJpbmcuaXNOdWxsKCkpOwotICAgICAgICB2ODo6Vjg6OkFkanVz
dEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkoMiAqIHN0cmluZy5sZW5ndGgoKSk7Cisg
ICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeShzaXpl
b2YoQ2hhclR5cGUpICogc3RyaW5nLmxlbmd0aCgpKTsKICAgICB9CiAKICAgICBleHBsaWNpdCBX
ZWJDb3JlU3RyaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCkBAIC0xMjQs
NyArMTI1LDcgQEAgcHVibGljOgogICAgICAgICBtX3RocmVhZElkID0gV1RGOjpjdXJyZW50VGhy
ZWFkKCk7CiAjZW5kaWYKICAgICAgICAgQVNTRVJUKCFzdHJpbmcuaXNOdWxsKCkpOwotICAgICAg
ICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkoMiAqIHN0cmlu
Zy5sZW5ndGgoKSk7CisgICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9j
YXRlZE1lbW9yeShzaXplb2YoQ2hhclR5cGUpICogc3RyaW5nLmxlbmd0aCgpKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIH5XZWJDb3JlU3RyaW5nUmVzb3VyY2UoKQpAQCAtMTMyLDE1ICsxMzMsMTYg
QEAgcHVibGljOgogI2lmbmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKG1fdGhyZWFkSWQgPT0g
V1RGOjpjdXJyZW50VGhyZWFkKCkpOwogI2VuZGlmCi0gICAgICAgIGludCByZWR1Y2VkRXh0ZXJu
YWxNZW1vcnkgPSAtMiAqIG1fcGxhaW5TdHJpbmcubGVuZ3RoKCk7CisgICAgICAgIGludCBsZW5n
dGggPSBtX3BsYWluU3RyaW5nLmxlbmd0aCgpOworICAgICAgICBpbnQgcmVkdWNlZEV4dGVybmFs
TWVtb3J5ID0gLXNpemVvZihDaGFyVHlwZSkgKiBsZW5ndGg7CiAgICAgICAgIGlmIChtX3BsYWlu
U3RyaW5nLmltcGwoKSAhPSBtX2F0b21pY1N0cmluZy5pbXBsKCkgJiYgIW1fYXRvbWljU3RyaW5n
LmlzTnVsbCgpKQotICAgICAgICAgICAgcmVkdWNlZEV4dGVybmFsTWVtb3J5ICo9IDI7CisgICAg
ICAgICAgICByZWR1Y2VkRXh0ZXJuYWxNZW1vcnkgLT0gbGVuZ3RoICogKG1fYXRvbWljU3RyaW5n
LmltcGwoKS0+aXM4Qml0KCkgPyBzaXplb2YoTENoYXIpIDogc2l6ZW9mKFVDaGFyKSk7CiAgICAg
ICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeShyZWR1Y2Vk
RXh0ZXJuYWxNZW1vcnkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgY29uc3QgdWludDE2X3QqIGRh
dGEoKSBjb25zdAorICAgIHZpcnR1YWwgRGF0YVR5cGUgZGF0YSgpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KG1fcGxhaW5TdHJp
bmcuaW1wbCgpLT5jaGFyYWN0ZXJzKCkpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxEYXRhVHlwZT4obV9wbGFpblN0cmluZy5pbXBsKCktPmdldENoYXJhY3RlcnM8Q2hhclR5cGU+
KCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGxhaW5TdHJpbmcuaW1wbCgpLT5sZW5ndGgoKTsgfQpAQCAtMTU2LDIyICsxNTgsNDAgQEAg
cHVibGljOgogICAgICAgICAgICAgbV9hdG9taWNTdHJpbmcgPSBBdG9taWNTdHJpbmcobV9wbGFp
blN0cmluZyk7CiAgICAgICAgICAgICBBU1NFUlQoIW1fYXRvbWljU3RyaW5nLmlzTnVsbCgpKTsK
ICAgICAgICAgICAgIGlmIChtX3BsYWluU3RyaW5nLmltcGwoKSAhPSBtX2F0b21pY1N0cmluZy5p
bXBsKCkpCi0gICAgICAgICAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxs
b2NhdGVkTWVtb3J5KDIgKiBtX2F0b21pY1N0cmluZy5sZW5ndGgoKSk7CisgICAgICAgICAgICAg
ICAgdjg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KAorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9hdG9taWNTdHJpbmcubGVuZ3RoKCkgKiAobV9hdG9taWNTdHJp
bmcuaW1wbCgpLT5pczhCaXQoKSA/IHNpemVvZihMQ2hhcikgOiBzaXplb2YoVUNoYXIpKSk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fYXRvbWljU3RyaW5nOwogICAgIH0KIAotICAgIHZv
aWQgdmlzaXRTdHJpbmdzKEV4dGVybmFsU3RyaW5nVmlzaXRvciogdmlzaXRvcikKKyAgICAvLyBy
ZXR1cm5zIG51bGwgaWYgcmVzb3VyY2UgZG9lc24ndCBleGlzdCBvciBpcyBvZiB0aGUgd3Jvbmcg
dHlwZQorICAgIHN0YXRpYyBjb25zdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2UgKiBnZXRSZXNvdXJj
ZSh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+JiB2OFN0cmluZyk7CisKKyAgICBzdGF0aWMgdm9pZCB3
cml0ZUludG9CdWZmZXIodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiYgdjhTdHJpbmcsIGludCBsZW5n
dGgsIENoYXJUeXBlKiBidWZmZXIpOworCisgICAgc3RhdGljIFN0cmluZyBzdHJpbmdGcm9tVjhT
dHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiYgdjhTdHJpbmcsIGludCBsZW5ndGgpOworCisg
ICAgc3RhdGljIEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmdGcm9tVjhTdHJpbmcodjg6OkhhbmRs
ZTx2ODo6U3RyaW5nPiYgdjhTdHJpbmcsIGludCBsZW5ndGgpOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgU3RyaW5nVHlwZT4KKyAgICBzdGF0aWMgdm9pZCBleHRlcm5hbGl6ZVN0cmluZyhTdHJp
bmdUeXBlJiBzdHJpbmcsIHY4OjpIYW5kbGU8djg6OlN0cmluZz4mIHY4U3RyaW5nKQogICAgIHsK
LSAgICAgICAgdmlzaXRvci0+dmlzaXRKU0V4dGVybmFsU3RyaW5nKG1fcGxhaW5TdHJpbmcuaW1w
bCgpKTsKLSAgICAgICAgaWYgKG1fcGxhaW5TdHJpbmcuaW1wbCgpICE9IG1fYXRvbWljU3RyaW5n
LmltcGwoKSAmJiAhbV9hdG9taWNTdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgICAgICB2aXNpdG9y
LT52aXNpdEpTRXh0ZXJuYWxTdHJpbmcobV9hdG9taWNTdHJpbmcuaW1wbCgpKTsKKyAgICAgICAg
V2ViQ29yZVN0cmluZ1Jlc291cmNlKiBzdHJpbmdSZXNvdXJjZSA9IG5ldyBXZWJDb3JlU3RyaW5n
UmVzb3VyY2Uoc3RyaW5nKTsKKworICAgICAgICBpZiAoIXY4U3RyaW5nLT5NYWtlRXh0ZXJuYWwo
c3RyaW5nUmVzb3VyY2UpKSB7CisgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGEgZmFpbHVyZSBk
ZWxldGUgdGhlIGV4dGVybmFsIHJlc291cmNlIGFzIGl0IHdhcyBub3QgdXNlZC4KKyAgICAgICAg
ICAgIGRlbGV0ZSBzdHJpbmdSZXNvdXJjZTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIHN0YXRp
YyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UqIHRvU3RyaW5nUmVzb3VyY2Uodjg6OkhhbmRsZTx2ODo6
U3RyaW5nPiB2OFN0cmluZykKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIHZvaWQgdmlzaXRT
dHJpbmdzKEV4dGVybmFsU3RyaW5nVmlzaXRvciogdmlzaXRvcikgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlU3RyaW5nUmVzb3VyY2UqPih2OFN0cmluZy0+
R2V0RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZSgpKTsKKyAgICAgICAgdmlzaXRvci0+dmlzaXRKU0V4
dGVybmFsU3RyaW5nKG1fcGxhaW5TdHJpbmcuaW1wbCgpKTsKKyAgICAgICAgaWYgKG1fcGxhaW5T
dHJpbmcuaW1wbCgpICE9IG1fYXRvbWljU3RyaW5nLmltcGwoKSAmJiAhbV9hdG9taWNTdHJpbmcu
aXNOdWxsKCkpCisgICAgICAgICAgICB2aXNpdG9yLT52aXNpdEpTRXh0ZXJuYWxTdHJpbmcobV9h
dG9taWNTdHJpbmcuaW1wbCgpKTsKICAgICB9CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICAvLyBB
IHNoYWxsb3cgY29weSBvZiB0aGUgc3RyaW5nLiBLZWVwcyB0aGUgc3RyaW5nIGJ1ZmZlciBhbGl2
ZSB1bnRpbCB0aGUgVjggZW5naW5lIGdhcmJhZ2UgY29sbGVjdHMgaXQuCkBAIC0xODgsNiArMjA4
LDc0IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKKy8vIHRoZXJlIGFyZSB0d28gdHlwZXMgb2Yg
djggc3RyaW5ncy4gdHlwZWRlZiB0aGVtIGZvciBjb252ZW5pZW5jZQordHlwZWRlZiBXZWJDb3Jl
U3RyaW5nUmVzb3VyY2U8djg6OlN0cmluZzo6RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZSwgY29uc3Qg
dWludDE2X3QqLCBVQ2hhcj4gV2ViQ29yZVN0cmluZ1Jlc291cmNlMTZCaXQ7Cit0eXBlZGVmIFdl
YkNvcmVTdHJpbmdSZXNvdXJjZTx2ODo6U3RyaW5nOjpFeHRlcm5hbEFzY2lpU3RyaW5nUmVzb3Vy
Y2UsIGNvbnN0IGNoYXIqLCBMQ2hhcj4gV2ViQ29yZVN0cmluZ1Jlc291cmNlN0JpdDsKKwordGVt
cGxhdGU8PgoraW5saW5lIGNvbnN0IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTdCaXQqIFdlYkNvcmVT
dHJpbmdSZXNvdXJjZTx2ODo6U3RyaW5nOjpFeHRlcm5hbEFzY2lpU3RyaW5nUmVzb3VyY2UsIGNv
bnN0IGNoYXIqLAorICAgICAgICBMQ2hhcj46OmdldFJlc291cmNlKHY4OjpIYW5kbGU8djg6OlN0
cmluZz4mIHY4U3RyaW5nKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3Jl
U3RyaW5nUmVzb3VyY2U3Qml0Kj4odjhTdHJpbmctPkdldEV4dGVybmFsQXNjaWlTdHJpbmdSZXNv
dXJjZSgpKTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGNvbnN0IFdlYkNvcmVTdHJpbmdSZXNv
dXJjZTE2Qml0KiBXZWJDb3JlU3RyaW5nUmVzb3VyY2U8djg6OlN0cmluZzo6RXh0ZXJuYWxTdHJp
bmdSZXNvdXJjZSwgY29uc3QgdWludDE2X3QqLAorICAgICAgICBVQ2hhcj46OmdldFJlc291cmNl
KHY4OjpIYW5kbGU8djg6OlN0cmluZz4mIHY4U3RyaW5nKQoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNkJpdCo+KHY4U3RyaW5nLT5HZXRFeHRl
cm5hbFN0cmluZ1Jlc291cmNlKCkpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZCBXZWJD
b3JlU3RyaW5nUmVzb3VyY2U8djg6OlN0cmluZzo6RXh0ZXJuYWxBc2NpaVN0cmluZ1Jlc291cmNl
LCBjb25zdCBjaGFyKiwgTENoYXI+Ojp3cml0ZUludG9CdWZmZXIoCisgICAgICAgIHY4OjpIYW5k
bGU8djg6OlN0cmluZz4mIHY4U3RyaW5nLCBpbnQgbGVuZ3RoLCBMQ2hhciogYnVmZmVyKQorewor
ICAgIHY4U3RyaW5nLT5Xcml0ZUFzY2lpKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlciks
IDAsIGxlbmd0aCk7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkIFdlYkNvcmVTdHJpbmdS
ZXNvdXJjZTx2ODo6U3RyaW5nOjpFeHRlcm5hbFN0cmluZ1Jlc291cmNlLCBjb25zdCB1aW50MTZf
dCosIFVDaGFyPjo6d3JpdGVJbnRvQnVmZmVyKAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJp
bmc+JiB2OFN0cmluZywgaW50IGxlbmd0aCwgVUNoYXIqIGJ1ZmZlcikKK3sKKyAgICB2OFN0cmlu
Zy0+V3JpdGUocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGJ1ZmZlciksIDAsIGxlbmd0aCk7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIFN0cmluZ1Jlc291cmNlLCB0eXBlbmFtZSBEYXRhVHlwZSwg
dHlwZW5hbWUgQ2hhclR5cGU+CitTdHJpbmcgV2ViQ29yZVN0cmluZ1Jlc291cmNlPFN0cmluZ1Jl
c291cmNlLCBEYXRhVHlwZSwgQ2hhclR5cGU+OjpzdHJpbmdGcm9tVjhTdHJpbmcodjg6OkhhbmRs
ZTx2ODo6U3RyaW5nPiYgdjhTdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGxlbmd0aCkKK3sKKyAgICBBU1NFUlQodjhTdHJpbmctPkxlbmd0aCgpID09IGxlbmd0aCk7CisK
KyAgICBDaGFyVHlwZSogYnVmZmVyOworICAgIFN0cmluZyByZXN1bHQgPSBTdHJpbmdJbXBsOjpj
cmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKKyAgICB3cml0ZUludG9CdWZmZXIo
djhTdHJpbmcsIGxlbmd0aCwgYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1w
bGF0ZTxjbGFzcyBTdHJpbmdSZXNvdXJjZSwgdHlwZW5hbWUgRGF0YVR5cGUsIHR5cGVuYW1lIENo
YXJUeXBlPgorQXRvbWljU3RyaW5nIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTxTdHJpbmdSZXNvdXJj
ZSwgRGF0YVR5cGUsIENoYXJUeXBlPjo6YXRvbWljU3RyaW5nRnJvbVY4U3RyaW5nKAorICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+JiB2OFN0cmluZywgaW50IGxlbmd0aCkKK3sKKyAgICBy
ZXR1cm4gQXRvbWljU3RyaW5nKHN0cmluZ0Zyb21WOFN0cmluZyh2OFN0cmluZywgbGVuZ3RoKSk7
Cit9CisKKy8vIHNwZWNpYWxpemF0aW9uIGZvciBVQ2hhciB0aGF0IGFsbG93cyB1cyB0byB1c2Ug
YW4gaW5saW5lIGJ1ZmZlcgordGVtcGxhdGU8PgorQXRvbWljU3RyaW5nIFdlYkNvcmVTdHJpbmdS
ZXNvdXJjZTx2ODo6U3RyaW5nOjpFeHRlcm5hbFN0cmluZ1Jlc291cmNlLCBjb25zdCB1aW50MTZf
dCosIFVDaGFyPjo6YXRvbWljU3RyaW5nRnJvbVY4U3RyaW5nKAorICAgICAgICB2ODo6SGFuZGxl
PHY4OjpTdHJpbmc+JiB2OFN0cmluZywgaW50IGxlbmd0aCkKK3sKKyAgICBzdGF0aWMgY29uc3Qg
aW50IGlubGluZUJ1ZmZlclNpemUgPSAxNjsKKyAgICBpZiAobGVuZ3RoIDw9IGlubGluZUJ1ZmZl
clNpemUpIHsKKworICAgICAgICBBU1NFUlQodjhTdHJpbmctPkxlbmd0aCgpID09IGxlbmd0aCk7
CisKKyAgICAgICAgVUNoYXIgYnVmZmVyW2lubGluZUJ1ZmZlclNpemVdOworICAgICAgICBXZWJD
b3JlU3RyaW5nUmVzb3VyY2UxNkJpdDo6d3JpdGVJbnRvQnVmZmVyKHY4U3RyaW5nLCBsZW5ndGgs
IGJ1ZmZlcik7CisgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoYnVmZmVyLCBsZW5ndGgpOwor
ICAgIH0KKyAgICByZXR1cm4gQXRvbWljU3RyaW5nKHN0cmluZ0Zyb21WOFN0cmluZyh2OFN0cmlu
ZywgbGVuZ3RoKSk7Cit9CisKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogdm9pZCBWOEJpbmRpbmdQ
ZXJJc29sYXRlRGF0YTo6dmlzaXRFeHRlcm5hbFN0cmluZ3MoRXh0ZXJuYWxTdHJpbmdWaXNpdG9y
KiB2aXNpdG9yKQogewpAQCAtMTk4LDkgKzI4NiwxNyBAQCB2b2lkIFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhOjp2aXNpdEV4dGVybmFsU3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqIHZpc2l0
bwogICAgICAgICB2aXJ0dWFsIH5WaXNpdG9ySW1wbCgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZv
aWQgVmlzaXRFeHRlcm5hbFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHN0cmluZykKICAg
ICAgICAgewotICAgICAgICAgICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlKiByZXNvdXJjZSA9IHN0
YXRpY19jYXN0PFdlYkNvcmVTdHJpbmdSZXNvdXJjZSo+KHN0cmluZy0+R2V0RXh0ZXJuYWxTdHJp
bmdSZXNvdXJjZSgpKTsKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZSkKLSAgICAgICAgICAgICAg
ICByZXNvdXJjZS0+dmlzaXRTdHJpbmdzKG1fdmlzaXRvcik7CisgICAgICAgICAgICBjb25zdCBX
ZWJDb3JlU3RyaW5nUmVzb3VyY2UxNkJpdCogcmVzb3VyY2UxNkJpdCA9IFdlYkNvcmVTdHJpbmdS
ZXNvdXJjZTE2Qml0OjpnZXRSZXNvdXJjZShzdHJpbmcpOworICAgICAgICAgICAgaWYgKHJlc291
cmNlMTZCaXQpIHsKKyAgICAgICAgICAgICAgICByZXNvdXJjZTE2Qml0LT52aXNpdFN0cmluZ3Mo
bV92aXNpdG9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGNvbnN0IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTdCaXQqIHJlc291cmNlN0JpdCA9
IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTdCaXQ6OmdldFJlc291cmNlKHN0cmluZyk7CisgICAgICAg
ICAgICBpZiAocmVzb3VyY2U3Qml0KSB7CisgICAgICAgICAgICAgICAgcmVzb3VyY2UxNkJpdC0+
dmlzaXRTdHJpbmdzKG1fdmlzaXRvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgRXh0ZXJuYWxTdHJpbmdW
aXNpdG9yKiBtX3Zpc2l0b3I7CkBAIC0zMDQsNzkgKzQwMCwxMDAgQEAgdWludDMyX3QgdG9VSW50
MzIodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBvaykKICAgICByZXR1cm4gdWlu
dFZhbHVlLT5WYWx1ZSgpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgUz4gc3RydWN0IFN0cmluZ1Ry
YWl0cwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZSwgdHlwZW5hbWUgV2ViQ29yZVN0cmlu
Z1Jlc291cmNlPgorc3RydWN0IFN0cmluZ1RyYWl0cwogewotICAgIHN0YXRpYyBTIGZyb21TdHJp
bmdSZXNvdXJjZShXZWJDb3JlU3RyaW5nUmVzb3VyY2UqIHJlc291cmNlKTsKKyAgICBzdGF0aWMg
U3RyaW5nVHlwZSBmcm9tU3RyaW5nUmVzb3VyY2UoV2ViQ29yZVN0cmluZ1Jlc291cmNlKiByZXNv
dXJjZSk7CiAKLSAgICBzdGF0aWMgUyBmcm9tVjhTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5n
PiB2OFN0cmluZywgaW50IGxlbmd0aCk7CisgICAgc3RhdGljIFN0cmluZ1R5cGUgZnJvbVY4U3Ry
aW5nKHY4OjpIYW5kbGU8djg6OlN0cmluZz4mIHY4U3RyaW5nLCBpbnQgbGVuZ3RoKTsKIH07CiAK
LXRlbXBsYXRlPD4KLXN0cnVjdCBTdHJpbmdUcmFpdHM8U3RyaW5nPgordGVtcGxhdGU8dHlwZW5h
bWUgV2ViQ29yZVN0cmluZ1Jlc291cmNlPgorc3RydWN0IFN0cmluZ1RyYWl0czxTdHJpbmcsIFdl
YkNvcmVTdHJpbmdSZXNvdXJjZT4KIHsKICAgICBzdGF0aWMgU3RyaW5nIGZyb21TdHJpbmdSZXNv
dXJjZShXZWJDb3JlU3RyaW5nUmVzb3VyY2UqIHJlc291cmNlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHJlc291cmNlLT53ZWJjb3JlU3RyaW5nKCk7CiAgICAgfQogCi0gICAgc3RhdGljIFN0cmlu
ZyBmcm9tVjhTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgaW50IGxlbmd0
aCkKKyAgICBzdGF0aWMgU3RyaW5nIGZyb21WOFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+
JiB2OFN0cmluZywgaW50IGxlbmd0aCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh2OFN0cmluZy0+
TGVuZ3RoKCkgPT0gbGVuZ3RoKTsKLSAgICAgICAgLy8gTk9URTogYXMgb2Ygbm93LCBTdHJpbmco
Y29uc3QgVUNoYXIqLCBpbnQpIHBlcmZvcm1zIFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZAot
ICAgICAgICAvLyBhbnl3YXksIHNvIG5vIG5lZWQgdG8gb3B0aW1pemUgbGlrZSB3ZSBkbyBmb3Ig
QXRvbWljU3RyaW5nIGJlbG93LgotICAgICAgICBVQ2hhciogYnVmZmVyOwotICAgICAgICBTdHJp
bmcgcmVzdWx0ID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsK
LSAgICAgICAgdjhTdHJpbmctPldyaXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihidWZm
ZXIpLCAwLCBsZW5ndGgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4g
V2ViQ29yZVN0cmluZ1Jlc291cmNlOjpzdHJpbmdGcm9tVjhTdHJpbmcodjhTdHJpbmcsIGxlbmd0
aCk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8Pgotc3RydWN0IFN0cmluZ1RyYWl0czxBdG9taWNT
dHJpbmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBXZWJDb3JlU3RyaW5nUmVzb3VyY2U+CitzdHJ1Y3Qg
U3RyaW5nVHJhaXRzPEF0b21pY1N0cmluZywgV2ViQ29yZVN0cmluZ1Jlc291cmNlPgogewogICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVN0cmluZ1Jlc291cmNlKFdlYkNvcmVTdHJpbmdSZXNv
dXJjZSogcmVzb3VyY2UpCiAgICAgewogICAgICAgICByZXR1cm4gcmVzb3VyY2UtPmF0b21pY1N0
cmluZygpOwogICAgIH0KIAotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVY4U3RyaW5nKHY4
OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcsIGludCBsZW5ndGgpCisgICAgc3RhdGljIEF0
b21pY1N0cmluZyBmcm9tVjhTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiYgdjhTdHJpbmcs
IGludCBsZW5ndGgpCiAgICAgewotICAgICAgICBBU1NFUlQodjhTdHJpbmctPkxlbmd0aCgpID09
IGxlbmd0aCk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgaW5saW5lQnVmZmVyU2l6ZSA9IDE2
OwotICAgICAgICBpZiAobGVuZ3RoIDw9IGlubGluZUJ1ZmZlclNpemUpIHsKLSAgICAgICAgICAg
IFVDaGFyIGlubGluZUJ1ZmZlcltpbmxpbmVCdWZmZXJTaXplXTsKLSAgICAgICAgICAgIHY4U3Ry
aW5nLT5Xcml0ZShyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5saW5lQnVmZmVyKSwgMCwg
bGVuZ3RoKTsKLSAgICAgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoaW5saW5lQnVmZmVyLCBs
ZW5ndGgpOwotICAgICAgICB9Ci0gICAgICAgIFVDaGFyKiBidWZmZXI7Ci0gICAgICAgIFN0cmlu
ZyB0bXAgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAg
ICAgICB2OFN0cmluZy0+V3JpdGUocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGJ1ZmZlciks
IDAsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcodG1wKTsKKyAgICAgICAg
cmV0dXJuIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTo6YXRvbWljU3RyaW5nRnJvbVY4U3RyaW5nKHY4
U3RyaW5nLCBsZW5ndGgpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmdU
eXBlPgorLy8gdGhlcmUgaXMgYSBjb3JuZXIgY2FzZSBpbiBTdHJpbmdUb1dlYkNvcmVTdHJpbmcg
d2hlcmUgYW4gOGJpdCBzdHJpbmcgY2FuIGJlCisvLyB0cmFuc2Zvcm1lZCBpbnRvIGEgMTYgYml0
IHN0cmluZyB3aGVuIHBhc3NlZCB0byB0aGUgYXRvbWljIGNvbnN0cnVjdG9yCisvLyBhdG9taWND
b3B5RmFpbGVkIGhhbmRsZXMgdGhpcwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZSwgdHlw
ZW5hbWUgV2ViQ29yZVN0cmluZ1Jlc291cmNlPgorc3RhdGljIGlubGluZSBib29sIGF0b21pY0Nv
cHlGYWlsZWQoU3RyaW5nVHlwZSYgc3RyaW5nKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ly8gdGhpcyBpcyB0aGUgb25seSBjYXNlIHdoZXJlIHRoZSBhdG9taWMgY29uc3RydWN0b3IgY2F1
c2VzIGlzc3VlcwordGVtcGxhdGU8PgoraW5saW5lIGJvb2wgYXRvbWljQ29weUZhaWxlZDxBdG9t
aWNTdHJpbmcsIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTdCaXQ+KEF0b21pY1N0cmluZyYgc3RyaW5n
KQoreworICAgIHJldHVybiAhc3RyaW5nLnN0cmluZygpLmlzOEJpdCgpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPgogU3RyaW5nVHlwZSB2OFN0cmluZ1RvV2ViQ29yZVN0cmlu
Zyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nLCBFeHRlcm5hbE1vZGUgZXh0ZXJuYWwp
CiB7Ci0gICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlKiBzdHJpbmdSZXNvdXJjZSA9IFdlYkNvcmVT
dHJpbmdSZXNvdXJjZTo6dG9TdHJpbmdSZXNvdXJjZSh2OFN0cmluZyk7Ci0gICAgaWYgKHN0cmlu
Z1Jlc291cmNlKQotICAgICAgICByZXR1cm4gU3RyaW5nVHJhaXRzPFN0cmluZ1R5cGU+Ojpmcm9t
U3RyaW5nUmVzb3VyY2Uoc3RyaW5nUmVzb3VyY2UpOworICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMg
YWxyZWFkeSBleHRlcm5hbCwgcmV0dXJuIGl0CisgICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlMTZC
aXQqIHJlc291cmNlMTZCaXQgPQorICAgICAgICAgICAgY29uc3RfY2FzdDxXZWJDb3JlU3RyaW5n
UmVzb3VyY2UxNkJpdCo+KFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2Qml0OjpnZXRSZXNvdXJjZSh2
OFN0cmluZykpOworICAgIGlmIChyZXNvdXJjZTE2Qml0KQorICAgICAgICByZXR1cm4gU3RyaW5n
VHJhaXRzPFN0cmluZ1R5cGUsIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2Qml0Pjo6ZnJvbVN0cmlu
Z1Jlc291cmNlKHJlc291cmNlMTZCaXQpOwogCisgICAgLy8gaWYgdGhlIHN0cmluZyBpcyBhbHJl
YWR5IGV4dGVybmFsIGFzY2lpLCByZXR1cm4gaXQKKyAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2U3
Qml0KiByZXNvdXJjZTdCaXQgPQorICAgICAgICAgICAgY29uc3RfY2FzdDxXZWJDb3JlU3RyaW5n
UmVzb3VyY2U3Qml0Kj4oV2ViQ29yZVN0cmluZ1Jlc291cmNlN0JpdDo6Z2V0UmVzb3VyY2UodjhT
dHJpbmcpKTsKKyAgICBpZiAocmVzb3VyY2U3Qml0KQorICAgICAgICByZXR1cm4gU3RyaW5nVHJh
aXRzPFN0cmluZ1R5cGUsIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTdCaXQ+Ojpmcm9tU3RyaW5nUmVz
b3VyY2UocmVzb3VyY2U3Qml0KTsKKworICAgIC8vIEF2b2lkIHRyeWluZyB0byBtb3JwaCBlbXB0
eSBzdHJpbmdzLCBhcyB0aGV5IGRvIG5vdCBoYXZlIGVub3VnaCByb29tIHRvIGNvbnRhaW4gdGhl
IGV4dGVybmFsIHJlZmVyZW5jZS4KICAgICBpbnQgbGVuZ3RoID0gdjhTdHJpbmctPkxlbmd0aCgp
OwogICAgIGlmICghbGVuZ3RoKSB7CiAgICAgICAgIC8vIEF2b2lkIHRyeWluZyB0byBtb3JwaCBl
bXB0eSBzdHJpbmdzLCBhcyB0aGV5IGRvIG5vdCBoYXZlIGVub3VnaCByb29tIHRvIGNvbnRhaW4g
dGhlIGV4dGVybmFsIHJlZmVyZW5jZS4KICAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmVtcHR5
KCk7CiAgICAgfQogCi0gICAgU3RyaW5nVHlwZSByZXN1bHQoU3RyaW5nVHJhaXRzPFN0cmluZ1R5
cGU+Ojpmcm9tVjhTdHJpbmcodjhTdHJpbmcsIGxlbmd0aCkpOworICAgIC8vIGNoZWNrIGZvciBw
b3RlbnRpYWwgN2JpdCBzdHJpbmdzIGFuZCBvcHRpbWl6ZSBmb3IgdGhvc2UKKyAgICBib29sIHRy
eTdCaXQgPSAhdjhTdHJpbmctPk1heUNvbnRhaW5Ob25Bc2NpaSgpOwogCi0gICAgaWYgKGV4dGVy
bmFsID09IEV4dGVybmFsaXplICYmIHY4U3RyaW5nLT5DYW5NYWtlRXh0ZXJuYWwoKSkgewotICAg
ICAgICBzdHJpbmdSZXNvdXJjZSA9IG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UocmVzdWx0KTsK
LSAgICAgICAgaWYgKCF2OFN0cmluZy0+TWFrZUV4dGVybmFsKHN0cmluZ1Jlc291cmNlKSkgewot
ICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBhIGZhaWx1cmUgZGVsZXRlIHRoZSBleHRlcm5hbCBy
ZXNvdXJjZSBhcyBpdCB3YXMgbm90IHVzZWQuCi0gICAgICAgICAgICBkZWxldGUgc3RyaW5nUmVz
b3VyY2U7Ci0gICAgICAgIH0KKyAgICBTdHJpbmdUeXBlIHJlc3VsdCgKKyAgICAgICAgICAgIHRy
eTdCaXQgPworICAgICAgICAgICAgICAgICAgICBTdHJpbmdUcmFpdHM8U3RyaW5nVHlwZSwgV2Vi
Q29yZVN0cmluZ1Jlc291cmNlN0JpdD46OmZyb21WOFN0cmluZyh2OFN0cmluZywgbGVuZ3RoKSA6
CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ1RyYWl0czxTdHJpbmdUeXBlLCBXZWJDb3JlU3Ry
aW5nUmVzb3VyY2UxNkJpdD46OmZyb21WOFN0cmluZyh2OFN0cmluZywgbGVuZ3RoKSk7CisKKyAg
ICAvLyBiYWlsIG91dCBlYXJseSBpZiB3ZSBkb24ndCB3YW50IHRvIG9yIGNhbid0IGV4dGVybmFs
aXplCisgICAgaWYgKGV4dGVybmFsICE9IEV4dGVybmFsaXplIHx8ICF2OFN0cmluZy0+Q2FuTWFr
ZUV4dGVybmFsKCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAvLyBjaGVjayBmb3Ig
YXRvbWljIGNvcHkgZmFpbHVyZQorICAgIGlmICh0cnk3Qml0ICYmICFhdG9taWNDb3B5RmFpbGVk
PFN0cmluZ1R5cGUsIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTdCaXQ+KHJlc3VsdCkpIHsKKyAgICAg
ICAgLy8gc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYSA3Yml0IHN0cmluZworICAgICAgICBXZWJDb3Jl
U3RyaW5nUmVzb3VyY2U3Qml0OjpleHRlcm5hbGl6ZVN0cmluZzxTdHJpbmdUeXBlPihyZXN1bHQs
IHY4U3RyaW5nKTsKKyAgICB9IGVsc2UgeworICAgICAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2Ux
NkJpdDo6ZXh0ZXJuYWxpemVTdHJpbmc8U3RyaW5nVHlwZT4ocmVzdWx0LCB2OFN0cmluZyk7CiAg
ICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICAgICAKQEAgLTQ0NSw2ICs1NjIsNyBAQCBB
dG9taWNTdHJpbmcgdjhOb25TdHJpbmdWYWx1ZVRvQXRvbWljV2ViQ29yZVN0cmluZyh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gb2JqZWN0KQogICAgIHJldHVybiBBdG9taWNTdHJpbmcodjhOb25TdHJp
bmdWYWx1ZVRvV2ViQ29yZVN0cmluZyhvYmplY3QpKTsKIH0KIAordGVtcGxhdGU8Y2xhc3MgV2Vi
Q29yZVN0cmluZ1Jlc291cmNlPgogc3RhdGljIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBtYWtlRXh0
ZXJuYWxTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgV2ViQ29yZVN0cmluZ1Jl
c291cmNlKiBzdHJpbmdSZXNvdXJjZSA9IG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2Uoc3RyaW5n
KTsKQEAgLTQ1NSw2ICs1NzMsMTcgQEAgc3RhdGljIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBtYWtl
RXh0ZXJuYWxTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIG5ld1N0cmlu
ZzsKIH0KIAorc3RhdGljIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBtYWtlRXh0ZXJuYWxTdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgLy8gTkI6IGNvbnRhaW5zT25seUFTQ0lJIGFz
c3VtZXMgdGhhdCB0aGUgc3RyaW5nIGlzIGFzY2lpLCB3aGljaCBpcyB0aGUgY29tbW9uIGNhc2UK
KyAgICAvLyBidXQgbGVhZHMgdG8gcG9vciBwZXJmb3JtYW5jZSBvbiBub24tYXNjaWkgOC1iaXQg
c3RyaW5ncworICAgIGJvb2wgaXNBc2NpaSA9IHN0cmluZy5pczhCaXQoKSAmJiBzdHJpbmcuY29u
dGFpbnNPbmx5QVNDSUkoKTsKKworICAgIHJldHVybiBpc0FzY2lpID8KKyAgICAgICAgICAgIG1h
a2VFeHRlcm5hbFN0cmluZzxXZWJDb3JlU3RyaW5nUmVzb3VyY2U3Qml0PihzdHJpbmcpIDoKKyAg
ICAgICAgICAgIG1ha2VFeHRlcm5hbFN0cmluZzxXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNkJpdD4o
c3RyaW5nKTsKK30KKwogc3RhdGljIHZvaWQgY2FjaGVkU3RyaW5nQ2FsbGJhY2sodjg6OlBlcnNp
c3RlbnQ8djg6OlZhbHVlPiB3cmFwcGVyLCB2b2lkKiBwYXJhbWV0ZXIpCiB7CiAgICAgU3RyaW5n
SW1wbCogc3RyaW5nSW1wbCA9IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPihwYXJhbWV0ZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153485</attachid>
            <date>2012-07-20 05:59:14 -0700</date>
            <delta_ts>2012-07-24 08:24:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91850-20120720145909.patch</filename>
            <type>text/plain</type>
            <size>17617</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ4ZTZhYzQ1ZWZiMzMw
Njk3ODgxZTc2YTFjOWJkOTczOTNiYjg4Zi4uMzkyNTE2MWE2YjBiMTYzZWRkM2NlNTk3NjYwYzdl
M2Q1NmEzNTliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA3LTIwICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIGFkZCA3IGJpdCBzdHJpbmdz
IGNhcGFiaWxpdGllcyB0byB0aGUgdjggYmluZGluZyBsYXllcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBlbmFibGVzIHRoZSB2OCBi
aW5kaW5nIGxheWVyIHRvIG1ha2UgdXNlIG9mIHdlYmtpdCdzCisgICAgICAgIDggYml0IHN0cmlu
ZyBjYXBhYmlsaXRpZXMuICBFeGlzdGluZyBmdW5jdGlvbmFsaXR5IGZvciAxNiBiaXQgc3RyaW5n
cworICAgICAgICBpcyBzaW1wbHkgdGVtcGxhdGl6ZWQgYW5kIG1hcHBlZCBvbnRvIHY4J3MgNyBh
c2NpaSBzdHJpbmcgYXBpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gIFJlZmFjdG9yIC0gbm8g
bmV3IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3RyaW5nUmVz
b3VyY2U6OldlYkNvcmVTdHJpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3Jl
U3RyaW5nUmVzb3VyY2U6On5XZWJDb3JlU3RyaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNlOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
cmVTdHJpbmdSZXNvdXJjZTo6YXRvbWljU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmVTdHJpbmdS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3RyaW5nUmVzb3VyY2U6OmV4dGVy
bmFsaXplU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZTo6
dmlzaXRTdHJpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6Z2V0UmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Ojp3cml0ZUludG9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6OjpzdHJp
bmdGcm9tVjhTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6OjphdG9taWNTdHJpbmdGcm9tVjhT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnZpc2l0
RXh0ZXJuYWxTdHJpbmdzKToKKyAgICAgICAgKFN0cmluZ1RyYWl0cyk6CisgICAgICAgIChXZWJD
b3JlOjphdG9taWNDb3B5RmFpbGVkKTpSZXR1cm5zIHRydWUgZm9yIHRoZSBlZGdlIGNhc2Ugd2hl
cmUgYW4gOCBiaXQgc3RyaW5nIGlzIGNvbnZlcnRlZCB0byBhIDE2IGJpdCBzdHJpbmcgb24gaW5z
ZXJ0IGludG8gdGhlIGF0b21pYyBzdHJpbmcgdGFibGUuCisgICAgICAgIChXZWJDb3JlOjpXZWJD
b3JlU3RyaW5nUmVzb3VyY2U3Qml0KToKKyAgICAgICAgKFdlYkNvcmU6OnY4U3RyaW5nVG9XZWJD
b3JlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VFeHRlcm5hbFN0cmluZyk6CisKIDIw
MTItMDctMjAgIE1hdHQgRmFsa2VuaGFnZW4gIDxmYWxrZW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFNob3cgb3IgaGlkZSA8ZGlhbG9nPiBkZXBlbmRpbmcgb24gdGhlIG9wZW4gYXR0cmlidXRl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCBkMjgyYjBkYmVm
Nzg2OTkzNDI1YjlkNzZiMDc3YTMzZDAzNmFjZjEzLi5jMjMwNzkyZWQwZjMyY2FkNjczNjkwMDU5
YWE1ODQ2MzQ4ODg2ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHAKQEAgLTEwNCw3ICsxMDQsOCBAQCB2b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpyZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbgogCiAvLyBXZWJD
b3JlU3RyaW5nUmVzb3VyY2UgaXMgYSBoZWxwZXIgY2xhc3MgZm9yIHY4RXh0ZXJuYWxTdHJpbmcu
IEl0IGlzIHVzZWQKIC8vIHRvIG1hbmFnZSB0aGUgbGlmZS1jeWNsZSBvZiB0aGUgdW5kZXJseWlu
ZyBidWZmZXIgb2YgdGhlIGV4dGVybmFsIHN0cmluZy4KLWNsYXNzIFdlYkNvcmVTdHJpbmdSZXNv
dXJjZSA6IHB1YmxpYyB2ODo6U3RyaW5nOjpFeHRlcm5hbFN0cmluZ1Jlc291cmNlIHsKK3RlbXBs
YXRlPGNsYXNzIFN0cmluZ1Jlc291cmNlLCB0eXBlbmFtZSBEYXRhVHlwZSwgdHlwZW5hbWUgQ2hh
clR5cGU+CitjbGFzcyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UgOiBwdWJsaWMgU3RyaW5nUmVzb3Vy
Y2UgewogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkNvcmVTdHJpbmdSZXNvdXJjZShjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3BsYWluU3RyaW5nKHN0cmluZykKQEAgLTExMyw3
ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGhyZWFkSWQgPSBXVEY6OmN1cnJlbnRUaHJl
YWQoKTsKICNlbmRpZgogICAgICAgICBBU1NFUlQoIXN0cmluZy5pc051bGwoKSk7Ci0gICAgICAg
IHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSgyICogc3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2Nh
dGVkTWVtb3J5KHNpemVvZihDaGFyVHlwZSkgKiBzdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAog
ICAgIGV4cGxpY2l0IFdlYkNvcmVTdHJpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIHN0
cmluZykKQEAgLTEyNCw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGhyZWFkSWQgPSBX
VEY6OmN1cnJlbnRUaHJlYWQoKTsKICNlbmRpZgogICAgICAgICBBU1NFUlQoIXN0cmluZy5pc051
bGwoKSk7Ci0gICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1l
bW9yeSgyICogc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRP
ZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KHNpemVvZihDaGFyVHlwZSkgKiBzdHJpbmcubGVuZ3Ro
KCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfldlYkNvcmVTdHJpbmdSZXNvdXJjZSgpCkBAIC0x
MzIsMTUgKzEzMywxNiBAQCBwdWJsaWM6CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBBU1NFUlQo
bV90aHJlYWRJZCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CiAjZW5kaWYKLSAgICAgICAgaW50
IHJlZHVjZWRFeHRlcm5hbE1lbW9yeSA9IC0yICogbV9wbGFpblN0cmluZy5sZW5ndGgoKTsKKyAg
ICAgICAgaW50IGxlbmd0aCA9IG1fcGxhaW5TdHJpbmcubGVuZ3RoKCk7CisgICAgICAgIGludCBy
ZWR1Y2VkRXh0ZXJuYWxNZW1vcnkgPSAtc2l6ZW9mKENoYXJUeXBlKSAqIGxlbmd0aDsKICAgICAg
ICAgaWYgKG1fcGxhaW5TdHJpbmcuaW1wbCgpICE9IG1fYXRvbWljU3RyaW5nLmltcGwoKSAmJiAh
bV9hdG9taWNTdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgICAgICByZWR1Y2VkRXh0ZXJuYWxNZW1v
cnkgKj0gMjsKKyAgICAgICAgICAgIHJlZHVjZWRFeHRlcm5hbE1lbW9yeSAtPSBsZW5ndGggKiAo
bV9hdG9taWNTdHJpbmcuaW1wbCgpLT5pczhCaXQoKSA/IHNpemVvZihMQ2hhcikgOiBzaXplb2Yo
VUNoYXIpKTsKICAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVk
TWVtb3J5KHJlZHVjZWRFeHRlcm5hbE1lbW9yeSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBjb25z
dCB1aW50MTZfdCogZGF0YSgpIGNvbnN0CisgICAgdmlydHVhbCBEYXRhVHlwZSBkYXRhKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90
Kj4obV9wbGFpblN0cmluZy5pbXBsKCktPmNoYXJhY3RlcnMoKSk7CisgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PERhdGFUeXBlPihtX3BsYWluU3RyaW5nLmltcGwoKS0+Z2V0Q2hhcmFj
dGVyczxDaGFyVHlwZT4oKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBzaXplX3QgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9wbGFpblN0cmluZy5pbXBsKCktPmxlbmd0aCgpOyB9CkBAIC0xNTYs
MjIgKzE1OCw0MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2F0b21pY1N0cmluZyA9IEF0b21p
Y1N0cmluZyhtX3BsYWluU3RyaW5nKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9hdG9taWNTdHJp
bmcuaXNOdWxsKCkpOwogICAgICAgICAgICAgaWYgKG1fcGxhaW5TdHJpbmcuaW1wbCgpICE9IG1f
YXRvbWljU3RyaW5nLmltcGwoKSkKLSAgICAgICAgICAgICAgICB2ODo6Vjg6OkFkanVzdEFtb3Vu
dE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkoMiAqIG1fYXRvbWljU3RyaW5nLmxlbmd0aCgpKTsK
KyAgICAgICAgICAgICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRN
ZW1vcnkoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2F0b21pY1N0cmluZy5sZW5ndGgoKSAq
IChtX2F0b21pY1N0cmluZy5pbXBsKCktPmlzOEJpdCgpID8gc2l6ZW9mKExDaGFyKSA6IHNpemVv
ZihVQ2hhcikpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9hdG9taWNTdHJpbmc7CiAg
ICAgfQogCi0gICAgdm9pZCB2aXNpdFN0cmluZ3MoRXh0ZXJuYWxTdHJpbmdWaXNpdG9yKiB2aXNp
dG9yKQorICAgIC8vIHJldHVybnMgbnVsbCBpZiByZXNvdXJjZSBkb2Vzbid0IGV4aXN0IG9yIGlz
IG9mIHRoZSB3cm9uZyB0eXBlCisgICAgc3RhdGljIGNvbnN0IFdlYkNvcmVTdHJpbmdSZXNvdXJj
ZSAqIGdldFJlc291cmNlKHY4OjpIYW5kbGU8djg6OlN0cmluZz4mIHY4U3RyaW5nKTsKKworICAg
IHN0YXRpYyB2b2lkIHdyaXRlSW50b0J1ZmZlcih2ODo6SGFuZGxlPHY4OjpTdHJpbmc+JiB2OFN0
cmluZywgaW50IGxlbmd0aCwgQ2hhclR5cGUqIGJ1ZmZlcik7CisKKyAgICBzdGF0aWMgU3RyaW5n
IHN0cmluZ0Zyb21WOFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+JiB2OFN0cmluZywgaW50
IGxlbmd0aCk7CisKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGF0b21pY1N0cmluZ0Zyb21WOFN0
cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+JiB2OFN0cmluZywgaW50IGxlbmd0aCk7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPgorICAgIHN0YXRpYyB2b2lkIGV4dGVybmFs
aXplU3RyaW5nKFN0cmluZ1R5cGUmIHN0cmluZywgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiYgdjhT
dHJpbmcpCiAgICAgewotICAgICAgICB2aXNpdG9yLT52aXNpdEpTRXh0ZXJuYWxTdHJpbmcobV9w
bGFpblN0cmluZy5pbXBsKCkpOwotICAgICAgICBpZiAobV9wbGFpblN0cmluZy5pbXBsKCkgIT0g
bV9hdG9taWNTdHJpbmcuaW1wbCgpICYmICFtX2F0b21pY1N0cmluZy5pc051bGwoKSkKLSAgICAg
ICAgICAgIHZpc2l0b3ItPnZpc2l0SlNFeHRlcm5hbFN0cmluZyhtX2F0b21pY1N0cmluZy5pbXBs
KCkpOworICAgICAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2UqIHN0cmluZ1Jlc291cmNlID0gbmV3
IFdlYkNvcmVTdHJpbmdSZXNvdXJjZShzdHJpbmcpOworCisgICAgICAgIGlmICghdjhTdHJpbmct
Pk1ha2VFeHRlcm5hbChzdHJpbmdSZXNvdXJjZSkpIHsKKyAgICAgICAgICAgIC8vIEluIGNhc2Ug
b2YgYSBmYWlsdXJlIGRlbGV0ZSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2UgYXMgaXQgd2FzIG5vdCB1
c2VkLgorICAgICAgICAgICAgZGVsZXRlIHN0cmluZ1Jlc291cmNlOworICAgICAgICB9CiAgICAg
fQogCi0gICAgc3RhdGljIFdlYkNvcmVTdHJpbmdSZXNvdXJjZSogdG9TdHJpbmdSZXNvdXJjZSh2
ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nKQorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisg
ICAgdm9pZCB2aXNpdFN0cmluZ3MoRXh0ZXJuYWxTdHJpbmdWaXNpdG9yKiB2aXNpdG9yKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmVTdHJpbmdSZXNvdXJj
ZSo+KHY4U3RyaW5nLT5HZXRFeHRlcm5hbFN0cmluZ1Jlc291cmNlKCkpOworICAgICAgICB2aXNp
dG9yLT52aXNpdEpTRXh0ZXJuYWxTdHJpbmcobV9wbGFpblN0cmluZy5pbXBsKCkpOworICAgICAg
ICBpZiAobV9wbGFpblN0cmluZy5pbXBsKCkgIT0gbV9hdG9taWNTdHJpbmcuaW1wbCgpICYmICFt
X2F0b21pY1N0cmluZy5pc051bGwoKSkKKyAgICAgICAgICAgIHZpc2l0b3ItPnZpc2l0SlNFeHRl
cm5hbFN0cmluZyhtX2F0b21pY1N0cmluZy5pbXBsKCkpOwogICAgIH0KKyNlbmRpZgogCiBwcml2
YXRlOgogICAgIC8vIEEgc2hhbGxvdyBjb3B5IG9mIHRoZSBzdHJpbmcuIEtlZXBzIHRoZSBzdHJp
bmcgYnVmZmVyIGFsaXZlIHVudGlsIHRoZSBWOCBlbmdpbmUgZ2FyYmFnZSBjb2xsZWN0cyBpdC4K
QEAgLTE4OCw2ICsyMDgsNzQgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorLy8gdGhlcmUgYXJl
IHR3byB0eXBlcyBvZiB2OCBzdHJpbmdzLiB0eXBlZGVmIHRoZW0gZm9yIGNvbnZlbmllbmNlCit0
eXBlZGVmIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTx2ODo6U3RyaW5nOjpFeHRlcm5hbFN0cmluZ1Jl
c291cmNlLCBjb25zdCB1aW50MTZfdCosIFVDaGFyPiBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNkJp
dDsKK3R5cGVkZWYgV2ViQ29yZVN0cmluZ1Jlc291cmNlPHY4OjpTdHJpbmc6OkV4dGVybmFsQXNj
aWlTdHJpbmdSZXNvdXJjZSwgY29uc3QgY2hhciosIExDaGFyPiBXZWJDb3JlU3RyaW5nUmVzb3Vy
Y2U3Qml0OworCit0ZW1wbGF0ZTw+CitpbmxpbmUgY29uc3QgV2ViQ29yZVN0cmluZ1Jlc291cmNl
N0JpdCogV2ViQ29yZVN0cmluZ1Jlc291cmNlPHY4OjpTdHJpbmc6OkV4dGVybmFsQXNjaWlTdHJp
bmdSZXNvdXJjZSwgY29uc3QgY2hhciosCisgICAgICAgIExDaGFyPjo6Z2V0UmVzb3VyY2Uodjg6
OkhhbmRsZTx2ODo6U3RyaW5nPiYgdjhTdHJpbmcpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTdCaXQqPih2OFN0cmluZy0+R2V0RXh0ZXJuYWxB
c2NpaVN0cmluZ1Jlc291cmNlKCkpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgY29uc3QgV2Vi
Q29yZVN0cmluZ1Jlc291cmNlMTZCaXQqIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTx2ODo6U3RyaW5n
OjpFeHRlcm5hbFN0cmluZ1Jlc291cmNlLCBjb25zdCB1aW50MTZfdCosCisgICAgICAgIFVDaGFy
Pjo6Z2V0UmVzb3VyY2Uodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiYgdjhTdHJpbmcpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2Qml0Kj4odjhT
dHJpbmctPkdldEV4dGVybmFsU3RyaW5nUmVzb3VyY2UoKSk7Cit9CisKK3RlbXBsYXRlPD4KK2lu
bGluZSB2b2lkIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTx2ODo6U3RyaW5nOjpFeHRlcm5hbEFzY2lp
U3RyaW5nUmVzb3VyY2UsIGNvbnN0IGNoYXIqLCBMQ2hhcj46OndyaXRlSW50b0J1ZmZlcigKKyAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiYgdjhTdHJpbmcsIGludCBsZW5ndGgsIExDaGFy
KiBidWZmZXIpCit7CisgICAgdjhTdHJpbmctPldyaXRlQXNjaWkocmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oYnVmZmVyKSwgMCwgbGVuZ3RoKTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIHZvaWQg
V2ViQ29yZVN0cmluZ1Jlc291cmNlPHY4OjpTdHJpbmc6OkV4dGVybmFsU3RyaW5nUmVzb3VyY2Us
IGNvbnN0IHVpbnQxNl90KiwgVUNoYXI+Ojp3cml0ZUludG9CdWZmZXIoCisgICAgICAgIHY4OjpI
YW5kbGU8djg6OlN0cmluZz4mIHY4U3RyaW5nLCBpbnQgbGVuZ3RoLCBVQ2hhciogYnVmZmVyKQor
eworICAgIHY4U3RyaW5nLT5Xcml0ZShyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oYnVmZmVy
KSwgMCwgbGVuZ3RoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgU3RyaW5nUmVzb3VyY2UsIHR5cGVu
YW1lIERhdGFUeXBlLCB0eXBlbmFtZSBDaGFyVHlwZT4KK1N0cmluZyBXZWJDb3JlU3RyaW5nUmVz
b3VyY2U8U3RyaW5nUmVzb3VyY2UsIERhdGFUeXBlLCBDaGFyVHlwZT46OnN0cmluZ0Zyb21WOFN0
cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+JiB2OFN0cmluZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbGVuZ3RoKQoreworICAgIEFTU0VSVCh2OFN0cmluZy0+TGVuZ3RoKCkg
PT0gbGVuZ3RoKTsKKworICAgIENoYXJUeXBlKiBidWZmZXI7CisgICAgU3RyaW5nIHJlc3VsdCA9
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOworICAgIHdy
aXRlSW50b0J1ZmZlcih2OFN0cmluZywgbGVuZ3RoLCBidWZmZXIpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIFN0cmluZ1Jlc291cmNlLCB0eXBlbmFtZSBEYXRhVHlw
ZSwgdHlwZW5hbWUgQ2hhclR5cGU+CitBdG9taWNTdHJpbmcgV2ViQ29yZVN0cmluZ1Jlc291cmNl
PFN0cmluZ1Jlc291cmNlLCBEYXRhVHlwZSwgQ2hhclR5cGU+OjphdG9taWNTdHJpbmdGcm9tVjhT
dHJpbmcoCisgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4mIHY4U3RyaW5nLCBpbnQgbGVu
Z3RoKQoreworICAgIHJldHVybiBBdG9taWNTdHJpbmcoc3RyaW5nRnJvbVY4U3RyaW5nKHY4U3Ry
aW5nLCBsZW5ndGgpKTsKK30KKworLy8gc3BlY2lhbGl6YXRpb24gZm9yIFVDaGFyIHRoYXQgYWxs
b3dzIHVzIHRvIHVzZSBhbiBpbmxpbmUgYnVmZmVyCit0ZW1wbGF0ZTw+CitBdG9taWNTdHJpbmcg
V2ViQ29yZVN0cmluZ1Jlc291cmNlPHY4OjpTdHJpbmc6OkV4dGVybmFsU3RyaW5nUmVzb3VyY2Us
IGNvbnN0IHVpbnQxNl90KiwgVUNoYXI+OjphdG9taWNTdHJpbmdGcm9tVjhTdHJpbmcoCisgICAg
ICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4mIHY4U3RyaW5nLCBpbnQgbGVuZ3RoKQoreworICAg
IHN0YXRpYyBjb25zdCBpbnQgaW5saW5lQnVmZmVyU2l6ZSA9IDE2OworICAgIGlmIChsZW5ndGgg
PD0gaW5saW5lQnVmZmVyU2l6ZSkgeworCisgICAgICAgIEFTU0VSVCh2OFN0cmluZy0+TGVuZ3Ro
KCkgPT0gbGVuZ3RoKTsKKworICAgICAgICBVQ2hhciBidWZmZXJbaW5saW5lQnVmZmVyU2l6ZV07
CisgICAgICAgIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2Qml0Ojp3cml0ZUludG9CdWZmZXIodjhT
dHJpbmcsIGxlbmd0aCwgYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhidWZm
ZXIsIGxlbmd0aCk7CisgICAgfQorICAgIHJldHVybiBBdG9taWNTdHJpbmcoc3RyaW5nRnJvbVY4
U3RyaW5nKHY4U3RyaW5nLCBsZW5ndGgpKTsKK30KKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiB2
b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp2aXNpdEV4dGVybmFsU3RyaW5ncyhFeHRlcm5h
bFN0cmluZ1Zpc2l0b3IqIHZpc2l0b3IpCiB7CkBAIC0xOTgsOSArMjg2LDE3IEBAIHZvaWQgVjhC
aW5kaW5nUGVySXNvbGF0ZURhdGE6OnZpc2l0RXh0ZXJuYWxTdHJpbmdzKEV4dGVybmFsU3RyaW5n
VmlzaXRvciogdmlzaXRvCiAgICAgICAgIHZpcnR1YWwgflZpc2l0b3JJbXBsKCkgeyB9CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBWaXNpdEV4dGVybmFsU3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0cmlu
Zz4gc3RyaW5nKQogICAgICAgICB7Ci0gICAgICAgICAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2Uq
IHJlc291cmNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlKj4oc3RyaW5nLT5H
ZXRFeHRlcm5hbFN0cmluZ1Jlc291cmNlKCkpOwotICAgICAgICAgICAgaWYgKHJlc291cmNlKQot
ICAgICAgICAgICAgICAgIHJlc291cmNlLT52aXNpdFN0cmluZ3MobV92aXNpdG9yKTsKKyAgICAg
ICAgICAgIGNvbnN0IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2Qml0KiByZXNvdXJjZTE2Qml0ID0g
V2ViQ29yZVN0cmluZ1Jlc291cmNlMTZCaXQ6OmdldFJlc291cmNlKHN0cmluZyk7CisgICAgICAg
ICAgICBpZiAocmVzb3VyY2UxNkJpdCkgeworICAgICAgICAgICAgICAgIHJlc291cmNlMTZCaXQt
PnZpc2l0U3RyaW5ncyhtX3Zpc2l0b3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgY29uc3QgV2ViQ29yZVN0cmluZ1Jlc291cmNlN0JpdCog
cmVzb3VyY2U3Qml0ID0gV2ViQ29yZVN0cmluZ1Jlc291cmNlN0JpdDo6Z2V0UmVzb3VyY2Uoc3Ry
aW5nKTsKKyAgICAgICAgICAgIGlmIChyZXNvdXJjZTdCaXQpIHsKKyAgICAgICAgICAgICAgICBy
ZXNvdXJjZTE2Qml0LT52aXNpdFN0cmluZ3MobV92aXNpdG9yKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICBwcml2YXRlOgogICAgICAgICBF
eHRlcm5hbFN0cmluZ1Zpc2l0b3IqIG1fdmlzaXRvcjsKQEAgLTMwNCw3OSArNDAwLDEwMCBAQCB1
aW50MzJfdCB0b1VJbnQzMih2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIG9rKQog
ICAgIHJldHVybiB1aW50VmFsdWUtPlZhbHVlKCk7CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBTPiBz
dHJ1Y3QgU3RyaW5nVHJhaXRzCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlLCB0eXBlbmFt
ZSBXZWJDb3JlU3RyaW5nUmVzb3VyY2U+CitzdHJ1Y3QgU3RyaW5nVHJhaXRzCiB7Ci0gICAgc3Rh
dGljIFMgZnJvbVN0cmluZ1Jlc291cmNlKFdlYkNvcmVTdHJpbmdSZXNvdXJjZSogcmVzb3VyY2Up
OworICAgIHN0YXRpYyBTdHJpbmdUeXBlIGZyb21TdHJpbmdSZXNvdXJjZShXZWJDb3JlU3RyaW5n
UmVzb3VyY2UqKTsKIAotICAgIHN0YXRpYyBTIGZyb21WOFN0cmluZyh2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IHY4U3RyaW5nLCBpbnQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgU3RyaW5nVHlwZSBmcm9t
VjhTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiYgdjhTdHJpbmcsIGludCBsZW5ndGgpOwog
fTsKIAotdGVtcGxhdGU8Pgotc3RydWN0IFN0cmluZ1RyYWl0czxTdHJpbmc+Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBXZWJDb3JlU3RyaW5nUmVzb3VyY2U+CitzdHJ1Y3QgU3RyaW5nVHJhaXRzPFN0cmlu
ZywgV2ViQ29yZVN0cmluZ1Jlc291cmNlPgogewogICAgIHN0YXRpYyBTdHJpbmcgZnJvbVN0cmlu
Z1Jlc291cmNlKFdlYkNvcmVTdHJpbmdSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgewogICAgICAg
ICByZXR1cm4gcmVzb3VyY2UtPndlYmNvcmVTdHJpbmcoKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
U3RyaW5nIGZyb21WOFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nLCBpbnQg
bGVuZ3RoKQorICAgIHN0YXRpYyBTdHJpbmcgZnJvbVY4U3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0
cmluZz4mIHY4U3RyaW5nLCBpbnQgbGVuZ3RoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHY4U3Ry
aW5nLT5MZW5ndGgoKSA9PSBsZW5ndGgpOwotICAgICAgICAvLyBOT1RFOiBhcyBvZiBub3csIFN0
cmluZyhjb25zdCBVQ2hhciosIGludCkgcGVyZm9ybXMgU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxp
emVkCi0gICAgICAgIC8vIGFueXdheSwgc28gbm8gbmVlZCB0byBvcHRpbWl6ZSBsaWtlIHdlIGRv
IGZvciBBdG9taWNTdHJpbmcgYmVsb3cuCi0gICAgICAgIFVDaGFyKiBidWZmZXI7Ci0gICAgICAg
IFN0cmluZyByZXN1bHQgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZm
ZXIpOwotICAgICAgICB2OFN0cmluZy0+V3JpdGUocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+
KGJ1ZmZlciksIDAsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJl
dHVybiBXZWJDb3JlU3RyaW5nUmVzb3VyY2U6OnN0cmluZ0Zyb21WOFN0cmluZyh2OFN0cmluZywg
bGVuZ3RoKTsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU3RyaW5nVHJhaXRzPEF0
b21pY1N0cmluZz4KK3RlbXBsYXRlPHR5cGVuYW1lIFdlYkNvcmVTdHJpbmdSZXNvdXJjZT4KK3N0
cnVjdCBTdHJpbmdUcmFpdHM8QXRvbWljU3RyaW5nLCBXZWJDb3JlU3RyaW5nUmVzb3VyY2U+CiB7
CiAgICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tU3RyaW5nUmVzb3VyY2UoV2ViQ29yZVN0cmlu
Z1Jlc291cmNlKiByZXNvdXJjZSkKICAgICB7CiAgICAgICAgIHJldHVybiByZXNvdXJjZS0+YXRv
bWljU3RyaW5nKCk7CiAgICAgfQogCi0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVjhTdHJp
bmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgaW50IGxlbmd0aCkKKyAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIGZyb21WOFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+JiB2OFN0
cmluZywgaW50IGxlbmd0aCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh2OFN0cmluZy0+TGVuZ3Ro
KCkgPT0gbGVuZ3RoKTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBpbmxpbmVCdWZmZXJTaXpl
ID0gMTY7Ci0gICAgICAgIGlmIChsZW5ndGggPD0gaW5saW5lQnVmZmVyU2l6ZSkgewotICAgICAg
ICAgICAgVUNoYXIgaW5saW5lQnVmZmVyW2lubGluZUJ1ZmZlclNpemVdOwotICAgICAgICAgICAg
djhTdHJpbmctPldyaXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbmxpbmVCdWZmZXIp
LCAwLCBsZW5ndGgpOwotICAgICAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhpbmxpbmVCdWZm
ZXIsIGxlbmd0aCk7Ci0gICAgICAgIH0KLSAgICAgICAgVUNoYXIqIGJ1ZmZlcjsKLSAgICAgICAg
U3RyaW5nIHRtcCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7
Ci0gICAgICAgIHY4U3RyaW5nLT5Xcml0ZShyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oYnVm
ZmVyKSwgMCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyh0bXApOworICAg
ICAgICByZXR1cm4gV2ViQ29yZVN0cmluZ1Jlc291cmNlOjphdG9taWNTdHJpbmdGcm9tVjhTdHJp
bmcodjhTdHJpbmcsIGxlbmd0aCk7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFN0
cmluZ1R5cGU+CisvLyB0aGVyZSBpcyBhIGNvcm5lciBjYXNlIGluIFN0cmluZ1RvV2ViQ29yZVN0
cmluZyB3aGVyZSBhbiA4Yml0IHN0cmluZyBjYW4gYmUKKy8vIHRyYW5zZm9ybWVkIGludG8gYSAx
NiBiaXQgc3RyaW5nIHdoZW4gcGFzc2VkIHRvIHRoZSBhdG9taWMgY29uc3RydWN0b3IKKy8vIGF0
b21pY0NvcHlGYWlsZWQgaGFuZGxlcyB0aGlzCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBl
LCB0eXBlbmFtZSBXZWJDb3JlU3RyaW5nUmVzb3VyY2U+CitzdGF0aWMgaW5saW5lIGJvb2wgYXRv
bWljQ29weUZhaWxlZChTdHJpbmdUeXBlJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCisvLyB0aGlzIGlzIHRoZSBvbmx5IGNhc2Ugd2hlcmUgdGhlIGF0b21pYyBjb25zdHJ1Y3Rv
ciBjYXVzZXMgaXNzdWVzCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBhdG9taWNDb3B5RmFpbGVk
PEF0b21pY1N0cmluZywgV2ViQ29yZVN0cmluZ1Jlc291cmNlN0JpdD4oQXRvbWljU3RyaW5nJiBz
dHJpbmcpCit7CisgICAgcmV0dXJuICFzdHJpbmcuc3RyaW5nKCkuaXM4Qml0KCk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGU+CiBTdHJpbmdUeXBlIHY4U3RyaW5nVG9XZWJDb3Jl
U3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcsIEV4dGVybmFsTW9kZSBleHRl
cm5hbCkKIHsKLSAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2UqIHN0cmluZ1Jlc291cmNlID0gV2Vi
Q29yZVN0cmluZ1Jlc291cmNlOjp0b1N0cmluZ1Jlc291cmNlKHY4U3RyaW5nKTsKLSAgICBpZiAo
c3RyaW5nUmVzb3VyY2UpCi0gICAgICAgIHJldHVybiBTdHJpbmdUcmFpdHM8U3RyaW5nVHlwZT46
OmZyb21TdHJpbmdSZXNvdXJjZShzdHJpbmdSZXNvdXJjZSk7CisgICAgLy8gaWYgdGhlIHN0cmlu
ZyBpcyBhbHJlYWR5IGV4dGVybmFsLCByZXR1cm4gaXQKKyAgICBXZWJDb3JlU3RyaW5nUmVzb3Vy
Y2UxNkJpdCogcmVzb3VyY2UxNkJpdCA9CisgICAgICAgICAgICBjb25zdF9jYXN0PFdlYkNvcmVT
dHJpbmdSZXNvdXJjZTE2Qml0Kj4oV2ViQ29yZVN0cmluZ1Jlc291cmNlMTZCaXQ6OmdldFJlc291
cmNlKHY4U3RyaW5nKSk7CisgICAgaWYgKHJlc291cmNlMTZCaXQpCisgICAgICAgIHJldHVybiBT
dHJpbmdUcmFpdHM8U3RyaW5nVHlwZSwgV2ViQ29yZVN0cmluZ1Jlc291cmNlMTZCaXQ+Ojpmcm9t
U3RyaW5nUmVzb3VyY2UocmVzb3VyY2UxNkJpdCk7CiAKKyAgICAvLyBpZiB0aGUgc3RyaW5nIGlz
IGFscmVhZHkgZXh0ZXJuYWwgYXNjaWksIHJldHVybiBpdAorICAgIFdlYkNvcmVTdHJpbmdSZXNv
dXJjZTdCaXQqIHJlc291cmNlN0JpdCA9CisgICAgICAgICAgICBjb25zdF9jYXN0PFdlYkNvcmVT
dHJpbmdSZXNvdXJjZTdCaXQqPihXZWJDb3JlU3RyaW5nUmVzb3VyY2U3Qml0OjpnZXRSZXNvdXJj
ZSh2OFN0cmluZykpOworICAgIGlmIChyZXNvdXJjZTdCaXQpCisgICAgICAgIHJldHVybiBTdHJp
bmdUcmFpdHM8U3RyaW5nVHlwZSwgV2ViQ29yZVN0cmluZ1Jlc291cmNlN0JpdD46OmZyb21TdHJp
bmdSZXNvdXJjZShyZXNvdXJjZTdCaXQpOworCisgICAgLy8gQXZvaWQgdHJ5aW5nIHRvIG1vcnBo
IGVtcHR5IHN0cmluZ3MsIGFzIHRoZXkgZG8gbm90IGhhdmUgZW5vdWdoIHJvb20gdG8gY29udGFp
biB0aGUgZXh0ZXJuYWwgcmVmZXJlbmNlLgogICAgIGludCBsZW5ndGggPSB2OFN0cmluZy0+TGVu
Z3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpIHsKICAgICAgICAgLy8gQXZvaWQgdHJ5aW5nIHRvIG1v
cnBoIGVtcHR5IHN0cmluZ3MsIGFzIHRoZXkgZG8gbm90IGhhdmUgZW5vdWdoIHJvb20gdG8gY29u
dGFpbiB0aGUgZXh0ZXJuYWwgcmVmZXJlbmNlLgogICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6
ZW1wdHkoKTsKICAgICB9CiAKLSAgICBTdHJpbmdUeXBlIHJlc3VsdChTdHJpbmdUcmFpdHM8U3Ry
aW5nVHlwZT46OmZyb21WOFN0cmluZyh2OFN0cmluZywgbGVuZ3RoKSk7CisgICAgLy8gY2hlY2sg
Zm9yIHBvdGVudGlhbCA3Yml0IHN0cmluZ3MgYW5kIG9wdGltaXplIGZvciB0aG9zZQorICAgIGJv
b2wgdHJ5N0JpdCA9ICF2OFN0cmluZy0+TWF5Q29udGFpbk5vbkFzY2lpKCk7CiAKLSAgICBpZiAo
ZXh0ZXJuYWwgPT0gRXh0ZXJuYWxpemUgJiYgdjhTdHJpbmctPkNhbk1ha2VFeHRlcm5hbCgpKSB7
Ci0gICAgICAgIHN0cmluZ1Jlc291cmNlID0gbmV3IFdlYkNvcmVTdHJpbmdSZXNvdXJjZShyZXN1
bHQpOwotICAgICAgICBpZiAoIXY4U3RyaW5nLT5NYWtlRXh0ZXJuYWwoc3RyaW5nUmVzb3VyY2Up
KSB7Ci0gICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGEgZmFpbHVyZSBkZWxldGUgdGhlIGV4dGVy
bmFsIHJlc291cmNlIGFzIGl0IHdhcyBub3QgdXNlZC4KLSAgICAgICAgICAgIGRlbGV0ZSBzdHJp
bmdSZXNvdXJjZTsKLSAgICAgICAgfQorICAgIFN0cmluZ1R5cGUgcmVzdWx0KAorICAgICAgICAg
ICAgdHJ5N0JpdCA/CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ1RyYWl0czxTdHJpbmdUeXBl
LCBXZWJDb3JlU3RyaW5nUmVzb3VyY2U3Qml0Pjo6ZnJvbVY4U3RyaW5nKHY4U3RyaW5nLCBsZW5n
dGgpIDoKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nVHJhaXRzPFN0cmluZ1R5cGUsIFdlYkNv
cmVTdHJpbmdSZXNvdXJjZTE2Qml0Pjo6ZnJvbVY4U3RyaW5nKHY4U3RyaW5nLCBsZW5ndGgpKTsK
KworICAgIC8vIGJhaWwgb3V0IGVhcmx5IGlmIHdlIGRvbid0IHdhbnQgdG8gb3IgY2FuJ3QgZXh0
ZXJuYWxpemUKKyAgICBpZiAoZXh0ZXJuYWwgIT0gRXh0ZXJuYWxpemUgfHwgIXY4U3RyaW5nLT5D
YW5NYWtlRXh0ZXJuYWwoKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIC8vIGNoZWNr
IGZvciBhdG9taWMgY29weSBmYWlsdXJlCisgICAgaWYgKHRyeTdCaXQgJiYgIWF0b21pY0NvcHlG
YWlsZWQ8U3RyaW5nVHlwZSwgV2ViQ29yZVN0cmluZ1Jlc291cmNlN0JpdD4ocmVzdWx0KSkgewor
ICAgICAgICAvLyBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhIDdiaXQgc3RyaW5nCisgICAgICAgIFdl
YkNvcmVTdHJpbmdSZXNvdXJjZTdCaXQ6OmV4dGVybmFsaXplU3RyaW5nPFN0cmluZ1R5cGU+KHJl
c3VsdCwgdjhTdHJpbmcpOworICAgIH0gZWxzZSB7CisgICAgICAgIFdlYkNvcmVTdHJpbmdSZXNv
dXJjZTE2Qml0OjpleHRlcm5hbGl6ZVN0cmluZzxTdHJpbmdUeXBlPihyZXN1bHQsIHY4U3RyaW5n
KTsKICAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogICAgIApAQCAtNDQ1LDYgKzU2Miw3
IEBAIEF0b21pY1N0cmluZyB2OE5vblN0cmluZ1ZhbHVlVG9BdG9taWNXZWJDb3JlU3RyaW5nKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBvYmplY3QpCiAgICAgcmV0dXJuIEF0b21pY1N0cmluZyh2OE5v
blN0cmluZ1ZhbHVlVG9XZWJDb3JlU3RyaW5nKG9iamVjdCkpOwogfQogCit0ZW1wbGF0ZTxjbGFz
cyBXZWJDb3JlU3RyaW5nUmVzb3VyY2U+CiBzdGF0aWMgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG1h
a2VFeHRlcm5hbFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBXZWJDb3JlU3Ry
aW5nUmVzb3VyY2UqIHN0cmluZ1Jlc291cmNlID0gbmV3IFdlYkNvcmVTdHJpbmdSZXNvdXJjZShz
dHJpbmcpOwpAQCAtNDU1LDYgKzU3MywxNyBAQCBzdGF0aWMgdjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG1ha2VFeHRlcm5hbFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gbmV3
U3RyaW5nOwogfQogCitzdGF0aWMgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG1ha2VFeHRlcm5hbFN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICAvLyBOQjogY29udGFpbnNPbmx5QVND
SUkgYXNzdW1lcyB0aGF0IHRoZSBzdHJpbmcgaXMgYXNjaWksIHdoaWNoIGlzIHRoZSBjb21tb24g
Y2FzZQorICAgIC8vIGJ1dCBsZWFkcyB0byBwb29yIHBlcmZvcm1hbmNlIG9uIG5vbi1hc2NpaSA4
LWJpdCBzdHJpbmdzCisgICAgYm9vbCBpc0FzY2lpID0gc3RyaW5nLmlzOEJpdCgpICYmIHN0cmlu
Zy5jb250YWluc09ubHlBU0NJSSgpOworCisgICAgcmV0dXJuIGlzQXNjaWkgPworICAgICAgICAg
ICAgbWFrZUV4dGVybmFsU3RyaW5nPFdlYkNvcmVTdHJpbmdSZXNvdXJjZTdCaXQ+KHN0cmluZykg
OgorICAgICAgICAgICAgbWFrZUV4dGVybmFsU3RyaW5nPFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2
Qml0PihzdHJpbmcpOworfQorCiBzdGF0aWMgdm9pZCBjYWNoZWRTdHJpbmdDYWxsYmFjayh2ODo6
UGVyc2lzdGVudDx2ODo6VmFsdWU+IHdyYXBwZXIsIHZvaWQqIHBhcmFtZXRlcikKIHsKICAgICBT
dHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KHBhcmFtZXRl
cik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>153506</attachid>
            <date>2012-07-20 08:08:38 -0700</date>
            <delta_ts>2012-09-10 06:12:33 -0700</delta_ts>
            <desc>typical performance test results without patch</desc>
            <filename>without-patch.txt</filename>
            <type>text/plain</type>
            <size>6160</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">d2l0aG91dCBwYXRjaAoKUnVubmluZyAyMCB0ZXN0cwpSdW5uaW5nIEJpbmRpbmdzL2FwcGVuZC1j
aGlsZC5odG1sICgxIG9mIDIwKQoKREVTQ1JJUFRJT046IFRoaXMgYmVuY2htYXJrIGNvdmVycyAn
YXBwZW5kQ2hpbGQnIGFuZCAncmVtb3ZlQ2hpbGQnIGluIERyb21hZW8vZG9tLW1vZGlmeS5odG1s
LgpSRVNVTFQgQmluZGluZ3M6IGFwcGVuZC1jaGlsZD0gMzEzLjA2NjIxOTA0MyBydW5zL3MKbWVk
aWFuPSAzMTEuNjg4MzExNjg4IHJ1bnMvcywgc3RkZXY9IDMuMzMxMzM0NDY0MDMgcnVucy9zLCBt
aW49IDMxMC40Nzg2NTQ1OTIgcnVucy9zLCBtYXg9IDMyMi4xODA5MTY5NzYgcnVucy9zCgpSdW5u
aW5nIEJpbmRpbmdzL2NyZWF0ZS1lbGVtZW50Lmh0bWwgKDIgb2YgMjApCkRFU0NSSVBUSU9OOiBU
aGlzIGJlbmNobWFyayBjb3ZlcnMgJ2NyZWF0ZUVsZW1lbnQnLCAnY3JlYXRlVGV4dE5vZGUnIGFu
ZCAnY2xvbmVOb2RlJyBpbiBEcm9tYWVvL2RvbS1tb2RpZnkuaHRtbCwgYW5kIG90aGVyIERPTSBt
ZXRob2RzIHRoYXQgcmV0dXJuIGEgbmV3IE5vZGUgb2JqZWN0LgpSRVNVTFQgQmluZGluZ3M6IGNy
ZWF0ZS1lbGVtZW50PSAzMTYuMjM3ODQ1Mzc0IHJ1bnMvcwptZWRpYW49IDMxNi41NjMxMzExMTkg
cnVucy9zLCBzdGRldj0gMi4xMjAzNTg0MzY3NSBydW5zL3MsIG1pbj0gMzA4LjM3MDA0NDA1MyBy
dW5zL3MsIG1heD0gMzE4LjU0Mzc5OTc3MiBydW5zL3MKClJ1bm5pbmcgQmluZGluZ3MvZXZlbnQt
dGFyZ2V0LXdyYXBwZXIuaHRtbCAoMyBvZiAyMCkKUkVTVUxUIEJpbmRpbmdzOiBldmVudC10YXJn
ZXQtd3JhcHBlcj0gMzU1LjMgbXMKbWVkaWFuPSAzNTUuMCBtcywgc3RkZXY9IDEuNDE3NzQ0Njg3
ODggbXMsIG1pbj0gMzUzLjAgbXMsIG1heD0gMzU4LjAgbXMKClJ1bm5pbmcgQmluZGluZ3MvZmly
c3QtY2hpbGQuaHRtbCAoNCBvZiAyMCkKREVTQ1JJUFRJT046IFRoaXMgYmVuY2htYXJrIGNvdmVy
cyAnZmlyc3RDaGlsZCcsICdsYXN0Q2hpbGQnLCAnbmV4dFNpYmxpbmcnIGFuZCAncHJldmlvdXNT
aWJsaW5nJyBpbiBEcm9tYWVvL2RvbS10cmF2ZXJzZS5odG1sLCBhbmQgb3RoZXIgRE9NIGF0dHJp
YnV0ZXMgdGhhdCByZXR1cm4gYSBOb2RlIG9iamVjdC4KUkVTVUxUIEJpbmRpbmdzOiBmaXJzdC1j
aGlsZD0gODQ0LjIyMjM3MjA3NiBydW5zL3MKbWVkaWFuPSA4NDQuODk4OTMwNDMzIHJ1bnMvcywg
c3RkZXY9IDQ5LjgwNzk5NDg3NDEgcnVucy9zLCBtaW49IDc4NC4zMTM3MjU0OSBydW5zL3MsIG1h
eD0gOTAxLjEyNjQwODAxIHJ1bnMvcwoKUnVubmluZyBCaW5kaW5ncy9nZXQtYXR0cmlidXRlLmh0
bWwgKDUgb2YgMjApCkRFU0NSSVBUSU9OOiBUaGlzIGJlbmNobWFyayBjb3ZlcnMgJ2dldEF0dHJp
YnV0ZScgaW4gRHJvbWFlby9kb20tYXR0ci5odG1sLCBhbmQgb3RoZXIgRE9NIG1ldGhvZHMgdGhh
dCByZXR1cm4gYSBTdHJpbmcuClJFU1VMVCBCaW5kaW5nczogZ2V0LWF0dHJpYnV0ZT0gMjczLjMw
MTAwNTk5IHJ1bnMvcwptZWRpYW49IDI2Ni42NjY2NjY2NjcgcnVucy9zLCBzdGRldj0gOC44NTM0
NDU0MTY5MiBydW5zL3MsIG1pbj0gMjY0LjkwMDY2MjI1MiBydW5zL3MsIG1heD0gMjg2LjQ1ODMz
MzMzMyBydW5zL3MKClJ1bm5pbmcgQmluZGluZ3MvZ2V0LWVsZW1lbnQtYnktaWQuaHRtbCAoNiBv
ZiAyMCkKREVTQ1JJUFRJT046IFRoaXMgYmVuY2htYXJrIGNvdmVycyAnZ2V0RWxlbWVudEJ5SWQn
IGluIERyb21hZW8vZG9tLXF1ZXJ5Lmh0bWwsIGFuZCBvdGhlciBET00gbWV0aG9kcyB0aGF0IHJl
dHVybiBhIE5vZGUgb2JqZWN0LgpSRVNVTFQgQmluZGluZ3M6IGdldC1lbGVtZW50LWJ5LWlkPSAz
MTQuOTIyMTc2MzMxIHJ1bnMvcwptZWRpYW49IDMxMy45MzA4MDc5MjUgcnVucy9zLCBzdGRldj0g
Mi41NDExNDAzNjkyNyBydW5zL3MsIG1pbj0gMzExLjY4ODMxMTY4OCBydW5zL3MsIG1heD0gMzIx
Ljc4MjE3ODIxOCBydW5zL3MKClJ1bm5pbmcgQmluZGluZ3MvZ2V0LWVsZW1lbnRzLWJ5LXRhZy1u
YW1lLmh0bWwgKDcgb2YgMjApCkRFU0NSSVBUSU9OOiBUaGlzIGJlbmNobWFyayBjb3ZlcnMgJ2dl
dEVsZW1lbnRzQnlUYWdOYW1lIChub3QgaW4gZG9jdW1lbnQpJywgJ2dldEVsZW1lbnRzQnlUYWdO
YW1lJywgJ2dldEVsZW1lbnRzQnlOYW1lIChub3QgaW4gZG9jdW1lbnQpJyBhbmQgJ2dldEVsZW1l
bnRzQnlOYW1lJyBpbiBEcm9tYWVvL2RvbS1xdWVyeS5odG1sLCBhbmQgb3RoZXIgRE9NIG1ldGhv
ZHMgdGhhdCByZXR1cm4gYSBOb2RlTGlzdC4KUkVTVUxUIEJpbmRpbmdzOiBnZXQtZWxlbWVudHMt
YnktdGFnLW5hbWU9IDQxMy40NjA2Nzk4MDEgcnVucy9zCm1lZGlhbj0gNDEzLjg0OTM3NDM0NCBy
dW5zL3MsIHN0ZGV2PSA5LjkwNDc1ODk5MTMyIHJ1bnMvcywgbWluPSA0MDAuNTAwNjI1NzgyIHJ1
bnMvcywgbWF4PSA0MjQuOTY2Nzk5NDY5IHJ1bnMvcwoKUnVubmluZyBCaW5kaW5ncy9pZC1nZXR0
ZXIuaHRtbCAoOCBvZiAyMCkKREVTQ1JJUFRJT046IFRoaXMgYmVuY2htYXJrIGNvdmVycyAnZWxl
bWVudC5wcm9wZXJ0eScgaW4gRHJvbWFlby9kb20tYXR0ci5odG1sLCAnaW5uZXJIVE1MJyBpbiBE
cm9tYWVvL2RvbS1tb2RpZnkuaHRtbCwgYW5kIG90aGVyIERPTSBhdHRyaWJ1dGVzIHRoYXQgcmV0
dXJuIGEgU3RyaW5nLgpSRVNVTFQgQmluZGluZ3M6IGlkLWdldHRlcj0gNjEzLjY4NTUzNDc1NiBy
dW5zL3MKbWVkaWFuPSA2MTQuMjAzNzA2MzExIHJ1bnMvcywgc3RkZXY9IDguMjMzMzY2NTI0ODkg
cnVucy9zLCBtaW49IDYwMC43NTA5Mzg2NzMgcnVucy9zLCBtYXg9IDYyNi42MzE4NTM3ODYgcnVu
cy9zCgpSdW5uaW5nIEJpbmRpbmdzL2lkLXNldHRlci5odG1sICg5IG9mIDIwKQpERVNDUklQVElP
TjogVGhpcyBiZW5jaG1hcmsgY292ZXJzICdlbGVtZW50LnByb3BlcnR5ID0gdmFsdWUnIGluIERy
b21hZW8vZG9tLWF0dHIuaHRtbCwgYW5kIG90aGVyIERPTSBhdHRyaWJ1dGVzIHRoYXQgc2V0cyBh
IFN0cmluZy4KUkVTVUxUIEJpbmRpbmdzOiBpZC1zZXR0ZXI9IDIxMS40MDc5NTkyNzQgcnVucy9z
Cm1lZGlhbj0gMjExLjY0MDU4MTk0MiBydW5zL3MsIHN0ZGV2PSAxLjA2ODQwNzc5OTUyIHJ1bnMv
cywgbWluPSAyMDguMzMzMzMzMzMzIHJ1bnMvcywgbWF4PSAyMTIuNDgzMzk5NzM0IHJ1bnMvcwoK
UnVubmluZyBCaW5kaW5ncy9pbnNlcnQtYmVmb3JlLmh0bWwgKDEwIG9mIDIwKQpERVNDUklQVElP
TjogVGhpcyBiZW5jaG1hcmsgY292ZXJzICdpbnNlcnRCZWZvcmUnIGluIERyb21hZW8vZG9tLW1v
ZGlmeS5odG1sIGFuZCByZXBsYWNlQ2hpbGQoKQpSRVNVTFQgQmluZGluZ3M6IGluc2VydC1iZWZv
cmU9IDIxOC4zMzAxMTE4NjEgcnVucy9zCm1lZGlhbj0gMjE4LjQ0NjYwMTk0MiBydW5zL3MsIHN0
ZGV2PSAwLjc3MzI3MTk5NjcyMSBydW5zL3MsIG1pbj0gMjE2LjYwNjQ5ODE5NSBydW5zL3MsIG1h
eD0gMjE5Ljc4MDIxOTc4IHJ1bnMvcwoKUnVubmluZyBCaW5kaW5ncy9ub2RlLWxpc3QtYWNjZXNz
Lmh0bWwgKDExIG9mIDIwKQpERVNDUklQVElPTjogVGhpcyBiZW5jaG1hcmsgY292ZXJzICdjaGls
ZE5vZGVzJyBpbiBEcm9tYWVvL2RvbS10cmF2ZXJzZS5odG1sLCBhbmQgb3RoZXIgRE9NIGF0dHJp
YnV0ZXMgdGhhdCBhY2Nlc3MgTm9kZUxpc3QuClJFU1VMVCBCaW5kaW5nczogbm9kZS1saXN0LWFj
Y2Vzcz0gMjQ5LjMyOTU2NDIyIHJ1bnMvcwptZWRpYW49IDI0OS42ODc4OTAxMzcgcnVucy9zLCBz
dGRldj0gMS45Mzg0NTE4MzQ2MyBydW5zL3MsIG1pbj0gMjQ0Ljc5ODA0MTYxNiBydW5zL3MsIG1h
eD0gMjUyLjIwNjgwOTU4NCBydW5zL3MKClJ1bm5pbmcgQmluZGluZ3Mvc2Nyb2xsLXRvcC5odG1s
ICgxMiBvZiAyMCkKREVTQ1JJUFRJT046IFRoaXMgYmVuY2htYXJrIGNvdmVycyBET00gYXR0cmli
dXRlcyB0aGF0IHJldHVybiBzbWFsbCBpbnRlZ2Vycy4KUkVTVUxUIEJpbmRpbmdzOiBzY3JvbGwt
dG9wPSAyNTMuMTY5MTgwMzYyIHJ1bnMvcwptZWRpYW49IDI1MC4zMTI4OTExMTQgcnVucy9zLCBz
dGRldj0gNi40NDU4OTA3NjQ4NSBydW5zL3MsIG1pbj0gMjQzLjYwNTM1OTMxOCBydW5zL3MsIG1h
eD0gMjYwLjc1NjE5Mjk2IHJ1bnMvcwoKUnVubmluZyBCaW5kaW5ncy9zZXQtYXR0cmlidXRlLmh0
bWwgKDEzIG9mIDIwKQpERVNDUklQVElPTjogVGhpcyBiZW5jaG1hcmsgY292ZXJzICdzZXRBdHRy
aWJ1dGUnIGluIERyb21hZW8vZG9tLWF0dHIuaHRtbCBhbmQgb3RoZXIgRE9NIG1ldGhvZHMgdGhh
dCByZXR1cm4gYW4gdW5kZWZpbmVkLgpSRVNVTFQgQmluZGluZ3M6IHNldC1hdHRyaWJ1dGU9IDQ5
MS4zMzMyNjA2NTggcnVucy9zCm1lZGlhbj0gNDg5LjU5NjA4MzIzMSBydW5zL3MsIHN0ZGV2PSA1
LjE1MTA2MDU5MDE1IHJ1bnMvcywgbWluPSA0ODMuMDkxNzg3NDQgcnVucy9zLCBtYXg9IDUwMi41
MTI1NjI4MTQgcnVucy9zCgpSdW5uaW5nIEJpbmRpbmdzL3VuZGVmaW5lZC1maXJzdC1jaGlsZC5o
dG1sICgxNCBvZiAyMCkKREVTQ1JJUFRJT046IFRoaXMgYmVuY2htYXJrIGNvdmVycyB1bmRlZmlu
ZWQgRE9NIGF0dHJpYnV0ZXMgdGhhdCByZXR1cm4gYSBudWxsLgpSRVNVTFQgQmluZGluZ3M6IHVu
ZGVmaW5lZC1maXJzdC1jaGlsZD0gODEwLjc0NTI2NzIzOCBydW5zL3MKbWVkaWFuPSA4MTAuNzI4
NzMwNTc1IHJ1bnMvcywgc3RkZXY9IDYwLjg1NDA3MjY2MzIgcnVucy9zLCBtaW49IDc0NS42NzI0
MzY3NTEgcnVucy9zLCBtYXg9IDg3NC44NDgxMTY2NDYgcnVucy9zCgpSdW5uaW5nIEJpbmRpbmdz
L3VuZGVmaW5lZC1nZXQtZWxlbWVudC1ieS1pZC5odG1sICgxNSBvZiAyMCkKREVTQ1JJUFRJT046
IFRoaXMgYmVuY2htYXJrIGNvdmVycyAnZ2V0RWxlbWVudEJ5SWQgKG5vdCBpbiBkb2N1bWVudCkn
IGluIERyb21hZW8vZG9tLXF1ZXJ5Lmh0bWwsIGFuZCBvdGhlciBOb2RlLXF1ZXJ5IG1ldGhvZHMg
dGhhdCByZXR1cm4gYSBudWxsLgpSRVNVTFQgQmluZGluZ3M6IHVuZGVmaW5lZC1nZXQtZWxlbWVu
dC1ieS1pZD0gMzMxLjgxMTIyNDcyMiBydW5zL3MKbWVkaWFuPSAzMjguODMxNTg3MjUyIHJ1bnMv
cywgc3RkZXY9IDkuMDA4MDE4MjUyMzEgcnVucy9zLCBtaW49IDMyMC4wIHJ1bnMvcywgbWF4PSAz
NTMuNTM1MzUzNTM1IHJ1bnMvcwoKUnVubmluZyBCaW5kaW5ncy91bmRlZmluZWQtaWQtZ2V0dGVy
Lmh0bWwgKDE2IG9mIDIwKQpERVNDUklQVElPTjogVGhpcyBiZW5jaG1hcmsgY292ZXJzIHVuZGVm
aW5lZCBET00gYXR0cmlidXRlcyB0aGF0IHJldHVybiBhbiBlbXB0eSBTdHJpbmcuClJFU1VMVCBC
aW5kaW5nczogdW5kZWZpbmVkLWlkLWdldHRlcj0gNzc3LjI3NTEwNTkzNiBydW5zL3MKbWVkaWFu
PSA3NzYuMzM1NzE4MTcxIHJ1bnMvcywgc3RkZXY9IDU4LjA5ODA5NTgzNyBydW5zL3MsIG1pbj0g
NzE3LjAyOTQ0OTQyNCBydW5zL3MsIG1heD0gODQwLjk5ODY4NTk0IHJ1bnMvcwoKUnVubmluZyBE
cm9tYWVvL2RvbS1hdHRyLmh0bWwgKDE3IG9mIDIwKQpSRVNVTFQgRHJvbWFlbzogZG9tLWF0dHI9
IDc1ODcuMzM2MTgwNzkgcnVucy9zCm1lZGlhbj0gMC4wIHJ1bnMvcywgc3RkZXY9IDUyLjE2Njkz
ODM1MzIgcnVucy9zLCBtaW49IDc0ODcuODgxMTE4ODggcnVucy9zLCBtYXg9IDc2ODAuMCBydW5z
L3MKClJ1bm5pbmcgRHJvbWFlby9kb20tbW9kaWZ5Lmh0bWwgKDE4IG9mIDIwKQpSRVNVTFQgRHJv
bWFlbzogZG9tLW1vZGlmeT0gNDIzMS43MDgyNDYxIHJ1bnMvcwptZWRpYW49IDAuMCBydW5zL3Ms
IHN0ZGV2PSAyNjUuNzEyMzk1OTMxIHJ1bnMvcywgbWluPSAzNzg1Ljg0NDA4MjUgcnVucy9zLCBt
YXg9IDQ3OTEuNTExNDg4NTEgcnVucy9zCgpSdW5uaW5nIERyb21hZW8vZG9tLXF1ZXJ5Lmh0bWwg
KDE5IG9mIDIwKQpSRVNVTFQgRHJvbWFlbzogZG9tLXF1ZXJ5PSA5NTkyNzIuNCBydW5zL3MKbWVk
aWFuPSAwLjAgcnVucy9zLCBzdGRldj0gMTYzMS4wNjY2NzU1MiBydW5zL3MsIG1pbj0gOTU0MjEy
LjAgcnVucy9zLCBtYXg9IDk2MzAzNi4wIHJ1bnMvcwoKUnVubmluZyBEcm9tYWVvL2RvbS10cmF2
ZXJzZS5odG1sICgyMCBvZiAyMCkKUkVTVUxUIERyb21hZW86IGRvbS10cmF2ZXJzZT0gMjg3Ny4z
OTU3ODAyNyBydW5zL3MKbWVkaWFuPSAwLjAgcnVucy9zLCBzdGRldj0gNy41NDMzNjk1MzQ5OCBy
dW5zL3MsIG1pbj0gMjg2MC42MDYzMzE3OSBydW5zL3MsIG1heD0gMjg5My4wNTM5NDYwNSBydW5z
L3MKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>153507</attachid>
            <date>2012-07-20 08:09:06 -0700</date>
            <delta_ts>2012-09-10 06:12:33 -0700</delta_ts>
            <desc>typical performance test results with patch</desc>
            <filename>with-patch.txt</filename>
            <type>text/plain</type>
            <size>6178</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">d2l0aCBwYXRjaAoKUnVubmluZyAyMCB0ZXN0cwpSdW5uaW5nIEJpbmRpbmdzL2FwcGVuZC1jaGls
ZC5odG1sICgxIG9mIDIwKQoKREVTQ1JJUFRJT046IFRoaXMgYmVuY2htYXJrIGNvdmVycyAnYXBw
ZW5kQ2hpbGQnIGFuZCAncmVtb3ZlQ2hpbGQnIGluIERyb21hZW8vZG9tLW1vZGlmeS5odG1sLgpS
RVNVTFQgQmluZGluZ3M6IGFwcGVuZC1jaGlsZD0gMzMwLjE0MzY4OTMzOCBydW5zL3MKbWVkaWFu
PSAzMzAuOTY5MjY3MTM5IHJ1bnMvcywgc3RkZXY9IDIuMDg1NDczODQ4MDggcnVucy9zLCBtaW49
IDMyMi4yMDk0MzYxMzMgcnVucy9zLCBtYXg9IDMzMS43NTM1NTQ1MDIgcnVucy9zCgpSdW5uaW5n
IEJpbmRpbmdzL2NyZWF0ZS1lbGVtZW50Lmh0bWwgKDIgb2YgMjApCkRFU0NSSVBUSU9OOiBUaGlz
IGJlbmNobWFyayBjb3ZlcnMgJ2NyZWF0ZUVsZW1lbnQnLCAnY3JlYXRlVGV4dE5vZGUnIGFuZCAn
Y2xvbmVOb2RlJyBpbiBEcm9tYWVvL2RvbS1tb2RpZnkuaHRtbCwgYW5kIG90aGVyIERPTSBtZXRo
b2RzIHRoYXQgcmV0dXJuIGEgbmV3IE5vZGUgb2JqZWN0LgpSRVNVTFQgQmluZGluZ3M6IGNyZWF0
ZS1lbGVtZW50PSAzMDQuMDY3NjM3MjcyIHJ1bnMvcwptZWRpYW49IDMwNC44NDQ5NDYwNzkgcnVu
cy9zLCBzdGRldj0gMy40NTA2NDc4Mzg2MSBydW5zL3MsIG1pbj0gMjk3LjU1NTc5MTcxMSBydW5z
L3MsIG1heD0gMzEwLjA3NzUxOTM4IHJ1bnMvcwoKUnVubmluZyBCaW5kaW5ncy9ldmVudC10YXJn
ZXQtd3JhcHBlci5odG1sICgzIG9mIDIwKQpSRVNVTFQgQmluZGluZ3M6IGV2ZW50LXRhcmdldC13
cmFwcGVyPSAzNTcuNSBtcwptZWRpYW49IDM1OC4wIG1zLCBzdGRldj0gMi4zMzQ1MjM1MDU5OSBt
cywgbWluPSAzNTMuMCBtcywgbWF4PSAzNjEuMCBtcwoKUnVubmluZyBCaW5kaW5ncy9maXJzdC1j
aGlsZC5odG1sICg0IG9mIDIwKQpERVNDUklQVElPTjogVGhpcyBiZW5jaG1hcmsgY292ZXJzICdm
aXJzdENoaWxkJywgJ2xhc3RDaGlsZCcsICduZXh0U2libGluZycgYW5kICdwcmV2aW91c1NpYmxp
bmcnIGluIERyb21hZW8vZG9tLXRyYXZlcnNlLmh0bWwsIGFuZCBvdGhlciBET00gYXR0cmlidXRl
cyB0aGF0IHJldHVybiBhIE5vZGUgb2JqZWN0LgpSRVNVTFQgQmluZGluZ3M6IGZpcnN0LWNoaWxk
PSA4NDQuMTA0Mjg3NDgyIHJ1bnMvcwptZWRpYW49IDg0Mi4xNzg5NzY4NTQgcnVucy9zLCBzdGRl
dj0gNDUuOTI0OTI4Njc3IHJ1bnMvcywgbWluPSA3OTYuMDE5OTAwNDk4IHJ1bnMvcywgbWF4PSA4
OTYuNjM3NjA4OTY2IHJ1bnMvcwoKUnVubmluZyBCaW5kaW5ncy9nZXQtYXR0cmlidXRlLmh0bWwg
KDUgb2YgMjApCkRFU0NSSVBUSU9OOiBUaGlzIGJlbmNobWFyayBjb3ZlcnMgJ2dldEF0dHJpYnV0
ZScgaW4gRHJvbWFlby9kb20tYXR0ci5odG1sLCBhbmQgb3RoZXIgRE9NIG1ldGhvZHMgdGhhdCBy
ZXR1cm4gYSBTdHJpbmcuClJFU1VMVCBCaW5kaW5nczogZ2V0LWF0dHJpYnV0ZT0gMjY0LjkxOTAx
OTAwNCBydW5zL3MKbWVkaWFuPSAyNjQuOTAwNjYyMjUyIHJ1bnMvcywgc3RkZXY9IDAuNDY0MDE3
MjgyNDI2IHJ1bnMvcywgbWluPSAyNjQuMjAwNzkyNjAyIHJ1bnMvcywgbWF4PSAyNjUuOTU3NDQ2
ODA5IHJ1bnMvcwoKUnVubmluZyBCaW5kaW5ncy9nZXQtZWxlbWVudC1ieS1pZC5odG1sICg2IG9m
IDIwKQpERVNDUklQVElPTjogVGhpcyBiZW5jaG1hcmsgY292ZXJzICdnZXRFbGVtZW50QnlJZCcg
aW4gRHJvbWFlby9kb20tcXVlcnkuaHRtbCwgYW5kIG90aGVyIERPTSBtZXRob2RzIHRoYXQgcmV0
dXJuIGEgTm9kZSBvYmplY3QuClJFU1VMVCBCaW5kaW5nczogZ2V0LWVsZW1lbnQtYnktaWQ9IDMx
Mi4xMzk4NTA3MzIgcnVucy9zCm1lZGlhbj0gMzA5Ljg3NzQ2OTM2NyBydW5zL3MsIHN0ZGV2PSA1
LjkwNzM4NjIxOTM3IHJ1bnMvcywgbWluPSAzMDcuMjk4MzM1NDY3IHJ1bnMvcywgbWF4PSAzMjku
NDExNzY0NzA2IHJ1bnMvcwoKUnVubmluZyBCaW5kaW5ncy9nZXQtZWxlbWVudHMtYnktdGFnLW5h
bWUuaHRtbCAoNyBvZiAyMCkKREVTQ1JJUFRJT046IFRoaXMgYmVuY2htYXJrIGNvdmVycyAnZ2V0
RWxlbWVudHNCeVRhZ05hbWUgKG5vdCBpbiBkb2N1bWVudCknLCAnZ2V0RWxlbWVudHNCeVRhZ05h
bWUnLCAnZ2V0RWxlbWVudHNCeU5hbWUgKG5vdCBpbiBkb2N1bWVudCknIGFuZCAnZ2V0RWxlbWVu
dHNCeU5hbWUnIGluIERyb21hZW8vZG9tLXF1ZXJ5Lmh0bWwsIGFuZCBvdGhlciBET00gbWV0aG9k
cyB0aGF0IHJldHVybiBhIE5vZGVMaXN0LgpSRVNVTFQgQmluZGluZ3M6IGdldC1lbGVtZW50cy1i
eS10YWctbmFtZT0gMzc5LjY1ODEzNjE5OCBydW5zL3MKbWVkaWFuPSAzODAuODA5OTg1Nzg1IHJ1
bnMvcywgc3RkZXY9IDguNDg5NTc4NzU2MTIgcnVucy9zLCBtaW49IDM2OC45MDY0NTU4NjMgcnVu
cy9zLCBtYXg9IDM4OS4yOTQ0MDM4OTMgcnVucy9zCgpSdW5uaW5nIEJpbmRpbmdzL2lkLWdldHRl
ci5odG1sICg4IG9mIDIwKQpERVNDUklQVElPTjogVGhpcyBiZW5jaG1hcmsgY292ZXJzICdlbGVt
ZW50LnByb3BlcnR5JyBpbiBEcm9tYWVvL2RvbS1hdHRyLmh0bWwsICdpbm5lckhUTUwnIGluIERy
b21hZW8vZG9tLW1vZGlmeS5odG1sLCBhbmQgb3RoZXIgRE9NIGF0dHJpYnV0ZXMgdGhhdCByZXR1
cm4gYSBTdHJpbmcuClJFU1VMVCBCaW5kaW5nczogaWQtZ2V0dGVyPSA2MTMuODc3OTE3NzUzIHJ1
bnMvcwptZWRpYW49IDYxNC41OTY2NzA5MzUgcnVucy9zLCBzdGRldj0gOC4wODk3NTQ3NDIxMyBy
dW5zL3MsIG1pbj0gNjAzLjc3MzU4NDkwNiBydW5zL3MsIG1heD0gNjI1LjgxNDg2MzEwMyBydW5z
L3MKClJ1bm5pbmcgQmluZGluZ3MvaWQtc2V0dGVyLmh0bWwgKDkgb2YgMjApCkRFU0NSSVBUSU9O
OiBUaGlzIGJlbmNobWFyayBjb3ZlcnMgJ2VsZW1lbnQucHJvcGVydHkgPSB2YWx1ZScgaW4gRHJv
bWFlby9kb20tYXR0ci5odG1sLCBhbmQgb3RoZXIgRE9NIGF0dHJpYnV0ZXMgdGhhdCBzZXRzIGEg
U3RyaW5nLgpSRVNVTFQgQmluZGluZ3M6IGlkLXNldHRlcj0gMjA3LjQ3MzI4NzE2MiBydW5zL3MK
bWVkaWFuPSAyMDcuMzg4MjkxOTAzIHJ1bnMvcywgc3RkZXY9IDAuOTU1MzM0NTUwNTE3IHJ1bnMv
cywgbWluPSAyMDQuODY1NTU2OTc4IHJ1bnMvcywgbWF4PSAyMDkuNDI0MDgzNzcgcnVucy9zCgpS
dW5uaW5nIEJpbmRpbmdzL2luc2VydC1iZWZvcmUuaHRtbCAoMTAgb2YgMjApCkRFU0NSSVBUSU9O
OiBUaGlzIGJlbmNobWFyayBjb3ZlcnMgJ2luc2VydEJlZm9yZScgaW4gRHJvbWFlby9kb20tbW9k
aWZ5Lmh0bWwgYW5kIHJlcGxhY2VDaGlsZCgpClJFU1VMVCBCaW5kaW5nczogaW5zZXJ0LWJlZm9y
ZT0gMjIwLjkwMDYyNTc5IHJ1bnMvcwptZWRpYW49IDIyMC44NTg4OTU3MDYgcnVucy9zLCBzdGRl
dj0gMC40ODcwMTEwODM4NCBydW5zL3MsIG1pbj0gMjIwLjA0ODg5OTc1NiBydW5zL3MsIG1heD0g
MjIxLjY3NDg3Njg0NyBydW5zL3MKClJ1bm5pbmcgQmluZGluZ3Mvbm9kZS1saXN0LWFjY2Vzcy5o
dG1sICgxMSBvZiAyMCkKREVTQ1JJUFRJT046IFRoaXMgYmVuY2htYXJrIGNvdmVycyAnY2hpbGRO
b2RlcycgaW4gRHJvbWFlby9kb20tdHJhdmVyc2UuaHRtbCwgYW5kIG90aGVyIERPTSBhdHRyaWJ1
dGVzIHRoYXQgYWNjZXNzIE5vZGVMaXN0LgpSRVNVTFQgQmluZGluZ3M6IG5vZGUtbGlzdC1hY2Nl
c3M9IDI1MC4wOTUwODA5MjcgcnVucy9zCm1lZGlhbj0gMjUwLjAgcnVucy9zLCBzdGRldj0gMC41
Njk1NTgzNTI5MzcgcnVucy9zLCBtaW49IDI0OS4wNjYwMDI0OTEgcnVucy9zLCBtYXg9IDI1MS4y
NTYyODE0MDcgcnVucy9zCgpSdW5uaW5nIEJpbmRpbmdzL3Njcm9sbC10b3AuaHRtbCAoMTIgb2Yg
MjApCkRFU0NSSVBUSU9OOiBUaGlzIGJlbmNobWFyayBjb3ZlcnMgRE9NIGF0dHJpYnV0ZXMgdGhh
dCByZXR1cm4gc21hbGwgaW50ZWdlcnMuClJFU1VMVCBCaW5kaW5nczogc2Nyb2xsLXRvcD0gMjU2
LjY0MTEwMzE2NyBydW5zL3MKbWVkaWFuPSAyNTcuNTY2MTA4MDgyIHJ1bnMvcywgc3RkZXY9IDMu
NTUyNzU3NTE4MTcgcnVucy9zLCBtaW49IDI0OS42ODc4OTAxMzcgcnVucy9zLCBtYXg9IDI2MC40
MTY2NjY2NjcgcnVucy9zCgpSdW5uaW5nIEJpbmRpbmdzL3NldC1hdHRyaWJ1dGUuaHRtbCAoMTMg
b2YgMjApCkRFU0NSSVBUSU9OOiBUaGlzIGJlbmNobWFyayBjb3ZlcnMgJ3NldEF0dHJpYnV0ZScg
aW4gRHJvbWFlby9kb20tYXR0ci5odG1sIGFuZCBvdGhlciBET00gbWV0aG9kcyB0aGF0IHJldHVy
biBhbiB1bmRlZmluZWQuClJFU1VMVCBCaW5kaW5nczogc2V0LWF0dHJpYnV0ZT0gNDY2LjI0NDcw
NDY0NCBydW5zL3MKbWVkaWFuPSA0NjUuNzE3OTgxODg5IHJ1bnMvcywgc3RkZXY9IDUuNzIxMzE4
NzkzOTQgcnVucy9zLCBtaW49IDQ2MC4zNTgwNTYyNjYgcnVucy9zLCBtYXg9IDQ4Ni42MTgwMDQ4
NjYgcnVucy9zCgpSdW5uaW5nIEJpbmRpbmdzL3VuZGVmaW5lZC1maXJzdC1jaGlsZC5odG1sICgx
NCBvZiAyMCkKREVTQ1JJUFRJT046IFRoaXMgYmVuY2htYXJrIGNvdmVycyB1bmRlZmluZWQgRE9N
IGF0dHJpYnV0ZXMgdGhhdCByZXR1cm4gYSBudWxsLgpSRVNVTFQgQmluZGluZ3M6IHVuZGVmaW5l
ZC1maXJzdC1jaGlsZD0gODEwLjExNjMzNDgyMyBydW5zL3MKbWVkaWFuPSA4MDguMTI1MjY0NDk0
IHJ1bnMvcywgc3RkZXY9IDYwLjc3NTQ1NjQ2ODEgcnVucy9zLCBtaW49IDc0NS42NzI0MzY3NTEg
cnVucy9zLCBtYXg9IDg3My43ODY0MDc3NjcgcnVucy9zCgpSdW5uaW5nIEJpbmRpbmdzL3VuZGVm
aW5lZC1nZXQtZWxlbWVudC1ieS1pZC5odG1sICgxNSBvZiAyMCkKREVTQ1JJUFRJT046IFRoaXMg
YmVuY2htYXJrIGNvdmVycyAnZ2V0RWxlbWVudEJ5SWQgKG5vdCBpbiBkb2N1bWVudCknIGluIERy
b21hZW8vZG9tLXF1ZXJ5Lmh0bWwsIGFuZCBvdGhlciBOb2RlLXF1ZXJ5IG1ldGhvZHMgdGhhdCBy
ZXR1cm4gYSBudWxsLgpSRVNVTFQgQmluZGluZ3M6IHVuZGVmaW5lZC1nZXQtZWxlbWVudC1ieS1p
ZD0gMjk5LjIzMjU2OTA5NSBydW5zL3MKbWVkaWFuPSAyOTYuODUxNTc0MjEzIHJ1bnMvcywgc3Rk
ZXY9IDcuNTYyMzY2Nzk5NTcgcnVucy9zLCBtaW49IDI4OS44NTUwNzI0NjQgcnVucy9zLCBtYXg9
IDMxNS43ODk0NzM2ODQgcnVucy9zCgpSdW5uaW5nIEJpbmRpbmdzL3VuZGVmaW5lZC1pZC1nZXR0
ZXIuaHRtbCAoMTYgb2YgMjApCkRFU0NSSVBUSU9OOiBUaGlzIGJlbmNobWFyayBjb3ZlcnMgdW5k
ZWZpbmVkIERPTSBhdHRyaWJ1dGVzIHRoYXQgcmV0dXJuIGFuIGVtcHR5IFN0cmluZy4KUkVTVUxU
IEJpbmRpbmdzOiB1bmRlZmluZWQtaWQtZ2V0dGVyPSA3NjQuMjkxODc0NjYzIHJ1bnMvcwptZWRp
YW49IDc2My4zMDAzNzI4MzIgcnVucy9zLCBzdGRldj0gNDQuMzY1MTA0ODg3MyBydW5zL3MsIG1p
bj0gNzE2LjExMjUzMTk2OSBydW5zL3MsIG1heD0gODExLjE1MzM1ODY4MiBydW5zL3MKClJ1bm5p
bmcgRHJvbWFlby9kb20tYXR0ci5odG1sICgxNyBvZiAyMCkKUkVTVUxUIERyb21hZW86IGRvbS1h
dHRyPSA3MDU1LjE3NjkyNDEzIHJ1bnMvcwptZWRpYW49IDAuMCBydW5zL3MsIHN0ZGV2PSA3OS4w
NTMyNzQyNzUyIHJ1bnMvcywgbWluPSA2OTc0Ljg2Mzc4ODkxIHJ1bnMvcywgbWF4PSA3MTgxLjcx
NDU3MDg2IHJ1bnMvcwoKUnVubmluZyBEcm9tYWVvL2RvbS1tb2RpZnkuaHRtbCAoMTggb2YgMjAp
ClJFU1VMVCBEcm9tYWVvOiBkb20tbW9kaWZ5PSA0MTMzLjIxMzUzNjUyIHJ1bnMvcwptZWRpYW49
IDAuMCBydW5zL3MsIHN0ZGV2PSAyNDIuMDgxNDQyMTg5IHJ1bnMvcywgbWluPSAzNzUxLjg3NDA3
MzA1IHJ1bnMvcywgbWF4PSA0NTQwLjI5OTM5MjE1IHJ1bnMvcwoKUnVubmluZyBEcm9tYWVvL2Rv
bS1xdWVyeS5odG1sICgxOSBvZiAyMCkKUkVTVUxUIERyb21hZW86IGRvbS1xdWVyeT0gOTU5NzM1
Ljc4NjgxMyBydW5zL3MKbWVkaWFuPSAwLjAgcnVucy9zLCBzdGRldj0gOTgyLjM0MjU1ODQ4NSBy
dW5zL3MsIG1pbj0gOTU2NzY4LjAgcnVucy9zLCBtYXg9IDk2MjE2MC4wIHJ1bnMvcwoKUnVubmlu
ZyBEcm9tYWVvL2RvbS10cmF2ZXJzZS5odG1sICgyMCBvZiAyMCkKUkVTVUxUIERyb21hZW86IGRv
bS10cmF2ZXJzZT0gMjg3Ny44MTcxODI4MiBydW5zL3MKbWVkaWFuPSAwLjAgcnVucy9zLCBzdGRl
dj0gMy43MTgxMTY0NTgwNSBydW5zL3MsIG1pbj0gMjg2OC44ODYxMTM4OSBydW5zL3MsIG1heD0g
Mjg4Ny4wNTE5NDgwNSBydW5zL3MKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154067</attachid>
            <date>2012-07-24 08:24:25 -0700</date>
            <delta_ts>2012-09-10 06:12:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91850-20120724172415.patch</filename>
            <type>text/plain</type>
            <size>17699</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI2NzNlMWRkYzdmOTYy
YWZkNmU3ZmZlZmRiNTIyMDg2MmIzYTYwOS4uOWM4NjU2MGRjZGNlYjI1ZDg0MmVmYjRhMmViN2E0
MWJmYmIwNzhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA3LTI0ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIGFkZCA3IGJpdCBzdHJpbmdz
IGNhcGFiaWxpdGllcyB0byB0aGUgdjggYmluZGluZyBsYXllcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBlbmFibGVzIHRoZSB2OCBi
aW5kaW5nIGxheWVyIHRvIG1ha2UgdXNlIG9mIHdlYmtpdCdzCisgICAgICAgIDggYml0IHN0cmlu
ZyBjYXBhYmlsaXRpZXMuICBFeGlzdGluZyBmdW5jdGlvbmFsaXR5IGZvciAxNiBiaXQgc3RyaW5n
cworICAgICAgICBpcyBzaW1wbHkgdGVtcGxhdGl6ZWQgYW5kIG1hcHBlZCBvbnRvIHY4J3MgNyBh
c2NpaSBzdHJpbmcgYXBpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gIFJlZmFjdG9yIC0gbm8g
bmV3IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3RyaW5nUmVz
b3VyY2U6OldlYkNvcmVTdHJpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3Jl
U3RyaW5nUmVzb3VyY2U6On5XZWJDb3JlU3RyaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNlOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
cmVTdHJpbmdSZXNvdXJjZTo6YXRvbWljU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmVTdHJpbmdS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3RyaW5nUmVzb3VyY2U6OmV4dGVy
bmFsaXplU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZTo6
dmlzaXRTdHJpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6Z2V0UmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Ojp3cml0ZUludG9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6OjpzdHJp
bmdGcm9tVjhTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6OjphdG9taWNTdHJpbmdGcm9tVjhT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnZpc2l0
RXh0ZXJuYWxTdHJpbmdzKToKKyAgICAgICAgKFN0cmluZ1RyYWl0cyk6CisgICAgICAgIChXZWJD
b3JlOjphdG9taWNDb3B5RmFpbGVkKTpSZXR1cm5zIHRydWUgZm9yIHRoZSBlZGdlIGNhc2Ugd2hl
cmUgYW4gOCBiaXQgc3RyaW5nIGlzIGNvbnZlcnRlZCB0byBhIDE2IGJpdCBzdHJpbmcgb24gaW5z
ZXJ0IGludG8gdGhlIGF0b21pYyBzdHJpbmcgdGFibGUuCisgICAgICAgIChXZWJDb3JlOjpXZWJD
b3JlU3RyaW5nUmVzb3VyY2U3Qml0KToKKyAgICAgICAgKFdlYkNvcmU6OnY4U3RyaW5nVG9XZWJD
b3JlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VFeHRlcm5hbFN0cmluZyk6CisKIDIw
MTItMDctMjQgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNv
bT4KIAogICAgICAgICBIYXJmQnV6ekZhY2VORy5oIGZvcndhcmQgZGVjbGFyYXRpb25zIGNvbmZs
aWN0IHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgSGFyZmJ1enoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IGQyODJiMGRiZWY3ODY5OTM0MjViOWQ3NmIwNzdhMzNk
MDM2YWNmMTMuLmU4YzVkOGMzMTY4MzA3YjdmZjU2NzQzMjhjZmEyZjcxZWIzZjU1YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtMTA0LDcgKzEwNCw4IEBA
IHZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluCiAKIC8vIFdlYkNvcmVTdHJpbmdSZXNvdXJjZSBpcyBh
IGhlbHBlciBjbGFzcyBmb3IgdjhFeHRlcm5hbFN0cmluZy4gSXQgaXMgdXNlZAogLy8gdG8gbWFu
YWdlIHRoZSBsaWZlLWN5Y2xlIG9mIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBvZiB0aGUgZXh0ZXJu
YWwgc3RyaW5nLgotY2xhc3MgV2ViQ29yZVN0cmluZ1Jlc291cmNlIDogcHVibGljIHY4OjpTdHJp
bmc6OkV4dGVybmFsU3RyaW5nUmVzb3VyY2UgewordGVtcGxhdGU8Y2xhc3MgU3RyaW5nUmVzb3Vy
Y2UsIHR5cGVuYW1lIERhdGFUeXBlLCB0eXBlbmFtZSBDaGFyVHlwZT4KK2NsYXNzIFdlYkNvcmVT
dHJpbmdSZXNvdXJjZSA6IHB1YmxpYyBTdHJpbmdSZXNvdXJjZSB7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV2ViQ29yZVN0cmluZ1Jlc291cmNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAg
ICA6IG1fcGxhaW5TdHJpbmcoc3RyaW5nKQpAQCAtMTEzLDcgKzExNCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgbV90aHJlYWRJZCA9IFdURjo6Y3VycmVudFRocmVhZCgpOwogI2VuZGlmCiAgICAgICAg
IEFTU0VSVCghc3RyaW5nLmlzTnVsbCgpKTsKLSAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRP
ZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KDIgKiBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICB2
ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkoc2l6ZW9mKENoYXJU
eXBlKSAqIHN0cmluZy5sZW5ndGgoKSk7CiAgICAgfQogCiAgICAgZXhwbGljaXQgV2ViQ29yZVN0
cmluZ1Jlc291cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQpAQCAtMTI0LDcgKzEyNSw3
IEBAIHB1YmxpYzoKICAgICAgICAgbV90aHJlYWRJZCA9IFdURjo6Y3VycmVudFRocmVhZCgpOwog
I2VuZGlmCiAgICAgICAgIEFTU0VSVCghc3RyaW5nLmlzTnVsbCgpKTsKLSAgICAgICAgdjg6OlY4
OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KDIgKiBzdHJpbmcubGVuZ3Ro
KCkpOworICAgICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1v
cnkoc2l6ZW9mKENoYXJUeXBlKSAqIHN0cmluZy5sZW5ndGgoKSk7CiAgICAgfQogCiAgICAgdmly
dHVhbCB+V2ViQ29yZVN0cmluZ1Jlc291cmNlKCkKQEAgLTEzMiwxNSArMTMzLDE2IEBAIHB1Ymxp
YzoKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIEFTU0VSVChtX3RocmVhZElkID09IFdURjo6Y3Vy
cmVudFRocmVhZCgpKTsKICNlbmRpZgotICAgICAgICBpbnQgcmVkdWNlZEV4dGVybmFsTWVtb3J5
ID0gLTIgKiBtX3BsYWluU3RyaW5nLmxlbmd0aCgpOworICAgICAgICBpbnQgbGVuZ3RoID0gbV9w
bGFpblN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgaW50IHJlZHVjZWRFeHRlcm5hbE1lbW9yeSA9
IC1zaXplb2YoQ2hhclR5cGUpICogbGVuZ3RoOwogICAgICAgICBpZiAobV9wbGFpblN0cmluZy5p
bXBsKCkgIT0gbV9hdG9taWNTdHJpbmcuaW1wbCgpICYmICFtX2F0b21pY1N0cmluZy5pc051bGwo
KSkKLSAgICAgICAgICAgIHJlZHVjZWRFeHRlcm5hbE1lbW9yeSAqPSAyOworICAgICAgICAgICAg
cmVkdWNlZEV4dGVybmFsTWVtb3J5IC09IGxlbmd0aCAqIChtX2F0b21pY1N0cmluZy5pbXBsKCkt
PmlzOEJpdCgpID8gc2l6ZW9mKExDaGFyKSA6IHNpemVvZihVQ2hhcikpOwogICAgICAgICB2ODo6
Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkocmVkdWNlZEV4dGVybmFs
TWVtb3J5KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IHVpbnQxNl90KiBkYXRhKCkgY29u
c3QKKyAgICB2aXJ0dWFsIERhdGFUeXBlIGRhdGEoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihtX3BsYWluU3RyaW5nLmltcGwo
KS0+Y2hhcmFjdGVycygpKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVR5
cGU+KG1fcGxhaW5TdHJpbmcuaW1wbCgpLT5nZXRDaGFyYWN0ZXJzPENoYXJUeXBlPigpKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3BsYWlu
U3RyaW5nLmltcGwoKS0+bGVuZ3RoKCk7IH0KQEAgLTE1NiwyMiArMTU4LDQwIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG1fYXRvbWljU3RyaW5nID0gQXRvbWljU3RyaW5nKG1fcGxhaW5TdHJpbmcp
OwogICAgICAgICAgICAgQVNTRVJUKCFtX2F0b21pY1N0cmluZy5pc051bGwoKSk7CiAgICAgICAg
ICAgICBpZiAobV9wbGFpblN0cmluZy5pbXBsKCkgIT0gbV9hdG9taWNTdHJpbmcuaW1wbCgpKQot
ICAgICAgICAgICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1l
bW9yeSgyICogbV9hdG9taWNTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHY4OjpW
ODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fYXRvbWljU3RyaW5nLmxlbmd0aCgpICogKG1fYXRvbWljU3RyaW5nLmltcGwo
KS0+aXM4Qml0KCkgPyBzaXplb2YoTENoYXIpIDogc2l6ZW9mKFVDaGFyKSkpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiBtX2F0b21pY1N0cmluZzsKICAgICB9CiAKLSAgICB2b2lkIHZpc2l0
U3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqIHZpc2l0b3IpCisgICAgLy8gcmV0dXJucyBu
dWxsIGlmIHJlc291cmNlIGRvZXNuJ3QgZXhpc3Qgb3IgaXMgb2YgdGhlIHdyb25nIHR5cGUKKyAg
ICBzdGF0aWMgY29uc3QgV2ViQ29yZVN0cmluZ1Jlc291cmNlICogZ2V0UmVzb3VyY2Uodjg6Okhh
bmRsZTx2ODo6U3RyaW5nPiYgdjhTdHJpbmcpOworCisgICAgc3RhdGljIHZvaWQgd3JpdGVJbnRv
QnVmZmVyKHY4OjpIYW5kbGU8djg6OlN0cmluZz4mIHY4U3RyaW5nLCBpbnQgbGVuZ3RoLCBDaGFy
VHlwZSogYnVmZmVyKTsKKworICAgIHN0YXRpYyBTdHJpbmcgc3RyaW5nRnJvbVY4U3RyaW5nKHY4
OjpIYW5kbGU8djg6OlN0cmluZz4mIHY4U3RyaW5nLCBpbnQgbGVuZ3RoKTsKKworICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgYXRvbWljU3RyaW5nRnJvbVY4U3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0
cmluZz4mIHY4U3RyaW5nLCBpbnQgbGVuZ3RoKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0
cmluZ1R5cGU+CisgICAgc3RhdGljIHZvaWQgZXh0ZXJuYWxpemVTdHJpbmcoU3RyaW5nVHlwZSYg
c3RyaW5nLCB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+JiB2OFN0cmluZykKICAgICB7Ci0gICAgICAg
IHZpc2l0b3ItPnZpc2l0SlNFeHRlcm5hbFN0cmluZyhtX3BsYWluU3RyaW5nLmltcGwoKSk7Ci0g
ICAgICAgIGlmIChtX3BsYWluU3RyaW5nLmltcGwoKSAhPSBtX2F0b21pY1N0cmluZy5pbXBsKCkg
JiYgIW1fYXRvbWljU3RyaW5nLmlzTnVsbCgpKQotICAgICAgICAgICAgdmlzaXRvci0+dmlzaXRK
U0V4dGVybmFsU3RyaW5nKG1fYXRvbWljU3RyaW5nLmltcGwoKSk7CisgICAgICAgIFdlYkNvcmVT
dHJpbmdSZXNvdXJjZSogc3RyaW5nUmVzb3VyY2UgPSBuZXcgV2ViQ29yZVN0cmluZ1Jlc291cmNl
KHN0cmluZyk7CisKKyAgICAgICAgaWYgKCF2OFN0cmluZy0+TWFrZUV4dGVybmFsKHN0cmluZ1Jl
c291cmNlKSkgeworICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBhIGZhaWx1cmUgZGVsZXRlIHRo
ZSBleHRlcm5hbCByZXNvdXJjZSBhcyBpdCB3YXMgbm90IHVzZWQuCisgICAgICAgICAgICBkZWxl
dGUgc3RyaW5nUmVzb3VyY2U7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMgV2ViQ29y
ZVN0cmluZ1Jlc291cmNlKiB0b1N0cmluZ1Jlc291cmNlKHY4OjpIYW5kbGU8djg6OlN0cmluZz4g
djhTdHJpbmcpCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICB2b2lkIHZpc2l0U3RyaW5ncyhF
eHRlcm5hbFN0cmluZ1Zpc2l0b3IqIHZpc2l0b3IpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlKj4odjhTdHJpbmctPkdldEV4dGVy
bmFsU3RyaW5nUmVzb3VyY2UoKSk7CisgICAgICAgIHZpc2l0b3ItPnZpc2l0SlNFeHRlcm5hbFN0
cmluZyhtX3BsYWluU3RyaW5nLmltcGwoKSk7CisgICAgICAgIGlmIChtX3BsYWluU3RyaW5nLmlt
cGwoKSAhPSBtX2F0b21pY1N0cmluZy5pbXBsKCkgJiYgIW1fYXRvbWljU3RyaW5nLmlzTnVsbCgp
KQorICAgICAgICAgICAgdmlzaXRvci0+dmlzaXRKU0V4dGVybmFsU3RyaW5nKG1fYXRvbWljU3Ry
aW5nLmltcGwoKSk7CiAgICAgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgLy8gQSBzaGFsbG93
IGNvcHkgb2YgdGhlIHN0cmluZy4gS2VlcHMgdGhlIHN0cmluZyBidWZmZXIgYWxpdmUgdW50aWwg
dGhlIFY4IGVuZ2luZSBnYXJiYWdlIGNvbGxlY3RzIGl0LgpAQCAtMTg4LDYgKzIwOCw3NCBAQCBw
cml2YXRlOgogI2VuZGlmCiB9OwogCisvLyB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIHY4IHN0cmlu
Z3MuIHR5cGVkZWYgdGhlbSBmb3IgY29udmVuaWVuY2UKK3R5cGVkZWYgV2ViQ29yZVN0cmluZ1Jl
c291cmNlPHY4OjpTdHJpbmc6OkV4dGVybmFsU3RyaW5nUmVzb3VyY2UsIGNvbnN0IHVpbnQxNl90
KiwgVUNoYXI+IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2Qml0OwordHlwZWRlZiBXZWJDb3JlU3Ry
aW5nUmVzb3VyY2U8djg6OlN0cmluZzo6RXh0ZXJuYWxBc2NpaVN0cmluZ1Jlc291cmNlLCBjb25z
dCBjaGFyKiwgTENoYXI+IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTdCaXQ7CisKK3RlbXBsYXRlPD4K
K2lubGluZSBjb25zdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2U3Qml0KiBXZWJDb3JlU3RyaW5nUmVz
b3VyY2U8djg6OlN0cmluZzo6RXh0ZXJuYWxBc2NpaVN0cmluZ1Jlc291cmNlLCBjb25zdCBjaGFy
KiwKKyAgICAgICAgTENoYXI+OjpnZXRSZXNvdXJjZSh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+JiB2
OFN0cmluZykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZVN0cmluZ1Jl
c291cmNlN0JpdCo+KHY4U3RyaW5nLT5HZXRFeHRlcm5hbEFzY2lpU3RyaW5nUmVzb3VyY2UoKSk7
Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBjb25zdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNkJp
dCogV2ViQ29yZVN0cmluZ1Jlc291cmNlPHY4OjpTdHJpbmc6OkV4dGVybmFsU3RyaW5nUmVzb3Vy
Y2UsIGNvbnN0IHVpbnQxNl90KiwKKyAgICAgICAgVUNoYXI+OjpnZXRSZXNvdXJjZSh2ODo6SGFu
ZGxlPHY4OjpTdHJpbmc+JiB2OFN0cmluZykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViQ29yZVN0cmluZ1Jlc291cmNlMTZCaXQqPih2OFN0cmluZy0+R2V0RXh0ZXJuYWxTdHJp
bmdSZXNvdXJjZSgpKTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIHZvaWQgV2ViQ29yZVN0cmlu
Z1Jlc291cmNlPHY4OjpTdHJpbmc6OkV4dGVybmFsQXNjaWlTdHJpbmdSZXNvdXJjZSwgY29uc3Qg
Y2hhciosIExDaGFyPjo6d3JpdGVJbnRvQnVmZmVyKAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+JiB2OFN0cmluZywgaW50IGxlbmd0aCwgTENoYXIqIGJ1ZmZlcikKK3sKKyAgICB2OFN0
cmluZy0+V3JpdGVBc2NpaShyZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIpLCAwLCBsZW5n
dGgsIHY4OjpTdHJpbmc6OldyaXRlT3B0aW9uczo6UFJFU0VSVkVfQVNDSUlfTlVMTCk7Cit9CisK
K3RlbXBsYXRlPD4KK2lubGluZSB2b2lkIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTx2ODo6U3RyaW5n
OjpFeHRlcm5hbFN0cmluZ1Jlc291cmNlLCBjb25zdCB1aW50MTZfdCosIFVDaGFyPjo6d3JpdGVJ
bnRvQnVmZmVyKAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+JiB2OFN0cmluZywgaW50
IGxlbmd0aCwgVUNoYXIqIGJ1ZmZlcikKK3sKKyAgICB2OFN0cmluZy0+V3JpdGUocmVpbnRlcnBy
ZXRfY2FzdDx1aW50MTZfdCo+KGJ1ZmZlciksIDAsIGxlbmd0aCk7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIFN0cmluZ1Jlc291cmNlLCB0eXBlbmFtZSBEYXRhVHlwZSwgdHlwZW5hbWUgQ2hhclR5cGU+
CitTdHJpbmcgV2ViQ29yZVN0cmluZ1Jlc291cmNlPFN0cmluZ1Jlc291cmNlLCBEYXRhVHlwZSwg
Q2hhclR5cGU+OjpzdHJpbmdGcm9tVjhTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiYgdjhT
dHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCkKK3sKKyAgICBB
U1NFUlQodjhTdHJpbmctPkxlbmd0aCgpID09IGxlbmd0aCk7CisKKyAgICBDaGFyVHlwZSogYnVm
ZmVyOworICAgIFN0cmluZyByZXN1bHQgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVk
KGxlbmd0aCwgYnVmZmVyKTsKKyAgICB3cml0ZUludG9CdWZmZXIodjhTdHJpbmcsIGxlbmd0aCwg
YnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTxjbGFzcyBTdHJpbmdS
ZXNvdXJjZSwgdHlwZW5hbWUgRGF0YVR5cGUsIHR5cGVuYW1lIENoYXJUeXBlPgorQXRvbWljU3Ry
aW5nIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTxTdHJpbmdSZXNvdXJjZSwgRGF0YVR5cGUsIENoYXJU
eXBlPjo6YXRvbWljU3RyaW5nRnJvbVY4U3RyaW5nKAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+JiB2OFN0cmluZywgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gQXRvbWljU3RyaW5n
KHN0cmluZ0Zyb21WOFN0cmluZyh2OFN0cmluZywgbGVuZ3RoKSk7Cit9CisKKy8vIHNwZWNpYWxp
emF0aW9uIGZvciBVQ2hhciB0aGF0IGFsbG93cyB1cyB0byB1c2UgYW4gaW5saW5lIGJ1ZmZlcgor
dGVtcGxhdGU8PgorQXRvbWljU3RyaW5nIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTx2ODo6U3RyaW5n
OjpFeHRlcm5hbFN0cmluZ1Jlc291cmNlLCBjb25zdCB1aW50MTZfdCosIFVDaGFyPjo6YXRvbWlj
U3RyaW5nRnJvbVY4U3RyaW5nKAorICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+JiB2OFN0
cmluZywgaW50IGxlbmd0aCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGlubGluZUJ1ZmZlclNp
emUgPSAxNjsKKyAgICBpZiAobGVuZ3RoIDw9IGlubGluZUJ1ZmZlclNpemUpIHsKKworICAgICAg
ICBBU1NFUlQodjhTdHJpbmctPkxlbmd0aCgpID09IGxlbmd0aCk7CisKKyAgICAgICAgVUNoYXIg
YnVmZmVyW2lubGluZUJ1ZmZlclNpemVdOworICAgICAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2Ux
NkJpdDo6d3JpdGVJbnRvQnVmZmVyKHY4U3RyaW5nLCBsZW5ndGgsIGJ1ZmZlcik7CisgICAgICAg
IHJldHVybiBBdG9taWNTdHJpbmcoYnVmZmVyLCBsZW5ndGgpOworICAgIH0KKyAgICByZXR1cm4g
QXRvbWljU3RyaW5nKHN0cmluZ0Zyb21WOFN0cmluZyh2OFN0cmluZywgbGVuZ3RoKSk7Cit9CisK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogdm9pZCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6dmlz
aXRFeHRlcm5hbFN0cmluZ3MoRXh0ZXJuYWxTdHJpbmdWaXNpdG9yKiB2aXNpdG9yKQogewpAQCAt
MTk4LDkgKzI4NiwxNyBAQCB2b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp2aXNpdEV4dGVy
bmFsU3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqIHZpc2l0bwogICAgICAgICB2aXJ0dWFs
IH5WaXNpdG9ySW1wbCgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgVmlzaXRFeHRlcm5hbFN0
cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHN0cmluZykKICAgICAgICAgewotICAgICAgICAg
ICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlKiByZXNvdXJjZSA9IHN0YXRpY19jYXN0PFdlYkNvcmVT
dHJpbmdSZXNvdXJjZSo+KHN0cmluZy0+R2V0RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZSgpKTsKLSAg
ICAgICAgICAgIGlmIChyZXNvdXJjZSkKLSAgICAgICAgICAgICAgICByZXNvdXJjZS0+dmlzaXRT
dHJpbmdzKG1fdmlzaXRvcik7CisgICAgICAgICAgICBjb25zdCBXZWJDb3JlU3RyaW5nUmVzb3Vy
Y2UxNkJpdCogcmVzb3VyY2UxNkJpdCA9IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2Qml0OjpnZXRS
ZXNvdXJjZShzdHJpbmcpOworICAgICAgICAgICAgaWYgKHJlc291cmNlMTZCaXQpIHsKKyAgICAg
ICAgICAgICAgICByZXNvdXJjZTE2Qml0LT52aXNpdFN0cmluZ3MobV92aXNpdG9yKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IFdl
YkNvcmVTdHJpbmdSZXNvdXJjZTdCaXQqIHJlc291cmNlN0JpdCA9IFdlYkNvcmVTdHJpbmdSZXNv
dXJjZTdCaXQ6OmdldFJlc291cmNlKHN0cmluZyk7CisgICAgICAgICAgICBpZiAocmVzb3VyY2U3
Qml0KSB7CisgICAgICAgICAgICAgICAgcmVzb3VyY2UxNkJpdC0+dmlzaXRTdHJpbmdzKG1fdmlz
aXRvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgcHJpdmF0ZToKICAgICAgICAgRXh0ZXJuYWxTdHJpbmdWaXNpdG9yKiBtX3Zpc2l0b3I7
CkBAIC0zMDQsNzkgKzQwMCwxMDAgQEAgdWludDMyX3QgdG9VSW50MzIodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCBib29sJiBvaykKICAgICByZXR1cm4gdWludFZhbHVlLT5WYWx1ZSgpOwog
fQogCi10ZW1wbGF0ZSA8Y2xhc3MgUz4gc3RydWN0IFN0cmluZ1RyYWl0cwordGVtcGxhdGU8dHlw
ZW5hbWUgU3RyaW5nVHlwZSwgdHlwZW5hbWUgV2ViQ29yZVN0cmluZ1Jlc291cmNlPgorc3RydWN0
IFN0cmluZ1RyYWl0cwogewotICAgIHN0YXRpYyBTIGZyb21TdHJpbmdSZXNvdXJjZShXZWJDb3Jl
U3RyaW5nUmVzb3VyY2UqIHJlc291cmNlKTsKKyAgICBzdGF0aWMgU3RyaW5nVHlwZSBmcm9tU3Ry
aW5nUmVzb3VyY2UoV2ViQ29yZVN0cmluZ1Jlc291cmNlKik7CiAKLSAgICBzdGF0aWMgUyBmcm9t
VjhTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgaW50IGxlbmd0aCk7Cisg
ICAgc3RhdGljIFN0cmluZ1R5cGUgZnJvbVY4U3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0cmluZz4m
IHY4U3RyaW5nLCBpbnQgbGVuZ3RoKTsKIH07CiAKLXRlbXBsYXRlPD4KLXN0cnVjdCBTdHJpbmdU
cmFpdHM8U3RyaW5nPgordGVtcGxhdGU8dHlwZW5hbWUgV2ViQ29yZVN0cmluZ1Jlc291cmNlPgor
c3RydWN0IFN0cmluZ1RyYWl0czxTdHJpbmcsIFdlYkNvcmVTdHJpbmdSZXNvdXJjZT4KIHsKICAg
ICBzdGF0aWMgU3RyaW5nIGZyb21TdHJpbmdSZXNvdXJjZShXZWJDb3JlU3RyaW5nUmVzb3VyY2Uq
IHJlc291cmNlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlc291cmNlLT53ZWJjb3JlU3RyaW5n
KCk7CiAgICAgfQogCi0gICAgc3RhdGljIFN0cmluZyBmcm9tVjhTdHJpbmcodjg6OkhhbmRsZTx2
ODo6U3RyaW5nPiB2OFN0cmluZywgaW50IGxlbmd0aCkKKyAgICBzdGF0aWMgU3RyaW5nIGZyb21W
OFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+JiB2OFN0cmluZywgaW50IGxlbmd0aCkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVCh2OFN0cmluZy0+TGVuZ3RoKCkgPT0gbGVuZ3RoKTsKLSAgICAg
ICAgLy8gTk9URTogYXMgb2Ygbm93LCBTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQpIHBlcmZvcm1z
IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZAotICAgICAgICAvLyBhbnl3YXksIHNvIG5vIG5l
ZWQgdG8gb3B0aW1pemUgbGlrZSB3ZSBkbyBmb3IgQXRvbWljU3RyaW5nIGJlbG93LgotICAgICAg
ICBVQ2hhciogYnVmZmVyOwotICAgICAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nOjpjcmVhdGVV
bmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKLSAgICAgICAgdjhTdHJpbmctPldyaXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihidWZmZXIpLCAwLCBsZW5ndGgpOwotICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4gV2ViQ29yZVN0cmluZ1Jlc291cmNlOjpzdHJp
bmdGcm9tVjhTdHJpbmcodjhTdHJpbmcsIGxlbmd0aCk7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8
Pgotc3RydWN0IFN0cmluZ1RyYWl0czxBdG9taWNTdHJpbmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBX
ZWJDb3JlU3RyaW5nUmVzb3VyY2U+CitzdHJ1Y3QgU3RyaW5nVHJhaXRzPEF0b21pY1N0cmluZywg
V2ViQ29yZVN0cmluZ1Jlc291cmNlPgogewogICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVN0
cmluZ1Jlc291cmNlKFdlYkNvcmVTdHJpbmdSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgewogICAg
ICAgICByZXR1cm4gcmVzb3VyY2UtPmF0b21pY1N0cmluZygpOwogICAgIH0KIAotICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgZnJvbVY4U3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJp
bmcsIGludCBsZW5ndGgpCisgICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVjhTdHJpbmcodjg6
OkhhbmRsZTx2ODo6U3RyaW5nPiYgdjhTdHJpbmcsIGludCBsZW5ndGgpCiAgICAgewotICAgICAg
ICBBU1NFUlQodjhTdHJpbmctPkxlbmd0aCgpID09IGxlbmd0aCk7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBpbnQgaW5saW5lQnVmZmVyU2l6ZSA9IDE2OwotICAgICAgICBpZiAobGVuZ3RoIDw9IGlu
bGluZUJ1ZmZlclNpemUpIHsKLSAgICAgICAgICAgIFVDaGFyIGlubGluZUJ1ZmZlcltpbmxpbmVC
dWZmZXJTaXplXTsKLSAgICAgICAgICAgIHY4U3RyaW5nLT5Xcml0ZShyZWludGVycHJldF9jYXN0
PHVpbnQxNl90Kj4oaW5saW5lQnVmZmVyKSwgMCwgbGVuZ3RoKTsKLSAgICAgICAgICAgIHJldHVy
biBBdG9taWNTdHJpbmcoaW5saW5lQnVmZmVyLCBsZW5ndGgpOwotICAgICAgICB9Ci0gICAgICAg
IFVDaGFyKiBidWZmZXI7Ci0gICAgICAgIFN0cmluZyB0bXAgPSBTdHJpbmc6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgICAgICB2OFN0cmluZy0+V3JpdGUocmVpbnRl
cnByZXRfY2FzdDx1aW50MTZfdCo+KGJ1ZmZlciksIDAsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVy
biBBdG9taWNTdHJpbmcodG1wKTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmVTdHJpbmdSZXNvdXJj
ZTo6YXRvbWljU3RyaW5nRnJvbVY4U3RyaW5nKHY4U3RyaW5nLCBsZW5ndGgpOwogICAgIH0KIH07
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmdUeXBlPgorLy8gdGhlcmUgaXMgYSBjb3JuZXIg
Y2FzZSBpbiBTdHJpbmdUb1dlYkNvcmVTdHJpbmcgd2hlcmUgYW4gOGJpdCBzdHJpbmcgY2FuIGJl
CisvLyB0cmFuc2Zvcm1lZCBpbnRvIGEgMTYgYml0IHN0cmluZyB3aGVuIHBhc3NlZCB0byB0aGUg
YXRvbWljIGNvbnN0cnVjdG9yCisvLyBhdG9taWNDb3B5RmFpbGVkIGhhbmRsZXMgdGhpcwordGVt
cGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZSwgdHlwZW5hbWUgV2ViQ29yZVN0cmluZ1Jlc291cmNl
Pgorc3RhdGljIGlubGluZSBib29sIGF0b21pY0NvcHlGYWlsZWQoU3RyaW5nVHlwZSYgc3RyaW5n
KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gdGhpcyBpcyB0aGUgb25seSBjYXNlIHdo
ZXJlIHRoZSBhdG9taWMgY29uc3RydWN0b3IgY2F1c2VzIGlzc3VlcwordGVtcGxhdGU8PgoraW5s
aW5lIGJvb2wgYXRvbWljQ29weUZhaWxlZDxBdG9taWNTdHJpbmcsIFdlYkNvcmVTdHJpbmdSZXNv
dXJjZTdCaXQ+KEF0b21pY1N0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiAhc3RyaW5nLnN0
cmluZygpLmlzOEJpdCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPgogU3Ry
aW5nVHlwZSB2OFN0cmluZ1RvV2ViQ29yZVN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4
U3RyaW5nLCBFeHRlcm5hbE1vZGUgZXh0ZXJuYWwpCiB7Ci0gICAgV2ViQ29yZVN0cmluZ1Jlc291
cmNlKiBzdHJpbmdSZXNvdXJjZSA9IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTo6dG9TdHJpbmdSZXNv
dXJjZSh2OFN0cmluZyk7Ci0gICAgaWYgKHN0cmluZ1Jlc291cmNlKQotICAgICAgICByZXR1cm4g
U3RyaW5nVHJhaXRzPFN0cmluZ1R5cGU+Ojpmcm9tU3RyaW5nUmVzb3VyY2Uoc3RyaW5nUmVzb3Vy
Y2UpOworICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBleHRlcm5hbCwgcmV0dXJuIGl0
CisgICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlMTZCaXQqIHJlc291cmNlMTZCaXQgPQorICAgICAg
ICAgICAgY29uc3RfY2FzdDxXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNkJpdCo+KFdlYkNvcmVTdHJp
bmdSZXNvdXJjZTE2Qml0OjpnZXRSZXNvdXJjZSh2OFN0cmluZykpOworICAgIGlmIChyZXNvdXJj
ZTE2Qml0KQorICAgICAgICByZXR1cm4gU3RyaW5nVHJhaXRzPFN0cmluZ1R5cGUsIFdlYkNvcmVT
dHJpbmdSZXNvdXJjZTE2Qml0Pjo6ZnJvbVN0cmluZ1Jlc291cmNlKHJlc291cmNlMTZCaXQpOwog
CisgICAgLy8gaWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGV4dGVybmFsIGFzY2lpLCByZXR1cm4g
aXQKKyAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2U3Qml0KiByZXNvdXJjZTdCaXQgPQorICAgICAg
ICAgICAgY29uc3RfY2FzdDxXZWJDb3JlU3RyaW5nUmVzb3VyY2U3Qml0Kj4oV2ViQ29yZVN0cmlu
Z1Jlc291cmNlN0JpdDo6Z2V0UmVzb3VyY2UodjhTdHJpbmcpKTsKKyAgICBpZiAocmVzb3VyY2U3
Qml0KQorICAgICAgICByZXR1cm4gU3RyaW5nVHJhaXRzPFN0cmluZ1R5cGUsIFdlYkNvcmVTdHJp
bmdSZXNvdXJjZTdCaXQ+Ojpmcm9tU3RyaW5nUmVzb3VyY2UocmVzb3VyY2U3Qml0KTsKKworICAg
IC8vIEF2b2lkIHRyeWluZyB0byBtb3JwaCBlbXB0eSBzdHJpbmdzLCBhcyB0aGV5IGRvIG5vdCBo
YXZlIGVub3VnaCByb29tIHRvIGNvbnRhaW4gdGhlIGV4dGVybmFsIHJlZmVyZW5jZS4KICAgICBp
bnQgbGVuZ3RoID0gdjhTdHJpbmctPkxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoKSB7CiAgICAg
ICAgIC8vIEF2b2lkIHRyeWluZyB0byBtb3JwaCBlbXB0eSBzdHJpbmdzLCBhcyB0aGV5IGRvIG5v
dCBoYXZlIGVub3VnaCByb29tIHRvIGNvbnRhaW4gdGhlIGV4dGVybmFsIHJlZmVyZW5jZS4KICAg
ICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmVtcHR5KCk7CiAgICAgfQogCi0gICAgU3RyaW5nVHlw
ZSByZXN1bHQoU3RyaW5nVHJhaXRzPFN0cmluZ1R5cGU+Ojpmcm9tVjhTdHJpbmcodjhTdHJpbmcs
IGxlbmd0aCkpOworICAgIC8vIGNoZWNrIGZvciBwb3RlbnRpYWwgN2JpdCBzdHJpbmdzIGFuZCBv
cHRpbWl6ZSBmb3IgdGhvc2UKKyAgICBib29sIHRyeTdCaXQgPSAhdjhTdHJpbmctPk1heUNvbnRh
aW5Ob25Bc2NpaSgpOwogCi0gICAgaWYgKGV4dGVybmFsID09IEV4dGVybmFsaXplICYmIHY4U3Ry
aW5nLT5DYW5NYWtlRXh0ZXJuYWwoKSkgewotICAgICAgICBzdHJpbmdSZXNvdXJjZSA9IG5ldyBX
ZWJDb3JlU3RyaW5nUmVzb3VyY2UocmVzdWx0KTsKLSAgICAgICAgaWYgKCF2OFN0cmluZy0+TWFr
ZUV4dGVybmFsKHN0cmluZ1Jlc291cmNlKSkgewotICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBh
IGZhaWx1cmUgZGVsZXRlIHRoZSBleHRlcm5hbCByZXNvdXJjZSBhcyBpdCB3YXMgbm90IHVzZWQu
Ci0gICAgICAgICAgICBkZWxldGUgc3RyaW5nUmVzb3VyY2U7Ci0gICAgICAgIH0KKyAgICBTdHJp
bmdUeXBlIHJlc3VsdCgKKyAgICAgICAgICAgIHRyeTdCaXQgPworICAgICAgICAgICAgICAgICAg
ICBTdHJpbmdUcmFpdHM8U3RyaW5nVHlwZSwgV2ViQ29yZVN0cmluZ1Jlc291cmNlN0JpdD46OmZy
b21WOFN0cmluZyh2OFN0cmluZywgbGVuZ3RoKSA6CisgICAgICAgICAgICAgICAgICAgIFN0cmlu
Z1RyYWl0czxTdHJpbmdUeXBlLCBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNkJpdD46OmZyb21WOFN0
cmluZyh2OFN0cmluZywgbGVuZ3RoKSk7CisKKyAgICAvLyBiYWlsIG91dCBlYXJseSBpZiB3ZSBk
b24ndCB3YW50IHRvIG9yIGNhbid0IGV4dGVybmFsaXplCisgICAgaWYgKGV4dGVybmFsICE9IEV4
dGVybmFsaXplIHx8ICF2OFN0cmluZy0+Q2FuTWFrZUV4dGVybmFsKCkpCisgICAgICAgIHJldHVy
biByZXN1bHQ7CisKKyAgICAvLyBjaGVjayBmb3IgYXRvbWljIGNvcHkgZmFpbHVyZQorICAgIGlm
ICh0cnk3Qml0ICYmICFhdG9taWNDb3B5RmFpbGVkPFN0cmluZ1R5cGUsIFdlYkNvcmVTdHJpbmdS
ZXNvdXJjZTdCaXQ+KHJlc3VsdCkpIHsKKyAgICAgICAgLy8gc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQg
YSA3Yml0IHN0cmluZworICAgICAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2U3Qml0OjpleHRlcm5h
bGl6ZVN0cmluZzxTdHJpbmdUeXBlPihyZXN1bHQsIHY4U3RyaW5nKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNkJpdDo6ZXh0ZXJuYWxpemVTdHJpbmc8U3Ry
aW5nVHlwZT4ocmVzdWx0LCB2OFN0cmluZyk7CiAgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KICAgICAKQEAgLTQ0NSw2ICs1NjIsNyBAQCBBdG9taWNTdHJpbmcgdjhOb25TdHJpbmdWYWx1
ZVRvQXRvbWljV2ViQ29yZVN0cmluZyh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb2JqZWN0KQogICAg
IHJldHVybiBBdG9taWNTdHJpbmcodjhOb25TdHJpbmdWYWx1ZVRvV2ViQ29yZVN0cmluZyhvYmpl
Y3QpKTsKIH0KIAordGVtcGxhdGU8Y2xhc3MgV2ViQ29yZVN0cmluZ1Jlc291cmNlPgogc3RhdGlj
IHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBtYWtlRXh0ZXJuYWxTdHJpbmcoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiB7CiAgICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlKiBzdHJpbmdSZXNvdXJjZSA9IG5l
dyBXZWJDb3JlU3RyaW5nUmVzb3VyY2Uoc3RyaW5nKTsKQEAgLTQ1NSw2ICs1NzMsMTcgQEAgc3Rh
dGljIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBtYWtlRXh0ZXJuYWxTdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiAgICAgcmV0dXJuIG5ld1N0cmluZzsKIH0KIAorc3RhdGljIHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBtYWtlRXh0ZXJuYWxTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7Cisg
ICAgLy8gTkI6IGNvbnRhaW5zT25seUFTQ0lJIGFzc3VtZXMgdGhhdCB0aGUgc3RyaW5nIGlzIGFz
Y2lpLCB3aGljaCBpcyB0aGUgY29tbW9uIGNhc2UKKyAgICAvLyBidXQgbGVhZHMgdG8gcG9vciBw
ZXJmb3JtYW5jZSBvbiBub24tYXNjaWkgOC1iaXQgc3RyaW5ncworICAgIGJvb2wgaXNBc2NpaSA9
IHN0cmluZy5pczhCaXQoKSAmJiBzdHJpbmcuY29udGFpbnNPbmx5QVNDSUkoKTsKKworICAgIHJl
dHVybiBpc0FzY2lpID8KKyAgICAgICAgICAgIG1ha2VFeHRlcm5hbFN0cmluZzxXZWJDb3JlU3Ry
aW5nUmVzb3VyY2U3Qml0PihzdHJpbmcpIDoKKyAgICAgICAgICAgIG1ha2VFeHRlcm5hbFN0cmlu
ZzxXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNkJpdD4oc3RyaW5nKTsKK30KKwogc3RhdGljIHZvaWQg
Y2FjaGVkU3RyaW5nQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB3cmFwcGVyLCB2
b2lkKiBwYXJhbWV0ZXIpCiB7CiAgICAgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCA9IHN0YXRpY19j
YXN0PFN0cmluZ0ltcGwqPihwYXJhbWV0ZXIpOwo=
</data>
<flag name="review"
          id="163205"
          type_id="1"
          status="-"
          setter="haraken"
    />
    <flag name="commit-queue"
          id="163213"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163109</attachid>
            <date>2012-09-10 06:12:33 -0700</date>
            <delta_ts>2012-09-11 04:33:58 -0700</delta_ts>
            <desc>patch for perfalizer</desc>
            <filename>perf_test_patch</filename>
            <type>text/plain</type>
            <size>13695</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKaW5k
ZXggMzMwMjhhNy4uNTQzZWM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhQZXJJc29sYXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQZXJJc29sYXRlRGF0YS5jcHAKQEAgLTk2LDcgKzk2LDEyIEBAIHZvaWQgVjhQZXJJc29sYXRl
RGF0YTo6dmlzaXRFeHRlcm5hbFN0cmluZ3MoRXh0ZXJuYWxTdHJpbmdWaXNpdG9yKiB2aXNpdG9y
KQogICAgICAgICB2aXJ0dWFsIH5WaXNpdG9ySW1wbCgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZv
aWQgVmlzaXRFeHRlcm5hbFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHN0cmluZykKICAg
ICAgICAgewotICAgICAgICAgICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlKiByZXNvdXJjZSA9IHN0
YXRpY19jYXN0PFdlYkNvcmVTdHJpbmdSZXNvdXJjZSo+KHN0cmluZy0+R2V0RXh0ZXJuYWxTdHJp
bmdSZXNvdXJjZSgpKTsKKyAgICAgICAgICAgIFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UqIHJl
c291cmNlID0gV2ViQ29yZVN0cmluZ1Jlc291cmNlMTY6OnRvU3RyaW5nUmVzb3VyY2Uoc3RyaW5n
KTsKKyAgICAgICAgICAgIGlmIChyZXNvdXJjZSkgeworICAgICAgICAgICAgICAgIHJlc291cmNl
LT52aXNpdFN0cmluZ3MobV92aXNpdG9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXNvdXJjZSA9IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTg6
OnRvU3RyaW5nUmVzb3VyY2Uoc3RyaW5nKTsKICAgICAgICAgICAgIGlmIChyZXNvdXJjZSkKICAg
ICAgICAgICAgICAgICByZXNvdXJjZS0+dmlzaXRTdHJpbmdzKG1fdmlzaXRvcik7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4U3RyaW5nUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhTdHJpbmdSZXNvdXJjZS5jcHAK
aW5kZXggYzdjOTY0ZC4uYjhkZTY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhTdHJpbmdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhTdHJpbmdSZXNvdXJjZS5jcHAKQEAgLTMwLDc0ICszMCwxMzEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi10ZW1wbGF0ZSA8Y2xhc3MgUz4gc3RydWN0IFN0cmluZ1RyYWl0cyB7Ci0g
ICAgc3RhdGljIFMgZnJvbVN0cmluZ1Jlc291cmNlKFdlYkNvcmVTdHJpbmdSZXNvdXJjZSopOwor
dGVtcGxhdGU8Y2xhc3MgUz4gc3RydWN0IFN0cmluZ1RyYWl0cyB7CisgICAgc3RhdGljIFMgZnJv
bVN0cmluZ1Jlc291cmNlKFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UqKTsKKyAgICBzdGF0aWMg
V2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSogdHJ5Q3JlYXRlUmVzb3VyY2U4KFMmIHN0cmluZywg
Ym9vbCYgY29udmVydGVkKTsKKyAgICB0ZW1wbGF0ZTxib29sIGFzY2lpPgogICAgIHN0YXRpYyBT
IGZyb21WOFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+LCBpbnQpOwogfTsKIAogdGVtcGxh
dGU8Pgogc3RydWN0IFN0cmluZ1RyYWl0czxTdHJpbmc+IHsKLSAgICBzdGF0aWMgU3RyaW5nIGZy
b21TdHJpbmdSZXNvdXJjZShXZWJDb3JlU3RyaW5nUmVzb3VyY2UqIHJlc291cmNlKQorICAgIGlu
bGluZSBzdGF0aWMgU3RyaW5nIGZyb21TdHJpbmdSZXNvdXJjZShXZWJDb3JlU3RyaW5nUmVzb3Vy
Y2VCYXNlKiByZXNvdXJjZSkKICAgICB7CiAgICAgICAgIHJldHVybiByZXNvdXJjZS0+d2ViY29y
ZVN0cmluZygpOwogICAgIH0KIAotICAgIHN0YXRpYyBTdHJpbmcgZnJvbVY4U3RyaW5nKHY4OjpI
YW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcsIGludCBsZW5ndGgpCisgICAgaW5saW5lIHN0YXRp
YyBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKiB0cnlDcmVhdGVSZXNvdXJjZTgoU3RyaW5nJiBz
dHJpbmcsIGJvb2wmIGNvbnZlcnRlZCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh2OFN0cmluZy0+
TGVuZ3RoKCkgPT0gbGVuZ3RoKTsKLSAgICAgICAgLy8gTk9URTogYXMgb2Ygbm93LCBTdHJpbmco
Y29uc3QgVUNoYXIqLCBpbnQpIHBlcmZvcm1zIFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZAot
ICAgICAgICAvLyBhbnl3YXksIHNvIG5vIG5lZWQgdG8gb3B0aW1pemUgbGlrZSB3ZSBkbyBmb3Ig
QXRvbWljU3RyaW5nIGJlbG93LgotICAgICAgICBVQ2hhciogYnVmZmVyOwotICAgICAgICBTdHJp
bmcgcmVzdWx0ID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsK
LSAgICAgICAgdjhTdHJpbmctPldyaXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihidWZm
ZXIpLCAwLCBsZW5ndGgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBjb252ZXJ0
ZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2U4KHN0
cmluZyk7CiAgICAgfQorICAgIHRlbXBsYXRlPGJvb2wgYXNjaWk+CisgICAgc3RhdGljIFN0cmlu
ZyBmcm9tVjhTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiwgaW50KTsKIH07CiAKIHRlbXBs
YXRlPD4KIHN0cnVjdCBTdHJpbmdUcmFpdHM8QXRvbWljU3RyaW5nPiB7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBmcm9tU3RyaW5nUmVzb3VyY2UoV2ViQ29yZVN0cmluZ1Jlc291cmNlKiByZXNv
dXJjZSkKKyAgICBpbmxpbmUgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tU3RyaW5nUmVzb3VyY2Uo
V2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSogcmVzb3VyY2UpCiAgICAgewogICAgICAgICByZXR1
cm4gcmVzb3VyY2UtPmF0b21pY1N0cmluZygpOwogICAgIH0KLQotICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcgZnJvbVY4U3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcsIGludCBs
ZW5ndGgpCisgICAgaW5saW5lIHN0YXRpYyBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKiB0cnlD
cmVhdGVSZXNvdXJjZTgoQXRvbWljU3RyaW5nJiBzdHJpbmcsIGJvb2wmIGNvbnZlcnRlZCkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVCh2OFN0cmluZy0+TGVuZ3RoKCkgPT0gbGVuZ3RoKTsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IGludCBpbmxpbmVCdWZmZXJTaXplID0gMTY7Ci0gICAgICAgIGlmIChs
ZW5ndGggPD0gaW5saW5lQnVmZmVyU2l6ZSkgewotICAgICAgICAgICAgVUNoYXIgaW5saW5lQnVm
ZmVyW2lubGluZUJ1ZmZlclNpemVdOwotICAgICAgICAgICAgdjhTdHJpbmctPldyaXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbmxpbmVCdWZmZXIpLCAwLCBsZW5ndGgpOwotICAgICAg
ICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhpbmxpbmVCdWZmZXIsIGxlbmd0aCk7CisgICAgICAg
IGlmIChzdHJpbmcuc3RyaW5nKCkuaXM4Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnZlcnRlZCA9
IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2U4KHN0
cmluZyk7CiAgICAgICAgIH0KLSAgICAgICAgVUNoYXIqIGJ1ZmZlcjsKLSAgICAgICAgU3RyaW5n
IHN0cmluZyA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7Ci0g
ICAgICAgIHY4U3RyaW5nLT5Xcml0ZShyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oYnVmZmVy
KSwgMCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhzdHJpbmcpOworICAg
ICAgICBjb252ZXJ0ZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gbmV3IFdlYkNvcmVTdHJpbmdS
ZXNvdXJjZTE2KHN0cmluZyk7CiAgICAgfQorICAgIHRlbXBsYXRlPGJvb2wgYXNjaWk+CisgICAg
c3RhdGljIEF0b21pY1N0cmluZyBmcm9tVjhTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiwg
aW50KTsKIH07CiAKK3RlbXBsYXRlPD4KK1N0cmluZyBTdHJpbmdUcmFpdHM8U3RyaW5nPjo6ZnJv
bVY4U3RyaW5nPGZhbHNlPih2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nLCBpbnQgbGVu
Z3RoKQoreworICAgIEFTU0VSVCh2OFN0cmluZy0+TGVuZ3RoKCkgPT0gbGVuZ3RoKTsKKyAgICBV
Q2hhciogYnVmZmVyOworICAgIFN0cmluZyByZXN1bHQgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQobGVuZ3RoLCBidWZmZXIpOworICAgIHY4U3RyaW5nLT5Xcml0ZShyZWludGVycHJldF9j
YXN0PHVpbnQxNl90Kj4oYnVmZmVyKSwgMCwgbGVuZ3RoKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit0ZW1wbGF0ZTw+CitBdG9taWNTdHJpbmcgU3RyaW5nVHJhaXRzPEF0b21pY1N0cmluZz46
OmZyb21WOFN0cmluZzxmYWxzZT4odjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgaW50
IGxlbmd0aCkKK3sKKyAgICBBU1NFUlQodjhTdHJpbmctPkxlbmd0aCgpID09IGxlbmd0aCk7Cisg
ICAgc3RhdGljIGNvbnN0IGludCBpbmxpbmVCdWZmZXJTaXplID0gMTY7CisgICAgaWYgKGxlbmd0
aCA8PSBpbmxpbmVCdWZmZXJTaXplKSB7CisgICAgICAgIFVDaGFyIGlubGluZUJ1ZmZlcltpbmxp
bmVCdWZmZXJTaXplXTsKKyAgICAgICAgdjhTdHJpbmctPldyaXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDE2X3QqPihpbmxpbmVCdWZmZXIpLCAwLCBsZW5ndGgpOworICAgICAgICByZXR1cm4gQXRv
bWljU3RyaW5nKGlubGluZUJ1ZmZlciwgbGVuZ3RoKTsKKyAgICB9CisgICAgVUNoYXIqIGJ1ZmZl
cjsKKyAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0
aCwgYnVmZmVyKTsKKyAgICB2OFN0cmluZy0+V3JpdGUocmVpbnRlcnByZXRfY2FzdDx1aW50MTZf
dCo+KGJ1ZmZlciksIDAsIGxlbmd0aCk7CisgICAgcmV0dXJuIEF0b21pY1N0cmluZyhzdHJpbmcp
OworfQorCit0ZW1wbGF0ZTw+CitTdHJpbmcgU3RyaW5nVHJhaXRzPFN0cmluZz46OmZyb21WOFN0
cmluZzx0cnVlPih2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nLCBpbnQgbGVuZ3RoKQor
eworICAgIEFTU0VSVCh2OFN0cmluZy0+TGVuZ3RoKCkgPT0gbGVuZ3RoKTsKKyAgICBMQ2hhciog
YnVmZmVyOworICAgIFN0cmluZyByZXN1bHQgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
bGVuZ3RoLCBidWZmZXIpOworICAgIHY4U3RyaW5nLT5Xcml0ZUFzY2lpKHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGJ1ZmZlciksIDAsIGxlbmd0aCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dGVtcGxhdGU8PgoraW5saW5lIEF0b21pY1N0cmluZyBTdHJpbmdUcmFpdHM8QXRvbWljU3RyaW5n
Pjo6ZnJvbVY4U3RyaW5nPHRydWU+KHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcsIGlu
dCBsZW5ndGgpCit7CisgICAgLy8gRklYTUU6IFRoZXJlIGlzIG5vIGlubGluZSBmYXN0IHBhdGgg
Zm9yIDggYml0IGF0b21pYyBzdHJpbmdzLgorICAgIHJldHVybiBBdG9taWNTdHJpbmcoU3RyaW5n
VHJhaXRzPFN0cmluZz46OmZyb21WOFN0cmluZzx0cnVlPih2OFN0cmluZywgbGVuZ3RoKSk7Cit9
CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmdUeXBlPgogU3RyaW5nVHlwZSB2OFN0cmluZ1Rv
V2ViQ29yZVN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nLCBFeHRlcm5hbE1v
ZGUgZXh0ZXJuYWwpCiB7Ci0gICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlKiBzdHJpbmdSZXNvdXJj
ZSA9IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTo6dG9TdHJpbmdSZXNvdXJjZSh2OFN0cmluZyk7Ci0g
ICAgaWYgKHN0cmluZ1Jlc291cmNlKQotICAgICAgICByZXR1cm4gU3RyaW5nVHJhaXRzPFN0cmlu
Z1R5cGU+Ojpmcm9tU3RyaW5nUmVzb3VyY2Uoc3RyaW5nUmVzb3VyY2UpOworICAgIHsKKyAgICAg
ICAgLy8gRklYTUU6IE5lZWQgYSBzaW5nbGUgY2FsbCBmb3IgdGhpcyBpbiB2OCBhcGkuCisgICAg
ICAgIFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UqIHN0cmluZ1Jlc291cmNlID0gV2ViQ29yZVN0
cmluZ1Jlc291cmNlMTY6OnRvU3RyaW5nUmVzb3VyY2UodjhTdHJpbmcpOworICAgICAgICBpZiAo
IXN0cmluZ1Jlc291cmNlKQorICAgICAgICAgICAgc3RyaW5nUmVzb3VyY2UgPSBXZWJDb3JlU3Ry
aW5nUmVzb3VyY2U4Ojp0b1N0cmluZ1Jlc291cmNlKHY4U3RyaW5nKTsKKyAgICAgICAgaWYgKHN0
cmluZ1Jlc291cmNlKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1RyYWl0czxTdHJpbmdUeXBl
Pjo6ZnJvbVN0cmluZ1Jlc291cmNlKHN0cmluZ1Jlc291cmNlKTsKKyAgICB9CiAKICAgICBpbnQg
bGVuZ3RoID0gdjhTdHJpbmctPkxlbmd0aCgpOwotICAgIGlmICghbGVuZ3RoKQorICAgIGlmIChV
TkxJS0VMWSghbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygiIik7CiAKLSAgICBTdHJp
bmdUeXBlIHJlc3VsdChTdHJpbmdUcmFpdHM8U3RyaW5nVHlwZT46OmZyb21WOFN0cmluZyh2OFN0
cmluZywgbGVuZ3RoKSk7Ci0KLSAgICBpZiAoZXh0ZXJuYWwgPT0gRXh0ZXJuYWxpemUgJiYgdjhT
dHJpbmctPkNhbk1ha2VFeHRlcm5hbCgpKSB7Ci0gICAgICAgIHN0cmluZ1Jlc291cmNlID0gbmV3
IFdlYkNvcmVTdHJpbmdSZXNvdXJjZShyZXN1bHQpOwotICAgICAgICBpZiAoIXY4U3RyaW5nLT5N
YWtlRXh0ZXJuYWwoc3RyaW5nUmVzb3VyY2UpKSB7Ci0gICAgICAgICAgICAvLyBJbiBjYXNlIG9m
IGEgZmFpbHVyZSBkZWxldGUgdGhlIGV4dGVybmFsIHJlc291cmNlIGFzIGl0IHdhcyBub3QgdXNl
ZC4KLSAgICAgICAgICAgIGRlbGV0ZSBzdHJpbmdSZXNvdXJjZTsKKyAgICBpZiAodjhTdHJpbmct
Pk1heUNvbnRhaW5Ob25Bc2NpaSgpKSB7CisgICAgICAgIFN0cmluZ1R5cGUgcmVzdWx0KFN0cmlu
Z1RyYWl0czxTdHJpbmdUeXBlPjo6dGVtcGxhdGUgZnJvbVY4U3RyaW5nPGZhbHNlPih2OFN0cmlu
ZywgbGVuZ3RoKSk7CisgICAgICAgIGlmIChleHRlcm5hbCA9PSBFeHRlcm5hbGl6ZSAmJiB2OFN0
cmluZy0+Q2FuTWFrZUV4dGVybmFsKCkpIHsKKyAgICAgICAgICAgIFdlYkNvcmVTdHJpbmdSZXNv
dXJjZTE2KiBzdHJpbmdSZXNvdXJjZSA9IG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNihyZXN1
bHQpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF2OFN0cmluZy0+TWFrZUV4dGVybmFsKHN0
cmluZ1Jlc291cmNlKSkpCisgICAgICAgICAgICAgICAgZGVsZXRlIHN0cmluZ1Jlc291cmNlOwog
ICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGVsc2UgeworICAg
ICAgICBTdHJpbmdUeXBlIHJlc3VsdChTdHJpbmdUcmFpdHM8U3RyaW5nVHlwZT46OnRlbXBsYXRl
IGZyb21WOFN0cmluZzx0cnVlPih2OFN0cmluZywgbGVuZ3RoKSk7CisgICAgICAgIGlmIChleHRl
cm5hbCA9PSBFeHRlcm5hbGl6ZSAmJiB2OFN0cmluZy0+Q2FuTWFrZUV4dGVybmFsKCkpIHsKKyAg
ICAgICAgICAgIGJvb2wgY29udmVydGVkVG8xNkJpdHM7CisgICAgICAgICAgICBXZWJDb3JlU3Ry
aW5nUmVzb3VyY2VCYXNlKiBzdHJpbmdSZXNvdXJjZSA9IFN0cmluZ1RyYWl0czxTdHJpbmdUeXBl
Pjo6dHJ5Q3JlYXRlUmVzb3VyY2U4KHJlc3VsdCwgY29udmVydGVkVG8xNkJpdHMpOworICAgICAg
ICAgICAgYm9vbCBleHRlcm5hbGl6ZWQ7CisgICAgICAgICAgICBpZiAoTElLRUxZKCFjb252ZXJ0
ZWRUbzE2Qml0cykpCisgICAgICAgICAgICAgICAgZXh0ZXJuYWxpemVkID0gdjhTdHJpbmctPk1h
a2VFeHRlcm5hbChzdGF0aWNfY2FzdDxXZWJDb3JlU3RyaW5nUmVzb3VyY2U4Kj4oc3RyaW5nUmVz
b3VyY2UpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBleHRlcm5hbGl6ZWQg
PSB2OFN0cmluZy0+TWFrZUV4dGVybmFsKHN0YXRpY19jYXN0PFdlYkNvcmVTdHJpbmdSZXNvdXJj
ZTE2Kj4oc3RyaW5nUmVzb3VyY2UpKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSghZXh0ZXJu
YWxpemVkKSkKKyAgICAgICAgICAgICAgICBkZWxldGUgc3RyaW5nUmVzb3VyY2U7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKIH0K
ICAgICAKIC8vIEV4cGxpY2l0bHkgaW5zdGFudGlhdGUgdGhlIGFib3ZlIHRlbXBsYXRlIHdpdGgg
dGhlIGV4cGVjdGVkIHBhcmFtZXRlcml6YXRpb25zLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4VmFsdWVDYWNoZS5jcHAKaW5kZXggMWMyNTEwNi4uNjExZTliYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuY3BwCkBAIC0zMyw3ICszMywxNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2ODo6TG9jYWw8djg6OlN0cmluZz4gbWFrZUV4
dGVybmFsU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIFdlYkNvcmVTdHJpbmdS
ZXNvdXJjZSogc3RyaW5nUmVzb3VyY2UgPSBuZXcgV2ViQ29yZVN0cmluZ1Jlc291cmNlKHN0cmlu
Zyk7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSAmJiBzdHJpbmcuY29udGFpbnNPbmx5QVNDSUko
KSkgeworICAgICAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2U4KiBzdHJpbmdSZXNvdXJjZSA9IG5l
dyBXZWJDb3JlU3RyaW5nUmVzb3VyY2U4KHN0cmluZyk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuZXdTdHJpbmcgPSB2ODo6U3RyaW5nOjpOZXdFeHRlcm5hbChzdHJpbmdSZXNvdXJj
ZSk7CisgICAgICAgIGlmIChuZXdTdHJpbmcuSXNFbXB0eSgpKQorICAgICAgICAgICAgZGVsZXRl
IHN0cmluZ1Jlc291cmNlOworICAgICAgICByZXR1cm4gbmV3U3RyaW5nOworICAgIH0KKworICAg
IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2KiBzdHJpbmdSZXNvdXJjZSA9IG5ldyBXZWJDb3JlU3Ry
aW5nUmVzb3VyY2UxNihzdHJpbmcpOwogICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuZXdTdHJp
bmcgPSB2ODo6U3RyaW5nOjpOZXdFeHRlcm5hbChzdHJpbmdSZXNvdXJjZSk7CiAgICAgaWYgKG5l
d1N0cmluZy5Jc0VtcHR5KCkpCiAgICAgICAgIGRlbGV0ZSBzdHJpbmdSZXNvdXJjZTsKQEAgLTk1
LDcgKzEwMyw3IEBAIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBTdHJpbmdDYWNoZTo6djhFeHRlcm5h
bFN0cmluZ1Nsb3coU3RyaW5nSW1wbCogc3RyaW5nSW1wbCwKICAgICByZXR1cm4gbmV3U3RyaW5n
OwogfQogCi12b2lkIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTo6dmlzaXRTdHJpbmdzKEV4dGVybmFs
U3RyaW5nVmlzaXRvciogdmlzaXRvcikKK3ZvaWQgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZTo6
dmlzaXRTdHJpbmdzKEV4dGVybmFsU3RyaW5nVmlzaXRvciogdmlzaXRvcikKIHsKICAgICB2aXNp
dG9yLT52aXNpdEpTRXh0ZXJuYWxTdHJpbmcobV9wbGFpblN0cmluZy5pbXBsKCkpOwogICAgIGlm
IChtX3BsYWluU3RyaW5nLmltcGwoKSAhPSBtX2F0b21pY1N0cmluZy5pbXBsKCkgJiYgIW1fYXRv
bWljU3RyaW5nLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhWYWx1ZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2Fj
aGUuaAppbmRleCBmMjE2MDYwLi44Njk0YjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFZhbHVlQ2FjaGUuaApAQCAtNzMsOSArNzMsOSBAQCBjb25zdCBpbnQgbnVtYmVyT2ZDYWNo
ZWRTbWFsbEludGVnZXJzID0gNjQ7CiAKIC8vIFdlYkNvcmVTdHJpbmdSZXNvdXJjZSBpcyBhIGhl
bHBlciBjbGFzcyBmb3IgdjhFeHRlcm5hbFN0cmluZy4gSXQgaXMgdXNlZAogLy8gdG8gbWFuYWdl
IHRoZSBsaWZlLWN5Y2xlIG9mIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBvZiB0aGUgZXh0ZXJuYWwg
c3RyaW5nLgotY2xhc3MgV2ViQ29yZVN0cmluZ1Jlc291cmNlIDogcHVibGljIHY4OjpTdHJpbmc6
OkV4dGVybmFsU3RyaW5nUmVzb3VyY2UgeworY2xhc3MgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFz
ZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViQ29yZVN0cmluZ1Jlc291cmNlKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQorICAgIGlubGluZSBleHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2VC
YXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICA6IG1fcGxhaW5TdHJpbmcoc3RyaW5n
KQogICAgIHsKICNpZm5kZWYgTkRFQlVHCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgdjg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KDIgKiBzdHJp
bmcubGVuZ3RoKCkpOwogICAgIH0KIAotICAgIGV4cGxpY2l0IFdlYkNvcmVTdHJpbmdSZXNvdXJj
ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKKyAgICBpbmxpbmUgZXhwbGljaXQgV2ViQ29y
ZVN0cmluZ1Jlc291cmNlQmFzZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKICAgICAgICAg
OiBtX3BsYWluU3RyaW5nKHN0cmluZy5zdHJpbmcoKSkKICAgICAgICAgLCBtX2F0b21pY1N0cmlu
ZyhzdHJpbmcpCiAgICAgewpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHY4OjpW
ODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSgyICogc3RyaW5nLmxlbmd0
aCgpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5XZWJDb3JlU3RyaW5nUmVzb3VyY2UoKQorICAg
IHZpcnR1YWwgfldlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UoKQogICAgIHsKICNpZm5kZWYgTkRF
QlVHCiAgICAgICAgIEFTU0VSVChtX3RocmVhZElkID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsK
QEAgLTEwNywxMyArMTA3LDYgQEAgcHVibGljOgogICAgICAgICB2ODo6Vjg6OkFkanVzdEFtb3Vu
dE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkocmVkdWNlZEV4dGVybmFsTWVtb3J5KTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIGNvbnN0IHVpbnQxNl90KiBkYXRhKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4obV9wbGFpblN0cmlu
Zy5pbXBsKCktPmNoYXJhY3RlcnMoKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBzaXplX3QgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9wbGFpblN0cmluZy5pbXBsKCktPmxlbmd0aCgpOyB9Ci0K
ICAgICBTdHJpbmcgd2ViY29yZVN0cmluZygpIHsgcmV0dXJuIG1fcGxhaW5TdHJpbmc7IH0KIAog
ICAgIEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmcoKQpAQCAtMTMyLDEyICsxMjUsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHZpc2l0U3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqKTsKIAot
ICAgIHN0YXRpYyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UqIHRvU3RyaW5nUmVzb3VyY2Uodjg6Okhh
bmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxXZWJDb3JlU3RyaW5nUmVzb3VyY2UqPih2OFN0cmluZy0+R2V0RXh0ZXJuYWxTdHJpbmdS
ZXNvdXJjZSgpKTsKLSAgICB9Ci0KLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgLy8gQSBzaGFs
bG93IGNvcHkgb2YgdGhlIHN0cmluZy4gS2VlcHMgdGhlIHN0cmluZyBidWZmZXIgYWxpdmUgdW50
aWwgdGhlIFY4IGVuZ2luZSBnYXJiYWdlIGNvbGxlY3RzIGl0LgogICAgIFN0cmluZyBtX3BsYWlu
U3RyaW5nOwogICAgIC8vIElmIHRoaXMgc3RyaW5nIGlzIGF0b21pYyBvciBoYXMgYmVlbiBtYWRl
IGF0b21pYyBlYXJsaWVyIHRoZQpAQCAtMTQ3LDExICsxMzUsNDggQEAgcHJpdmF0ZToKICAgICAv
LyBpbnRvIHRoYXQgc3RyaW5nLgogICAgIEF0b21pY1N0cmluZyBtX2F0b21pY1N0cmluZzsKIAor
cHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIG1fdGhy
ZWFkSWQ7CiAjZW5kaWYKIH07CiAKK2NsYXNzIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2OiBwdWJs
aWMgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSwgcHVibGljIHY4OjpTdHJpbmc6OkV4dGVybmFs
U3RyaW5nUmVzb3VyY2UgeworcHVibGljOgorICAgIGV4cGxpY2l0IGlubGluZSBXZWJDb3JlU3Ry
aW5nUmVzb3VyY2UxNihjb25zdCBTdHJpbmcmIHN0cmluZyk6IFdlYkNvcmVTdHJpbmdSZXNvdXJj
ZUJhc2Uoc3RyaW5nKSB7fQorICAgIGV4cGxpY2l0IGlubGluZSBXZWJDb3JlU3RyaW5nUmVzb3Vy
Y2UxNihjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZyk6IFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJh
c2Uoc3RyaW5nKSB7fQorCisgICAgdmlydHVhbCBjb25zdCB1aW50MTZfdCogZGF0YSgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+
KG1fcGxhaW5TdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzKCkpOworICAgIH0KKworICAgIHZpcnR1
YWwgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5TdHJpbmcuaW1wbCgpLT5s
ZW5ndGgoKTsgfQorCisgICAgc3RhdGljIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2KiB0b1N0cmlu
Z1Jlc291cmNlKHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcpCisgICAgeworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlMTYqPih2OFN0cmluZy0+
R2V0RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZSgpKTsKKyAgICB9Cit9OworCitjbGFzcyBXZWJDb3Jl
U3RyaW5nUmVzb3VyY2U4OiBwdWJsaWMgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSwgcHVibGlj
IHY4OjpTdHJpbmc6OkV4dGVybmFsQXNjaWlTdHJpbmdSZXNvdXJjZSB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgaW5saW5lIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTgoY29uc3QgU3RyaW5nJiBzdHJp
bmcpOiBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKHN0cmluZykge30KKyAgICBleHBsaWNpdCBp
bmxpbmUgV2ViQ29yZVN0cmluZ1Jlc291cmNlOChjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZyk6
IFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2Uoc3RyaW5nKSB7fQorCisgICAgdmlydHVhbCBjb25z
dCBjaGFyKiBkYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihtX3BsYWluU3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVyczgoKSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9wbGFp
blN0cmluZy5pbXBsKCktPmxlbmd0aCgpOyB9CisKKyAgICBzdGF0aWMgV2ViQ29yZVN0cmluZ1Jl
c291cmNlOCogdG9TdHJpbmdSZXNvdXJjZSh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5n
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNl
OCo+KHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTgqPih2OFN0cmluZy0+
R2V0RXh0ZXJuYWxBc2NpaVN0cmluZ1Jlc291cmNlKCkpKTsKKyAgICB9Cit9OworCiBjbGFzcyBJ
bnRlZ2VyQ2FjaGUgewogcHVibGljOgogICAgICBJbnRlZ2VyQ2FjaGUoKSA6IG1faW5pdGlhbGl6
ZWQoZmFsc2UpIHsgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163333</attachid>
            <date>2012-09-11 04:33:58 -0700</date>
            <delta_ts>2012-10-17 08:02:59 -0700</delta_ts>
            <desc>perfalizer patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15899</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKaW5k
ZXggYTdmYzhkNi4uYWQ0MThkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhQZXJJc29sYXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQZXJJc29sYXRlRGF0YS5jcHAKQEAgLTEwMyw3ICsxMDMsMTIgQEAgdm9pZCBWOFBlcklzb2xh
dGVEYXRhOjp2aXNpdEV4dGVybmFsU3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqIHZpc2l0
b3IpCiAgICAgICAgIHZpcnR1YWwgflZpc2l0b3JJbXBsKCkgeyB9CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBWaXNpdEV4dGVybmFsU3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0cmluZz4gc3RyaW5nKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2UqIHJlc291cmNlID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlKj4oc3RyaW5nLT5HZXRFeHRlcm5hbFN0
cmluZ1Jlc291cmNlKCkpOworICAgICAgICAgICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSog
cmVzb3VyY2UgPSBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNjo6dG9TdHJpbmdSZXNvdXJjZShzdHJp
bmcpOworICAgICAgICAgICAgaWYgKHJlc291cmNlKSB7CisgICAgICAgICAgICAgICAgcmVzb3Vy
Y2UtPnZpc2l0U3RyaW5ncyhtX3Zpc2l0b3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc291cmNlID0gV2ViQ29yZVN0cmluZ1Jlc291cmNl
ODo6dG9TdHJpbmdSZXNvdXJjZShzdHJpbmcpOwogICAgICAgICAgICAgaWYgKHJlc291cmNlKQog
ICAgICAgICAgICAgICAgIHJlc291cmNlLT52aXNpdFN0cmluZ3MobV92aXNpdG9yKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhTdHJpbmdSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFN0cmluZ1Jlc291cmNlLmNw
cAppbmRleCBjN2M5NjRkLi5jMjZmMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFN0cmluZ1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFN0cmluZ1Jlc291cmNlLmNwcApAQCAtMzAsNzIgKzMwLDE1MyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlIDxjbGFzcyBTPiBzdHJ1Y3QgU3RyaW5nVHJhaXRzIHsK
LSAgICBzdGF0aWMgUyBmcm9tU3RyaW5nUmVzb3VyY2UoV2ViQ29yZVN0cmluZ1Jlc291cmNlKik7
CisvLyBUT0RPIE1lcmdlIHRoaXMgaW50byBWOCBiZWZvcmUgbWVyZ2luZyBwYXRjaC4KK3N0YXRp
YyBjb25zdCBpbnQga0V4dGVybmFsQXNjaWlSZXByZXNlbnRhdGlvblRhZyA9IDB4MDY7CisKKy8v
IFRPRE8gTWVyZ2UgdGhpcyBpbnRvIFY4IGJlZm9yZSBtZXJnaW5nIHBhdGNoLgorZW51bSBFeHRl
cm5hbFN0cmluZ1R5cGUgeworICAgIGtOb3RFeHRlcm5hbFN0cmluZ1R5cGUgPSAwLCBrRXh0ZXJu
YWxBc2NpaVN0cmluZ1R5cGUgPSAweDA2LCBrRXh0ZXJuYWxUd29CeXRlU3RyaW5nVHlwZSA9IDB4
MDIKK307CisKKy8vIFRPRE8gTWVyZ2UgdGhpcyBpbnRvIFY4IGJlZm9yZSBtZXJnaW5nIHBhdGNo
Lgorc3RhdGljIGlubGluZSBFeHRlcm5hbFN0cmluZ1R5cGUgR2V0RXh0ZXJuYWxTdHJpbmdSZXNv
dXJjZShjb25zdCB2ODo6U3RyaW5nKiBzdHJpbmcsIHY4OjpTdHJpbmc6OkV4dGVybmFsU3RyaW5n
UmVzb3VyY2VCYXNlKiYgcmVzb3VyY2UpCit7CisgICAgdHlwZWRlZiB2ODo6aW50ZXJuYWw6Ok9i
amVjdCBPOworICAgIHR5cGVkZWYgdjg6OmludGVybmFsOjpJbnRlcm5hbHMgSTsKKyAgICBPKiBv
YmogPSAqcmVpbnRlcnByZXRfY2FzdDxPKio+KGNvbnN0X2Nhc3Q8djg6OlN0cmluZyo+KHN0cmlu
ZykpOworICAgIGludCB0eXBlID0gSTo6R2V0SW5zdGFuY2VUeXBlKG9iaikgJiBJOjprRnVsbFN0
cmluZ1JlcHJlc2VudGF0aW9uTWFzazsKKyAgICBpZiAodHlwZSA9PSBrRXh0ZXJuYWxBc2NpaVJl
cHJlc2VudGF0aW9uVGFnIHx8IHR5cGUgPT0gSTo6a0V4dGVybmFsVHdvQnl0ZVJlcHJlc2VudGF0
aW9uVGFnKSB7CisgICAgICAgIHJlc291cmNlID0gc3RhdGljX2Nhc3Q8djg6OlN0cmluZzo6RXh0
ZXJuYWxTdHJpbmdSZXNvdXJjZUJhc2UqPihJOjpSZWFkRmllbGQ8dm9pZCo+KG9iaiwgSTo6a1N0
cmluZ1Jlc291cmNlT2Zmc2V0KSk7CisgICAgICAgIHJldHVybiAoRXh0ZXJuYWxTdHJpbmdUeXBl
KSB0eXBlOworICAgIH0KKyAgICByZXR1cm4ga05vdEV4dGVybmFsU3RyaW5nVHlwZTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgUz4gc3RydWN0IFN0cmluZ1RyYWl0cyB7CisgICAgc3RhdGljIFMgZnJv
bVN0cmluZ1Jlc291cmNlKFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UqKTsKKyAgICBzdGF0aWMg
V2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSogdHJ5Q3JlYXRlUmVzb3VyY2U4KFMmIHN0cmluZywg
Ym9vbCYgY29udmVydGVkKTsKKyAgICB0ZW1wbGF0ZTxib29sIGFzY2lpPgogICAgIHN0YXRpYyBT
IGZyb21WOFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+LCBpbnQpOwogfTsKIAogdGVtcGxh
dGU8Pgogc3RydWN0IFN0cmluZ1RyYWl0czxTdHJpbmc+IHsKLSAgICBzdGF0aWMgU3RyaW5nIGZy
b21TdHJpbmdSZXNvdXJjZShXZWJDb3JlU3RyaW5nUmVzb3VyY2UqIHJlc291cmNlKQorICAgIGlu
bGluZSBzdGF0aWMgU3RyaW5nIGZyb21TdHJpbmdSZXNvdXJjZShXZWJDb3JlU3RyaW5nUmVzb3Vy
Y2VCYXNlKiByZXNvdXJjZSkKICAgICB7CiAgICAgICAgIHJldHVybiByZXNvdXJjZS0+d2ViY29y
ZVN0cmluZygpOwogICAgIH0KLQotICAgIHN0YXRpYyBTdHJpbmcgZnJvbVY4U3RyaW5nKHY4OjpI
YW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcsIGludCBsZW5ndGgpCisgICAgaW5saW5lIHN0YXRp
YyBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKiB0cnlDcmVhdGVSZXNvdXJjZTgoU3RyaW5nJiBz
dHJpbmcsIGJvb2wmIGNvbnZlcnRlZCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh2OFN0cmluZy0+
TGVuZ3RoKCkgPT0gbGVuZ3RoKTsKLSAgICAgICAgLy8gTk9URTogYXMgb2Ygbm93LCBTdHJpbmco
Y29uc3QgVUNoYXIqLCBpbnQpIHBlcmZvcm1zIFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZAot
ICAgICAgICAvLyBhbnl3YXksIHNvIG5vIG5lZWQgdG8gb3B0aW1pemUgbGlrZSB3ZSBkbyBmb3Ig
QXRvbWljU3RyaW5nIGJlbG93LgotICAgICAgICBVQ2hhciogYnVmZmVyOwotICAgICAgICBTdHJp
bmcgcmVzdWx0ID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsK
LSAgICAgICAgdjhTdHJpbmctPldyaXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihidWZm
ZXIpLCAwLCBsZW5ndGgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBjb252ZXJ0
ZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2U4KHN0
cmluZyk7CiAgICAgfQorICAgIHRlbXBsYXRlPGJvb2wgYXNjaWk+CisgICAgc3RhdGljIFN0cmlu
ZyBmcm9tVjhTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiwgaW50KTsKIH07CiAKIHRlbXBs
YXRlPD4KIHN0cnVjdCBTdHJpbmdUcmFpdHM8QXRvbWljU3RyaW5nPiB7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBmcm9tU3RyaW5nUmVzb3VyY2UoV2ViQ29yZVN0cmluZ1Jlc291cmNlKiByZXNv
dXJjZSkKKyAgICBpbmxpbmUgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tU3RyaW5nUmVzb3VyY2Uo
V2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSogcmVzb3VyY2UpCiAgICAgewogICAgICAgICByZXR1
cm4gcmVzb3VyY2UtPmF0b21pY1N0cmluZygpOwogICAgIH0KLQotICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcgZnJvbVY4U3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcsIGludCBs
ZW5ndGgpCisgICAgaW5saW5lIHN0YXRpYyBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKiB0cnlD
cmVhdGVSZXNvdXJjZTgoQXRvbWljU3RyaW5nJiBzdHJpbmcsIGJvb2wmIGNvbnZlcnRlZCkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVCh2OFN0cmluZy0+TGVuZ3RoKCkgPT0gbGVuZ3RoKTsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IGludCBpbmxpbmVCdWZmZXJTaXplID0gMTY7Ci0gICAgICAgIGlmIChs
ZW5ndGggPD0gaW5saW5lQnVmZmVyU2l6ZSkgewotICAgICAgICAgICAgVUNoYXIgaW5saW5lQnVm
ZmVyW2lubGluZUJ1ZmZlclNpemVdOwotICAgICAgICAgICAgdjhTdHJpbmctPldyaXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbmxpbmVCdWZmZXIpLCAwLCBsZW5ndGgpOwotICAgICAg
ICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhpbmxpbmVCdWZmZXIsIGxlbmd0aCk7CisgICAgICAg
IGlmIChzdHJpbmcuc3RyaW5nKCkuaXM4Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnZlcnRlZCA9
IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2U4KHN0
cmluZyk7CiAgICAgICAgIH0KLSAgICAgICAgVUNoYXIqIGJ1ZmZlcjsKLSAgICAgICAgU3RyaW5n
IHN0cmluZyA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7Ci0g
ICAgICAgIHY4U3RyaW5nLT5Xcml0ZShyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oYnVmZmVy
KSwgMCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhzdHJpbmcpOworICAg
ICAgICBjb252ZXJ0ZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gbmV3IFdlYkNvcmVTdHJpbmdS
ZXNvdXJjZTE2KHN0cmluZyk7CiAgICAgfQorICAgIHRlbXBsYXRlPGJvb2wgYXNjaWk+CisgICAg
c3RhdGljIEF0b21pY1N0cmluZyBmcm9tVjhTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiwg
aW50KTsKIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmdUeXBlPgordGVtcGxhdGU8Pgor
U3RyaW5nIFN0cmluZ1RyYWl0czxTdHJpbmc+Ojpmcm9tVjhTdHJpbmc8ZmFsc2U+KHY4OjpIYW5k
bGU8djg6OlN0cmluZz4gdjhTdHJpbmcsIGludCBsZW5ndGgpCit7CisgICAgQVNTRVJUKHY4U3Ry
aW5nLT5MZW5ndGgoKSA9PSBsZW5ndGgpOworICAgIFVDaGFyKiBidWZmZXI7CisgICAgU3RyaW5n
IHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7Cisg
ICAgdjhTdHJpbmctPldyaXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihidWZmZXIpLCAw
LCBsZW5ndGgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPD4KK0F0b21pY1N0
cmluZyBTdHJpbmdUcmFpdHM8QXRvbWljU3RyaW5nPjo6ZnJvbVY4U3RyaW5nPGZhbHNlPih2ODo6
SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nLCBpbnQgbGVuZ3RoKQoreworICAgIEFTU0VSVCh2
OFN0cmluZy0+TGVuZ3RoKCkgPT0gbGVuZ3RoKTsKKyAgICBzdGF0aWMgY29uc3QgaW50IGlubGlu
ZUJ1ZmZlclNpemUgPSAxNjsKKyAgICBpZiAobGVuZ3RoIDw9IGlubGluZUJ1ZmZlclNpemUpIHsK
KyAgICAgICAgVUNoYXIgaW5saW5lQnVmZmVyW2lubGluZUJ1ZmZlclNpemVdOworICAgICAgICB2
OFN0cmluZy0+V3JpdGUocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGlubGluZUJ1ZmZlciks
IDAsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoaW5saW5lQnVmZmVyLCBs
ZW5ndGgpOworICAgIH0KKyAgICBVQ2hhciogYnVmZmVyOworICAgIFN0cmluZyBzdHJpbmcgPSBT
dHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOworICAgIHY4U3RyaW5n
LT5Xcml0ZShyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oYnVmZmVyKSwgMCwgbGVuZ3RoKTsK
KyAgICByZXR1cm4gQXRvbWljU3RyaW5nKHN0cmluZyk7Cit9CisKK3RlbXBsYXRlPD4KK1N0cmlu
ZyBTdHJpbmdUcmFpdHM8U3RyaW5nPjo6ZnJvbVY4U3RyaW5nPHRydWU+KHY4OjpIYW5kbGU8djg6
OlN0cmluZz4gdjhTdHJpbmcsIGludCBsZW5ndGgpCit7CisgICAgQVNTRVJUKHY4U3RyaW5nLT5M
ZW5ndGgoKSA9PSBsZW5ndGgpOworICAgIExDaGFyKiBidWZmZXI7CisgICAgU3RyaW5nIHJlc3Vs
dCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CisgICAgdjhT
dHJpbmctPldyaXRlQXNjaWkocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyKSwgMCwgbGVu
Z3RoLCB2ODo6U3RyaW5nOjpQUkVTRVJWRV9BU0NJSV9OVUxMKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgQXRvbWljU3RyaW5nIFN0cmluZ1RyYWl0czxBdG9t
aWNTdHJpbmc+Ojpmcm9tVjhTdHJpbmc8dHJ1ZT4odjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0
cmluZywgaW50IGxlbmd0aCkKK3sKKyAgICAvLyBGSVhNRTogVGhlcmUgaXMgbm8gaW5saW5lIGZh
c3QgcGF0aCBmb3IgOCBiaXQgYXRvbWljIHN0cmluZ3MuCisgICAgcmV0dXJuIEF0b21pY1N0cmlu
ZyhTdHJpbmdUcmFpdHM8U3RyaW5nPjo6ZnJvbVY4U3RyaW5nPHRydWU+KHY4U3RyaW5nLCBsZW5n
dGgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZT4KIFN0cmluZ1R5cGUgdjhT
dHJpbmdUb1dlYkNvcmVTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgRXh0
ZXJuYWxNb2RlIGV4dGVybmFsKQogewotICAgIFdlYkNvcmVTdHJpbmdSZXNvdXJjZSogc3RyaW5n
UmVzb3VyY2UgPSBXZWJDb3JlU3RyaW5nUmVzb3VyY2U6OnRvU3RyaW5nUmVzb3VyY2UodjhTdHJp
bmcpOwotICAgIGlmIChzdHJpbmdSZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZ1RyYWl0
czxTdHJpbmdUeXBlPjo6ZnJvbVN0cmluZ1Jlc291cmNlKHN0cmluZ1Jlc291cmNlKTsKKyAgICB7
CisgICAgICAgIHY4OjpTdHJpbmc6OkV4dGVybmFsU3RyaW5nUmVzb3VyY2VCYXNlKiByZXNvdXJj
ZTsKKyAgICAgICAgRXh0ZXJuYWxTdHJpbmdUeXBlIHR5cGUgPSBHZXRFeHRlcm5hbFN0cmluZ1Jl
c291cmNlKCp2OFN0cmluZywgcmVzb3VyY2UpOworICAgICAgICBpZiAoTElLRUxZKCEhdHlwZSkp
IHsKKyAgICAgICAgICAgIFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UqIGJhc2U7CisgICAgICAg
ICAgICBpZiAodHlwZSA9PSBrRXh0ZXJuYWxBc2NpaVN0cmluZ1R5cGUpCisgICAgICAgICAgICAg
ICAgYmFzZSA9IHN0YXRpY19jYXN0PFdlYkNvcmVTdHJpbmdSZXNvdXJjZTgqPihyZXNvdXJjZSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYmFzZSA9IHN0YXRpY19jYXN0PFdl
YkNvcmVTdHJpbmdSZXNvdXJjZTE2Kj4ocmVzb3VyY2UpOworICAgICAgICAgICAgcmV0dXJuIFN0
cmluZ1RyYWl0czxTdHJpbmdUeXBlPjo6ZnJvbVN0cmluZ1Jlc291cmNlKGJhc2UpOworICAgICAg
ICB9CisgICAgfQogCiAgICAgaW50IGxlbmd0aCA9IHY4U3RyaW5nLT5MZW5ndGgoKTsKLSAgICBp
ZiAoIWxlbmd0aCkKKyAgICBpZiAoVU5MSUtFTFkoIWxlbmd0aCkpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoIiIpOwogCi0gICAgU3RyaW5nVHlwZSByZXN1bHQoU3RyaW5nVHJhaXRzPFN0cmluZ1R5
cGU+Ojpmcm9tVjhTdHJpbmcodjhTdHJpbmcsIGxlbmd0aCkpOworICAgIGlmICh2OFN0cmluZy0+
TWF5Q29udGFpbk5vbkFzY2lpKCkpIHsKKyAgICAgICAgU3RyaW5nVHlwZSByZXN1bHQoU3RyaW5n
VHJhaXRzPFN0cmluZ1R5cGU+Ojp0ZW1wbGF0ZSBmcm9tVjhTdHJpbmc8ZmFsc2U+KHY4U3RyaW5n
LCBsZW5ndGgpKTsKKyAgICAgICAgaWYgKGV4dGVybmFsID09IEV4dGVybmFsaXplICYmIHY4U3Ry
aW5nLT5DYW5NYWtlRXh0ZXJuYWwoKSkgeworICAgICAgICAgICAgV2ViQ29yZVN0cmluZ1Jlc291
cmNlMTYqIHN0cmluZ1Jlc291cmNlID0gbmV3IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2KHJlc3Vs
dCk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXY4U3RyaW5nLT5NYWtlRXh0ZXJuYWwoc3Ry
aW5nUmVzb3VyY2UpKSkKKyAgICAgICAgICAgICAgICBkZWxldGUgc3RyaW5nUmVzb3VyY2U7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKKyAgICBTdHJpbmdUeXBl
IHJlc3VsdChTdHJpbmdUcmFpdHM8U3RyaW5nVHlwZT46OnRlbXBsYXRlIGZyb21WOFN0cmluZzx0
cnVlPih2OFN0cmluZywgbGVuZ3RoKSk7CiAgICAgaWYgKGV4dGVybmFsID09IEV4dGVybmFsaXpl
ICYmIHY4U3RyaW5nLT5DYW5NYWtlRXh0ZXJuYWwoKSkgewotICAgICAgICBzdHJpbmdSZXNvdXJj
ZSA9IG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UocmVzdWx0KTsKLSAgICAgICAgaWYgKCF2OFN0
cmluZy0+TWFrZUV4dGVybmFsKHN0cmluZ1Jlc291cmNlKSkgewotICAgICAgICAgICAgLy8gSW4g
Y2FzZSBvZiBhIGZhaWx1cmUgZGVsZXRlIHRoZSBleHRlcm5hbCByZXNvdXJjZSBhcyBpdCB3YXMg
bm90IHVzZWQuCisgICAgICAgIGJvb2wgY29udmVydGVkVG8xNkJpdHM7CisgICAgICAgIFdlYkNv
cmVTdHJpbmdSZXNvdXJjZUJhc2UqIHN0cmluZ1Jlc291cmNlID0gU3RyaW5nVHJhaXRzPFN0cmlu
Z1R5cGU+Ojp0cnlDcmVhdGVSZXNvdXJjZTgocmVzdWx0LCBjb252ZXJ0ZWRUbzE2Qml0cyk7Cisg
ICAgICAgIGJvb2wgZXh0ZXJuYWxpemVkOworICAgICAgICBpZiAoTElLRUxZKCFjb252ZXJ0ZWRU
bzE2Qml0cykpCisgICAgICAgICAgICBleHRlcm5hbGl6ZWQgPSB2OFN0cmluZy0+TWFrZUV4dGVy
bmFsKHN0YXRpY19jYXN0PFdlYkNvcmVTdHJpbmdSZXNvdXJjZTgqPihzdHJpbmdSZXNvdXJjZSkp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBleHRlcm5hbGl6ZWQgPSB2OFN0cmluZy0+TWFr
ZUV4dGVybmFsKHN0YXRpY19jYXN0PFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2Kj4oc3RyaW5nUmVz
b3VyY2UpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFleHRlcm5hbGl6ZWQpKQogICAgICAgICAg
ICAgZGVsZXRlIHN0cmluZ1Jlc291cmNlOwotICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVl
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmNwcApp
bmRleCAxYzI1MTA2Li5hMGQ1MGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFZhbHVlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
VmFsdWVDYWNoZS5jcHAKQEAgLTMzLDExICszMywxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyB2ODo6TG9jYWw8djg6OlN0cmluZz4gbWFrZUV4dGVybmFsU3RyaW5nKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogewotICAgIFdlYkNvcmVTdHJpbmdSZXNvdXJjZSogc3RyaW5nUmVzb3Vy
Y2UgPSBuZXcgV2ViQ29yZVN0cmluZ1Jlc291cmNlKHN0cmluZyk7CisgICAgaWYgKHN0cmluZy5p
czhCaXQoKSAmJiBzdHJpbmcuY29udGFpbnNPbmx5QVNDSUkoKSkgeworICAgICAgICBXZWJDb3Jl
U3RyaW5nUmVzb3VyY2U4KiBzdHJpbmdSZXNvdXJjZSA9IG5ldyBXZWJDb3JlU3RyaW5nUmVzb3Vy
Y2U4KHN0cmluZyk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuZXdTdHJpbmcgPSB2
ODo6U3RyaW5nOjpOZXdFeHRlcm5hbChzdHJpbmdSZXNvdXJjZSk7CisgICAgICAgIGlmIChuZXdT
dHJpbmcuSXNFbXB0eSgpKQorICAgICAgICAgICAgZGVsZXRlIHN0cmluZ1Jlc291cmNlOworICAg
ICAgICByZXR1cm4gbmV3U3RyaW5nOworICAgIH0KKworICAgIFdlYkNvcmVTdHJpbmdSZXNvdXJj
ZTE2KiBzdHJpbmdSZXNvdXJjZSA9IG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNihzdHJpbmcp
OwogICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuZXdTdHJpbmcgPSB2ODo6U3RyaW5nOjpOZXdF
eHRlcm5hbChzdHJpbmdSZXNvdXJjZSk7CiAgICAgaWYgKG5ld1N0cmluZy5Jc0VtcHR5KCkpCiAg
ICAgICAgIGRlbGV0ZSBzdHJpbmdSZXNvdXJjZTsKLQogICAgIHJldHVybiBuZXdTdHJpbmc7CiB9
CiAKQEAgLTk1LDcgKzEwMiw3IEBAIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBTdHJpbmdDYWNoZTo6
djhFeHRlcm5hbFN0cmluZ1Nsb3coU3RyaW5nSW1wbCogc3RyaW5nSW1wbCwKICAgICByZXR1cm4g
bmV3U3RyaW5nOwogfQogCi12b2lkIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTo6dmlzaXRTdHJpbmdz
KEV4dGVybmFsU3RyaW5nVmlzaXRvciogdmlzaXRvcikKK3ZvaWQgV2ViQ29yZVN0cmluZ1Jlc291
cmNlQmFzZTo6dmlzaXRTdHJpbmdzKEV4dGVybmFsU3RyaW5nVmlzaXRvciogdmlzaXRvcikKIHsK
ICAgICB2aXNpdG9yLT52aXNpdEpTRXh0ZXJuYWxTdHJpbmcobV9wbGFpblN0cmluZy5pbXBsKCkp
OwogICAgIGlmIChtX3BsYWluU3RyaW5nLmltcGwoKSAhPSBtX2F0b21pY1N0cmluZy5pbXBsKCkg
JiYgIW1fYXRvbWljU3RyaW5nLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFZhbHVlQ2FjaGUuaAppbmRleCBmMjE2MDYwLi5kMWFmZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuaApAQCAtNzMsMTkgKzczLDE5IEBAIGNvbnN0IGludCBu
dW1iZXJPZkNhY2hlZFNtYWxsSW50ZWdlcnMgPSA2NDsKIAogLy8gV2ViQ29yZVN0cmluZ1Jlc291
cmNlIGlzIGEgaGVscGVyIGNsYXNzIGZvciB2OEV4dGVybmFsU3RyaW5nLiBJdCBpcyB1c2VkCiAv
LyB0byBtYW5hZ2UgdGhlIGxpZmUtY3ljbGUgb2YgdGhlIHVuZGVybHlpbmcgYnVmZmVyIG9mIHRo
ZSBleHRlcm5hbCBzdHJpbmcuCi1jbGFzcyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UgOiBwdWJsaWMg
djg6OlN0cmluZzo6RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZSB7CitjbGFzcyBXZWJDb3JlU3RyaW5n
UmVzb3VyY2VCYXNlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVzb3Vy
Y2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgaW5saW5lIGV4cGxpY2l0IFdlYkNvcmVTdHJp
bmdSZXNvdXJjZUJhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIDogbV9wbGFpblN0
cmluZyhzdHJpbmcpCiAgICAgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV90aHJlYWRJZCA9
IFdURjo6Y3VycmVudFRocmVhZCgpOwogI2VuZGlmCiAgICAgICAgIEFTU0VSVCghc3RyaW5nLmlz
TnVsbCgpKTsKLSAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVk
TWVtb3J5KDIgKiBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICB2ODo6Vjg6OkFkanVzdEFtb3Vu
dE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkobWVtb3J5Q29uc3VtcHRpb24oc3RyaW5nKSk7CiAg
ICAgfQogCi0gICAgZXhwbGljaXQgV2ViQ29yZVN0cmluZ1Jlc291cmNlKGNvbnN0IEF0b21pY1N0
cmluZyYgc3RyaW5nKQorICAgIGlubGluZSBleHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2VC
YXNlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogICAgICAgICA6IG1fcGxhaW5TdHJpbmco
c3RyaW5nLnN0cmluZygpKQogICAgICAgICAsIG1fYXRvbWljU3RyaW5nKHN0cmluZykKICAgICB7
CkBAIC05MywyNyArOTMsMjAgQEAgcHVibGljOgogICAgICAgICBtX3RocmVhZElkID0gV1RGOjpj
dXJyZW50VGhyZWFkKCk7CiAjZW5kaWYKICAgICAgICAgQVNTRVJUKCFzdHJpbmcuaXNOdWxsKCkp
OwotICAgICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnko
MiAqIHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRl
cm5hbEFsbG9jYXRlZE1lbW9yeShtZW1vcnlDb25zdW1wdGlvbihzdHJpbmcpKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIH5XZWJDb3JlU3RyaW5nUmVzb3VyY2UoKQorICAgIHZpcnR1YWwgfldlYkNv
cmVTdHJpbmdSZXNvdXJjZUJhc2UoKQogICAgIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIEFT
U0VSVChtX3RocmVhZElkID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsKICNlbmRpZgotICAgICAg
ICBpbnQgcmVkdWNlZEV4dGVybmFsTWVtb3J5ID0gLTIgKiBtX3BsYWluU3RyaW5nLmxlbmd0aCgp
OworICAgICAgICBpbnQgcmVkdWNlZEV4dGVybmFsTWVtb3J5ID0gLW1lbW9yeUNvbnN1bXB0aW9u
KG1fcGxhaW5TdHJpbmcpOwogICAgICAgICBpZiAobV9wbGFpblN0cmluZy5pbXBsKCkgIT0gbV9h
dG9taWNTdHJpbmcuaW1wbCgpICYmICFtX2F0b21pY1N0cmluZy5pc051bGwoKSkKLSAgICAgICAg
ICAgIHJlZHVjZWRFeHRlcm5hbE1lbW9yeSAqPSAyOworICAgICAgICAgICAgcmVkdWNlZEV4dGVy
bmFsTWVtb3J5IC09IG1lbW9yeUNvbnN1bXB0aW9uKG1fYXRvbWljU3RyaW5nLnN0cmluZygpKTsK
ICAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KHJl
ZHVjZWRFeHRlcm5hbE1lbW9yeSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBjb25zdCB1aW50MTZf
dCogZGF0YSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50MTZfdCo+KG1fcGxhaW5TdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzKCkpOwotICAg
IH0KLQotICAgIHZpcnR1YWwgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5T
dHJpbmcuaW1wbCgpLT5sZW5ndGgoKTsgfQotCiAgICAgU3RyaW5nIHdlYmNvcmVTdHJpbmcoKSB7
IHJldHVybiBtX3BsYWluU3RyaW5nOyB9CiAKICAgICBBdG9taWNTdHJpbmcgYXRvbWljU3RyaW5n
KCkKQEAgLTEyNSwxOSArMTE4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYXRvbWljU3Ry
aW5nID0gQXRvbWljU3RyaW5nKG1fcGxhaW5TdHJpbmcpOwogICAgICAgICAgICAgQVNTRVJUKCFt
X2F0b21pY1N0cmluZy5pc051bGwoKSk7CiAgICAgICAgICAgICBpZiAobV9wbGFpblN0cmluZy5p
bXBsKCkgIT0gbV9hdG9taWNTdHJpbmcuaW1wbCgpKQotICAgICAgICAgICAgICAgIHY4OjpWODo6
QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSgyICogbV9hdG9taWNTdHJpbmcu
bGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5h
bEFsbG9jYXRlZE1lbW9yeShtZW1vcnlDb25zdW1wdGlvbihtX2F0b21pY1N0cmluZy5zdHJpbmco
KSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2F0b21pY1N0cmluZzsKICAgICB9CiAK
ICAgICB2b2lkIHZpc2l0U3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqKTsKIAotICAgIHN0
YXRpYyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UqIHRvU3RyaW5nUmVzb3VyY2Uodjg6OkhhbmRsZTx2
ODo6U3RyaW5nPiB2OFN0cmluZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxX
ZWJDb3JlU3RyaW5nUmVzb3VyY2UqPih2OFN0cmluZy0+R2V0RXh0ZXJuYWxTdHJpbmdSZXNvdXJj
ZSgpKTsKLSAgICB9Ci0KLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgLy8gQSBzaGFsbG93IGNv
cHkgb2YgdGhlIHN0cmluZy4gS2VlcHMgdGhlIHN0cmluZyBidWZmZXIgYWxpdmUgdW50aWwgdGhl
IFY4IGVuZ2luZSBnYXJiYWdlIGNvbGxlY3RzIGl0LgogICAgIFN0cmluZyBtX3BsYWluU3RyaW5n
OwogICAgIC8vIElmIHRoaXMgc3RyaW5nIGlzIGF0b21pYyBvciBoYXMgYmVlbiBtYWRlIGF0b21p
YyBlYXJsaWVyIHRoZQpAQCAtMTQ3LDExICsxMzUsNDggQEAgcHJpdmF0ZToKICAgICAvLyBpbnRv
IHRoYXQgc3RyaW5nLgogICAgIEF0b21pY1N0cmluZyBtX2F0b21pY1N0cmluZzsKIAorcHJpdmF0
ZToKKyAgICBpbmxpbmUgc3RhdGljIGludCBtZW1vcnlDb25zdW1wdGlvbihjb25zdCBTdHJpbmcm
IHN0cmluZykKKyAgICB7CisgICAgICAgIHJldHVybiBzdHJpbmcubGVuZ3RoKCkgKiAoc3RyaW5n
LmlzOEJpdCgpID8gc2l6ZW9mKExDaGFyKSA6IHNpemVvZihVQ2hhcikpOworICAgIH0KICNpZm5k
ZWYgTkRFQlVHCiAgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSWQ7CiAjZW5kaWYK
IH07CiAKK2NsYXNzIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2OiBwdWJsaWMgV2ViQ29yZVN0cmlu
Z1Jlc291cmNlQmFzZSwgcHVibGljIHY4OjpTdHJpbmc6OkV4dGVybmFsU3RyaW5nUmVzb3VyY2Ug
eworcHVibGljOgorICAgIHN0YXRpYyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNiogdG9TdHJpbmdS
ZXNvdXJjZSh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2Kj4odjhTdHJpbmctPkdl
dEV4dGVybmFsU3RyaW5nUmVzb3VyY2UoKSk7CisgICAgfQorICAgIGV4cGxpY2l0IGlubGluZSBX
ZWJDb3JlU3RyaW5nUmVzb3VyY2UxNihjb25zdCBTdHJpbmcmIHN0cmluZyk6IFdlYkNvcmVTdHJp
bmdSZXNvdXJjZUJhc2Uoc3RyaW5nKSB7IH0KKyAgICBleHBsaWNpdCBpbmxpbmUgV2ViQ29yZVN0
cmluZ1Jlc291cmNlMTYoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpOiBXZWJDb3JlU3RyaW5n
UmVzb3VyY2VCYXNlKHN0cmluZykgeyB9CisKKyAgICB2aXJ0dWFsIHNpemVfdCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX3BsYWluU3RyaW5nLmltcGwoKS0+bGVuZ3RoKCk7IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IHVpbnQxNl90KiBkYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4obV9wbGFpblN0cmluZy5pbXBsKCktPmNo
YXJhY3RlcnMoKSk7CisgICAgfQorfTsKKworY2xhc3MgV2ViQ29yZVN0cmluZ1Jlc291cmNlODog
cHVibGljIFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UsIHB1YmxpYyB2ODo6U3RyaW5nOjpFeHRl
cm5hbEFzY2lpU3RyaW5nUmVzb3VyY2UgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJDb3JlU3Ry
aW5nUmVzb3VyY2U4KiB0b1N0cmluZ1Jlc291cmNlKHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhT
dHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxXZWJDb3JlU3RyaW5nUmVz
b3VyY2U4Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZVN0cmluZ1Jlc291cmNlOCo+KHY4U3Ry
aW5nLT5HZXRFeHRlcm5hbEFzY2lpU3RyaW5nUmVzb3VyY2UoKSkpOworICAgIH0KKyAgICBleHBs
aWNpdCBpbmxpbmUgV2ViQ29yZVN0cmluZ1Jlc291cmNlOChjb25zdCBTdHJpbmcmIHN0cmluZyk6
IFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2Uoc3RyaW5nKSB7IH0KKyAgICBleHBsaWNpdCBpbmxp
bmUgV2ViQ29yZVN0cmluZ1Jlc291cmNlOChjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZyk6IFdl
YkNvcmVTdHJpbmdSZXNvdXJjZUJhc2Uoc3RyaW5nKSB7IH0KKworICAgIHZpcnR1YWwgc2l6ZV90
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5TdHJpbmcuaW1wbCgpLT5sZW5ndGgoKTsg
fQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9wbGFpblN0cmluZy5pbXBsKCkt
PmNoYXJhY3RlcnM4KCkpOworICAgIH0KK307CisKIGNsYXNzIEludGVnZXJDYWNoZSB7CiBwdWJs
aWM6CiAgICAgIEludGVnZXJDYWNoZSgpIDogbV9pbml0aWFsaXplZChmYWxzZSkgeyB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>163334</attachid>
            <date>2012-09-11 04:35:18 -0700</date>
            <delta_ts>2012-09-11 04:35:18 -0700</delta_ts>
            <desc>perf results of 163333</desc>
            <filename>PerformanceTestsResults.html</filename>
            <type>text/html</type>
            <size>46563</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c2NyaXB0IHNyYz0iL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9k
Y2FybmV5L3NyYy9jaHJvbWUvV2ViS2l0L1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9yZXNvdXJj
ZXMvZHJvbWFlby93ZWIvbGliL2pxdWVyeS0xLjYuNC5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3Jj
PSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMv
RHJvbWFlby9yZXNvdXJjZXMvZHJvbWFlby93ZWIvbGliL2pxdWVyeS0xLjYuNC5qcz9mb3JtYXQ9
dHh0Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvZGNhcm5l
eS9zcmMvY2hyb21lL1dlYktpdC9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkuZmxv
dC5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
YnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkuZmxvdC5taW4u
anM/Zm9ybWF0PXR4dCI+PC9zY3JpcHQ+CjxzY3JpcHQgaWQ9Impzb24iIHR5cGU9ImFwcGxpY2F0
aW9uL2pzb24iPlt7InRpbWVzdGFtcCI6IDEzNDczNTczMzUsICJ3ZWJraXQtcmV2aXNpb24iOiAi
MTI4MTQ4IiwgInJlc3VsdHMiOiB7IkRyb21hZW8vZHJvbWFlby1vYmplY3QtYXJyYXk6TWFsbG9j
IjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwg
ImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vZHJvbWFlby1zdHJpbmctYmFz
ZTY0IjogeyJtaW4iOiA1NTQwLjAsICJtYXgiOiA1NjgwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRl
diI6IDU1LjAyMTgxMzg1NTk2MDgwMSwgImF2ZyI6IDU2MzIuNjAwMDAwMDAwMDAwNCwgInVuaXQi
OiAicnVucy9zIn0sICJEcm9tYWVvL2pzbGliLXN0eWxlLXByb3RvdHlwZTpNYWxsb2MiOiB7Im1p
biI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjog
MC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9kb20tbW9kaWZ5OkpTSGVhcCI6IHsibWlu
IjogMjY0MjExMjAuMCwgIm1heCI6IDI2NDIxMTIwLjAsICJtZWRpYW4iOiAyNjQyMTEyMC4wLCAi
c3RkZXYiOiAwLjAsICJhdmciOiAyNjQyMTEyMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFl
by9kcm9tYWVvLW9iamVjdC1yZWdleHAiOiB7Im1pbiI6IDM1ODk2Ljk5NTg3NjA1NzE0NiwgIm1h
eCI6IDM2MDc5LjQwMDAxMDQ1MDk5MSwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMTYuMzk2Njg5
NTQwNzIwODc1LCAiYXZnIjogMzU5ODQuNDczNzE1ODI5MjEyLCAidW5pdCI6ICJydW5zL3MifSwg
IkJpbmRpbmdzL3VuZGVmaW5lZC1maXJzdC1jaGlsZCI6IHsibWluIjogNjg2LjkyMjA2MDc2NjE4
MjMxLCAibWF4IjogNzYwLjQ1NjI3Mzc2NDI1ODUzLCAibWVkaWFuIjogNzU3LjU3NTc1NzU3NTc1
NzYyLCAic3RkZXYiOiAxNS41NzUxMjcxMTcxMjk3NzYsICJhdmciOiA3NTQuNTI0MzY2ODIyMTg3
NTIsICJ1bml0IjogInJ1bnMvcyJ9LCAiQmluZGluZ3MvZ2V0LWVsZW1lbnQtYnktaWQiOiB7Im1p
biI6IDMwNC41Njg1Mjc5MTg3ODE3NCwgIm1heCI6IDMxMC4wNzc1MTkzNzk4NDQ5NCwgIm1lZGlh
biI6IDMwOS4yNzgzNTA1MTU0NjM5LCAic3RkZXYiOiAxLjY1NzAxODI3NTY5NjM0MTQsICJhdmci
OiAzMDguNjMxMTAyMjUyNDg3NTUsICJ1bml0IjogInJ1bnMvcyJ9LCAiQmluZGluZ3MvZ2V0LWF0
dHJpYnV0ZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwg
InN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9qc2xp
Yi1hdHRyLXByb3RvdHlwZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlh
biI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJv
bWFlby9jc3NxdWVyeS1wcm90b3R5cGU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAs
ICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMi
fSwgIkJpbmRpbmdzL3R5cGVkLWFycmF5LXNldC1mcm9tLXR5cGVkIjogeyJtaW4iOiAxNjMuMCwg
Im1heCI6IDE2OC4wLCAibWVkaWFuIjogMTY2LjAsICJzdGRldiI6IDEuNTY0NDQ4Nzg0NzE2MTk1
LCAiYXZnIjogMTY1Ljk0OTk5OTk5OTk5OTk5LCAidW5pdCI6ICJtcyJ9LCAiRHJvbWFlby9qc2xp
Yi1ldmVudC1wcm90b3R5cGU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRp
YW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJp
bmRpbmdzL2lkLXNldHRlciI6IHsibWluIjogMjM1LjkxMDg3ODExMjcxMjk2LCAibWF4IjogMjQx
LjI1NDUyMzUyMjMxNjA1LCAibWVkaWFuIjogMjM4LjcyNjc5MDQ1MDkyODM4LCAic3RkZXYiOiAx
LjgwODUwNjc3NDQ1MTg4NDgsICJhdmciOiAyMzguNzgzMjM2NjYyMTE1MzQsICJ1bml0IjogInJ1
bnMvcyJ9LCAiRHJvbWFlby9qc2xpYi1tb2RpZnktanF1ZXJ5OkpTSGVhcCI6IHsibWluIjogMjE0
NzAzMDY0LjAsICJtYXgiOiAyMTQ3MDMwNjQuMCwgIm1lZGlhbiI6IDIxNDcwMzA2NC4wLCAic3Rk
ZXYiOiAwLjAsICJhdmciOiAyMTQ3MDMwNjQuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdz
L2lkLWdldHRlcjpKU0hlYXAiOiB7Im1pbiI6IDEzMjAwNDAuMCwgIm1heCI6IDEzNjczMjguMCwg
Im1lZGlhbiI6IDEzMjYzODguMCwgInN0ZGV2IjogMTIxNTIuMDk3ODIwNTQxMjA1LCAiYXZnIjog
MTMzMDM1MS41OTk5OTk5OTk5LCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZmlyc3QtY2hp
bGQ6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRl
diI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL3Njcm9sbC10
b3AiOiB7Im1pbiI6IDI0OS4wNjYwMDI0OTA2NjAwMywgIm1heCI6IDI1Mi4yMDY4MDk1ODM4NTg3
NiwgIm1lZGlhbiI6IDI1MC43ODM3OTc2MzcxMjkyMywgInN0ZGV2IjogMC42OTUxNzAzNDkwMzI0
MjkwMiwgImF2ZyI6IDI1MC45MTE0NzU2NDk3MjMzNCwgInVuaXQiOiAicnVucy9zIn0sICJEcm9t
YWVvL2Nzc3F1ZXJ5LWpxdWVyeTpKU0hlYXAiOiB7Im1pbiI6IDQzMDU2NDI0LjAsICJtYXgiOiA0
MzA1NjQyNC4wLCAibWVkaWFuIjogNDMwNTY0MjQuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogNDMw
NTY0MjQuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2FwcGVuZC1jaGlsZCI6IHsibWlu
IjogMjY2LjMxMTU4NDU1MzkyODA3LCAibWF4IjogMjY4LjI5MjY4MjkyNjgyOTI5LCAibWVkaWFu
IjogMjY2Ljk5MDI5MTI2MjEzNTk0LCAic3RkZXYiOiAwLjUzNzE5MTE2MTU1Njk3MDc4LCAiYXZn
IjogMjY3LjMxNDE1Njg1MjU0NjM4LCAidW5pdCI6ICJydW5zL3MifSwgIkRyb21hZW8vanNsaWIt
ZXZlbnQtcHJvdG90eXBlOkpTSGVhcCI6IHsibWluIjogODcyMDg1Ni4wLCAibWF4IjogODcyMDg1
Ni4wLCAibWVkaWFuIjogODcyMDg1Ni4wLCAic3RkZXYiOiAwLjAsICJhdmciOiA4NzIwODU2LjAs
ICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2Nzc3F1ZXJ5LWRvam86TWFsbG9jIjogeyJtaW4i
OiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAu
MCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vZG9tLW1vZGlmeSI6IHsibWluIjogMzkzMy41
MjI1NTk2ODAwNDAxLCAibWF4IjogNDYwNC4xODAxNDM4OTA1MzMxLCAibWVkaWFuIjogMC4wLCAi
c3RkZXYiOiAxNTIuNDk5OTgxOTA3NDAxMTUsICJhdmciOiA0MjY0LjY0NTMzOTIyNzE1MDUsICJ1
bml0IjogInJ1bnMvcyJ9LCAiRHJvbWFlby9zdW5zcGlkZXItY3J5cHRvLXNoYTE6SlNIZWFwIjog
eyJtaW4iOiA3Mzg0MjcyLjAsICJtYXgiOiA3Mzg0MjcyLjAsICJtZWRpYW4iOiA3Mzg0MjcyLjAs
ICJzdGRldiI6IDAuMCwgImF2ZyI6IDczODQyNzIuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRp
bmdzL3R5cGVkLWFycmF5LXNldC1mcm9tLXR5cGVkOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4
IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0Ijog
ImJ5dGVzIn0sICJCaW5kaW5ncy90eXBlZC1hcnJheS1zZXQtZnJvbS10eXBlZDpKU0hlYXAiOiB7
Im1pbiI6IDEyNzgwMDguMCwgIm1heCI6IDEzMzE2ODguMCwgIm1lZGlhbiI6IDEyODEzNjAuMCwg
InN0ZGV2IjogMTQ3NTQuNDM2MTExMjE3NTM5LCAiYXZnIjogMTI4NzM1NS4yLCAidW5pdCI6ICJi
eXRlcyJ9LCAiRHJvbWFlby9qc2xpYi1ldmVudC1qcXVlcnk6TWFsbG9jIjogeyJtaW4iOiAwLjAs
ICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVu
aXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL3Njcm9sbC10b3A6SlNIZWFwIjogeyJtaW4iOiAxMzE4
NTkyLjAsICJtYXgiOiAxMzY2MzQ0LjAsICJtZWRpYW4iOiAxMzI0Mzg0LjAsICJzdGRldiI6IDEy
MzUwLjM2MTY1MzAwNDM1NSwgImF2ZyI6IDEzMjg2ODQuNzk5OTk5OTk5OCwgInVuaXQiOiAiYnl0
ZXMifSwgIkRyb21hZW8vanNsaWItc3R5bGUtanF1ZXJ5OkpTSGVhcCI6IHsibWluIjogNTIwNTcy
MTYuMCwgIm1heCI6IDUyMDU3MjE2LjAsICJtZWRpYW4iOiA1MjA1NzIxNi4wLCAic3RkZXYiOiAw
LjAsICJhdmciOiA1MjA1NzIxNi4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2V0LWVs
ZW1lbnRzLWJ5LXRhZy1uYW1lOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVk
aWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJC
aW5kaW5ncy9pbnNlcnQtYmVmb3JlOkpTSGVhcCI6IHsibWluIjogMTMyMjI3Mi4wLCAibWF4Ijog
MTM3MDQ0OC4wLCAibWVkaWFuIjogMTMyOTA2NC4wLCAic3RkZXYiOiAxMjI3Mi4wMDczNzI4Nzkx
MTgsICJhdmciOiAxMzMyODY1LjIsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2pzbGliLW1v
ZGlmeS1qcXVlcnk6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAw
LjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdz
L3VuZGVmaW5lZC1pZC1nZXR0ZXI6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJt
ZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwg
IkJpbmRpbmdzL2NyZWF0ZS1lbGVtZW50OkpTSGVhcCI6IHsibWluIjogODA1NjI4ODAuMCwgIm1h
eCI6IDk3Mzc5MTY4LjAsICJtZWRpYW4iOiA5NzM1MDY0MC4wLCAic3RkZXYiOiAzNjU5MTIxLjk5
OTk1Mzg3MDIsICJhdmciOiA5NjUxMjU5OC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9q
c2xpYi10cmF2ZXJzZS1wcm90b3R5cGU6SlNIZWFwIjogeyJtaW4iOiAxNzE5NzgwMC4wLCAibWF4
IjogMTcxOTc4MDAuMCwgIm1lZGlhbiI6IDE3MTk3ODAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6
IDE3MTk3ODAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9ub2RlLWxpc3QtYWNjZXNz
OkpTSGVhcCI6IHsibWluIjogNTM1NjY0OC4wLCAibWF4IjogNTQwNTI5Ni4wLCAibWVkaWFuIjog
NTM2MjY4OC4wLCAic3RkZXYiOiAxMjc5Mi4wNTk4MTIyNDMxMDYsICJhdmciOiA1MzY2NzM4LjM5
OTk5OTk5OTQsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2Nzc3F1ZXJ5LXByb3RvdHlwZTpK
U0hlYXAiOiB7Im1pbiI6IDQzODg1MzM2LjAsICJtYXgiOiA0Mzg4NTMzNi4wLCAibWVkaWFuIjog
NDM4ODUzMzYuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogNDM4ODUzMzYuMCwgInVuaXQiOiAiYnl0
ZXMifSwgIkJpbmRpbmdzL3R5cGVkLWFycmF5LWNvbnN0cnVjdC1mcm9tLWFycmF5OkpTSGVhcCI6
IHsibWluIjogODEyNzgzOTIuMCwgIm1heCI6IDgxMzMwMzI4LjAsICJtZWRpYW4iOiA4MTI4MjE0
OC4wLCAic3RkZXYiOiAxMDY0NC42MzQyOTkwMjY4NTMsICJhdmciOiA4MTI4NDg1MS4yMDAwMDAw
MDMsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9jcmVhdGUtZWxlbWVudDpNYWxsb2MiOiB7
Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZn
IjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9kcm9tYWVvLW9iamVjdC1zdHJpbmc6
SlNIZWFwIjogeyJtaW4iOiAxNjE2NDUwNC4wLCAibWF4IjogMTYxNjQ1MDQuMCwgIm1lZGlhbiI6
IDE2MTY0NTA0LjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDE2MTY0NTA0LjAsICJ1bml0IjogImJ5
dGVzIn0sICJEcm9tYWVvL2RvbS1xdWVyeSI6IHsibWluIjogOTczNDQxLjIwNTc5NDIwNTc3LCAi
bWF4IjogOTg5OTc5LjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDYxNjMuMTgwMzkxOTgzODgw
MywgImF2ZyI6IDk4MDY4Ni4yNDExNTg4NDExOCwgInVuaXQiOiAicnVucy9zIn0sICJCaW5kaW5n
cy90eXBlZC1hcnJheS1jb25zdHJ1Y3QtZnJvbS1zYW1lLXR5cGU6SlNIZWFwIjogeyJtaW4iOiAx
MjY2NjA4LjAsICJtYXgiOiAxMzE1NjU2LjAsICJtZWRpYW4iOiAxMjcxNzE2LjAsICJzdGRldiI6
IDEyODY4LjY3MjkwNzQ5MTIzMSwgImF2ZyI6IDEyNzYyOTIuMDAwMDAwMDAwMiwgInVuaXQiOiAi
Ynl0ZXMifSwgIkRyb21hZW8vZHJvbWFlby1jb3JlLWV2YWw6SlNIZWFwIjogeyJtaW4iOiAxNDU5
ODQxNi4wLCAibWF4IjogMTQ1OTg0MTYuMCwgIm1lZGlhbiI6IDE0NTk4NDE2LjAsICJzdGRldiI6
IDAuMCwgImF2ZyI6IDE0NTk4NDE2LjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2pzbGli
LWF0dHItcHJvdG90eXBlOkpTSGVhcCI6IHsibWluIjogMTMwMDYwMDAuMCwgIm1heCI6IDEzMDA2
MDAwLjAsICJtZWRpYW4iOiAxMzAwNjAwMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAxMzAwNjAw
MC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9kcm9tYWVvLTNkLWN1YmU6TWFsbG9jIjog
eyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2
ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vZHJvbWFlby1zdHJpbmctYmFzZTY0
OkpTSGVhcCI6IHsibWluIjogMTk3ODcwOTYuMCwgIm1heCI6IDE5Nzg3MDk2LjAsICJtZWRpYW4i
OiAxOTc4NzA5Ni4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAxOTc4NzA5Ni4wLCAidW5pdCI6ICJi
eXRlcyJ9LCAiRHJvbWFlby9kb20tcXVlcnk6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAw
LjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0
ZXMifSwgIkJpbmRpbmdzL3VuZGVmaW5lZC1nZXQtZWxlbWVudC1ieS1pZDpNYWxsb2MiOiB7Im1p
biI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjog
MC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9qc2xpYi1tb2RpZnktcHJvdG90eXBlOk1h
bGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAw
LjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2pzbGliLWV2ZW50LWpx
dWVyeTpKU0hlYXAiOiB7Im1pbiI6IDU4MTA4ODAuMCwgIm1heCI6IDU4MTA4ODAuMCwgIm1lZGlh
biI6IDU4MTA4ODAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogNTgxMDg4MC4wLCAidW5pdCI6ICJi
eXRlcyJ9LCAiQmluZGluZ3MvZ2V0LWVsZW1lbnRzLWJ5LXRhZy1uYW1lOkpTSGVhcCI6IHsibWlu
IjogMTI2MTgwMC4wLCAibWF4IjogMTMwOTczNi4wLCAibWVkaWFuIjogMTI2ODY5Mi4wLCAic3Rk
ZXYiOiAxMjE3Ni4zMDAwMjI1ODQ5NDMsICJhdmciOiAxMjcyMzI2LjM5OTk5OTk5OTksICJ1bml0
IjogImJ5dGVzIn0sICJEcm9tYWVvL2Ryb21hZW8tM2QtY3ViZTpKU0hlYXAiOiB7Im1pbiI6IDg0
MjIyMDAuMCwgIm1heCI6IDg0MjIyMDAuMCwgIm1lZGlhbiI6IDg0MjIyMDAuMCwgInN0ZGV2Ijog
MC4wLCAiYXZnIjogODQyMjIwMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9kcm9tYWVv
LW9iamVjdC1yZWdleHA6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4i
OiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRp
bmdzL2NyZWF0ZS1lbGVtZW50IjogeyJtaW4iOiAzMDMuNzk3NDY4MzU0NDMwNDEsICJtYXgiOiAz
MTcuNDYwMzE3NDYwMzE3NDcsICJtZWRpYW4iOiAzMTQuNTQ3ODM3NDgzNjE3MjksICJzdGRldiI6
IDMuODIwMjAyMDkyMTYzMzc0NCwgImF2ZyI6IDMxMi45OTU2MTYzMjYxMDY4NywgInVuaXQiOiAi
cnVucy9zIn0sICJEcm9tYWVvL2Ryb21hZW8tc3RyaW5nLWJhc2U2NDpNYWxsb2MiOiB7Im1pbiI6
IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4w
LCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvdHlwZWQtYXJyYXktY29uc3RydWN0LWZyb20t
YXJyYXkiOiB7Im1pbiI6IDI1Ni4wLCAibWF4IjogMjYxLjAsICJtZWRpYW4iOiAyNTkuMCwgInN0
ZGV2IjogMS4zMDc2Njk2ODMwNjIyMTE3LCAiYXZnIjogMjU4LjI5OTk5OTk5OTk5OTk1LCAidW5p
dCI6ICJtcyJ9LCAiQmluZGluZ3MvZ2V0LWF0dHJpYnV0ZSI6IHsibWluIjogMTkzLjAwMzYxODgx
Nzg1Mjg0LCAibWF4IjogMjAxLjUxMTMzNTAxMjU5NDQ2LCAibWVkaWFuIjogMTk5Ljc1MzExNDEy
ODYwNTA5LCAic3RkZXYiOiAxLjk1MjgwOTIxNDg3MDE5NywgImF2ZyI6IDE5OS40NDYwODkxNTUw
NDg4NywgInVuaXQiOiAicnVucy9zIn0sICJEcm9tYWVvL2RvbS10cmF2ZXJzZSI6IHsibWluIjog
MjkyMC4zMTc2ODIzMTc2ODIzLCAibWF4IjogMjkzMi4zNDg2NTEzNDg2NTE0LCAibWVkaWFuIjog
MC4wLCAic3RkZXYiOiAyLjQ1NzIxMzY1ODY3MjMzODgsICJhdmciOiAyOTI2LjQ2MTUxNTcyOTc3
OSwgInVuaXQiOiAicnVucy9zIn0sICJEcm9tYWVvL2Ryb21hZW8tb2JqZWN0LWFycmF5IjogeyJt
aW4iOiA1ODU0OS45NjMzMDM4NDIyODMsICJtYXgiOiA1ODg2OC44NDAwMTE3MjI0OTYsICJtZWRp
YW4iOiAwLjAsICJzdGRldiI6IDY5Ljk1MzAyNzA0OTcxMzkyNCwgImF2ZyI6IDU4NzM0LjYzMTU2
Nzg0Mzk5MywgInVuaXQiOiAicnVucy9zIn0sICJEcm9tYWVvL2Ryb21hZW8tb2JqZWN0LWFycmF5
OkpTSGVhcCI6IHsibWluIjogMjA3NDg4NDguMCwgIm1heCI6IDIwNzQ4ODQ4LjAsICJtZWRpYW4i
OiAyMDc0ODg0OC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAyMDc0ODg0OC4wLCAidW5pdCI6ICJi
eXRlcyJ9LCAiQmluZGluZ3MvdW5kZWZpbmVkLWdldC1lbGVtZW50LWJ5LWlkOkpTSGVhcCI6IHsi
bWluIjogMTI1ODQ3Mi4wLCAibWF4IjogMTMwNjQ3Mi4wLCAibWVkaWFuIjogMTI2NDA5Mi4wLCAi
c3RkZXYiOiAxMjMyNS41NTI4NDYwMTg3MTIsICJhdmciOiAxMjY4NjAxLjIsICJ1bml0IjogImJ5
dGVzIn0sICJEcm9tYWVvL2RvbS1tb2RpZnk6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAw
LjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0
ZXMifSwgIkRyb21hZW8vanNsaWItZXZlbnQtanF1ZXJ5IjogeyJtaW4iOiA2MzQuMzAxNjg2ODAz
NTE4MzUsICJtYXgiOiAxNDgyLjgzMzMzMTQxODA0NTksICJtZWRpYW4iOiAwLjAsICJzdGRldiI6
IDI1Ni44MjUwODg1MzkxMzYxMiwgImF2ZyI6IDExODMuNDk3MTkzMjg0MzIyMywgInVuaXQiOiAi
cnVucy9zIn0sICJCaW5kaW5ncy9maXJzdC1jaGlsZDpKU0hlYXAiOiB7Im1pbiI6IDEzMTk2ODgu
MCwgIm1heCI6IDEzNjcyMzIuMCwgIm1lZGlhbiI6IDEzMjUyNTIuMCwgInN0ZGV2IjogMTIzODAu
ODI4NjA1NTQ5NzY3LCAiYXZnIjogMTMyOTQzMC44LCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGlu
Z3MvZmlyc3QtY2hpbGQiOiB7Im1pbiI6IDc3Mi4wMTQ0NzUyNzE0MTEzNiwgIm1heCI6IDg3OS4x
MjA4NzkxMjA4NzkwNywgIm1lZGlhbiI6IDg3NC44NDgxMTY2NDY0MTU1MiwgInN0ZGV2IjogMjIu
NzM5NzYxMjQ2NTUxNjA5LCAiYXZnIjogODcwLjg4MDQwMjQ0MjkxMDM5LCAidW5pdCI6ICJydW5z
L3MifSwgIkJpbmRpbmdzL2V2ZW50LXRhcmdldC13cmFwcGVyOkpTSGVhcCI6IHsibWluIjogMTM1
MDY2NC4wLCAibWF4IjogMTM5OTI3Mi4wLCAibWVkaWFuIjogMTM1MjkwNC4wLCAic3RkZXYiOiAx
MzM5MC4yOTgwNjk4NzEzMzgsICJhdmciOiAxMzU4Mzc4LjAsICJ1bml0IjogImJ5dGVzIn0sICJE
cm9tYWVvL2pzbGliLW1vZGlmeS1wcm90b3R5cGUiOiB7Im1pbiI6IDE0NDQuMzIzMDcxMjA5OTk1
MSwgIm1heCI6IDE1NzIuNzE5OTU0Njk2MDAyNiwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMzUu
NTczMjQ0NTI1NjQ2NjAxLCAiYXZnIjogMTUzOC4wODI5MjA1MTIwOTk1LCAidW5pdCI6ICJydW5z
L3MifSwgIkJpbmRpbmdzL2dldC1lbGVtZW50cy1ieS10YWctbmFtZSI6IHsibWluIjogNDA3LjY0
MzMxMjEwMTkxMDg1LCAibWF4IjogNDMxLjY1NDY3NjI1ODk5MjgyLCAibWVkaWFuIjogNDI5Ljg1
MDg5OTQ3OTA0NjM1LCAic3RkZXYiOiA1LjM4MTA2NjUwNzExNTIwMiwgImF2ZyI6IDQyNy4xOTUy
NzEzMzQ5ODQ5NywgInVuaXQiOiAicnVucy9zIn0sICJEcm9tYWVvL2pzbGliLXRyYXZlcnNlLXBy
b3RvdHlwZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwg
InN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2V0
LWVsZW1lbnQtYnktaWQ6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4i
OiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRp
bmdzL2dldC1hdHRyaWJ1dGU6SlNIZWFwIjogeyJtaW4iOiAxMzE5NzQ0LjAsICJtYXgiOiAxMzY3
MDI0LjAsICJtZWRpYW4iOiAxMzI1NzQ0LjAsICJzdGRldiI6IDEyMTk0LjM4NjcxNTIwNjIwNSwg
ImF2ZyI6IDEzMjk3NjYuOCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vY3NzcXVlcnktcHJv
dG90eXBlIjogeyJtaW4iOiAzMTAyNjEuMCwgIm1heCI6IDMxNTU1My4wLCAibWVkaWFuIjogMC4w
LCAic3RkZXYiOiA5MzAuODkyMjA2NDM0MjM1NzMsICJhdmciOiAzMTM5NTkuMCwgInVuaXQiOiAi
cnVucy9zIn0sICJCaW5kaW5ncy90eXBlZC1hcnJheS1jb25zdHJ1Y3QtZnJvbS10eXBlZDpNYWxs
b2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4w
LCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3Mvbm9kZS1saXN0LWFjY2Vz
cyI6IHsibWluIjogMjEzLjI3MDE0MjE4MDA5NDc4LCAibWF4IjogMjE4LjE4MTgxODE4MTgxODE5
LCAibWVkaWFuIjogMjE3LjM5MTMwNDM0NzgyNjA5LCAic3RkZXYiOiAxLjA4NjgxMTIxNTg0NDM4
ODMsICJhdmciOiAyMTcuMTIxNDgyOTg3MDUyMzYsICJ1bml0IjogInJ1bnMvcyJ9LCAiQmluZGlu
Z3MvaWQtc2V0dGVyOkpTSGVhcCI6IHsibWluIjogMTMxOTMzNi4wLCAibWF4IjogMTM2NzE2OC4w
LCAibWVkaWFuIjogMTMyNDgxNi4wLCAic3RkZXYiOiAxMjQwOS4wNzE2NDI5NTU1NDUsICJhdmci
OiAxMzI5MDYwLjM5OTk5OTk5OTcsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2Nzc3F1ZXJ5
LWpxdWVyeSI6IHsibWluIjogMzA0MjUxMC4wLCAibWF4IjogMzExNDM5Ny4wLCAibWVkaWFuIjog
MC4wLCAic3RkZXYiOiAyMjgwNS44MDcwMDYxMTE0MDUsICJhdmciOiAzMDg5NDM2LjIwMDAwMDAw
MDcsICJ1bml0IjogInJ1bnMvcyJ9LCAiQmluZGluZ3MvdW5kZWZpbmVkLWdldC1lbGVtZW50LWJ5
LWlkIjogeyJtaW4iOiAzMjYuNzIxMTIwMTg2Njk3NzYsICJtYXgiOiAzNDUuNjc5MDEyMzQ1Njc4
OTgsICJtZWRpYW4iOiAzNDIuOTI3MjU2NTgxOTQ3MzUsICJzdGRldiI6IDMuOTE4MjM3NTIwNDEz
OTY3NCwgImF2ZyI6IDM0MS45NDc2NTYwNjUxNTMxOCwgInVuaXQiOiAicnVucy9zIn0sICJEcm9t
YWVvL2pzbGliLXRyYXZlcnNlLWpxdWVyeTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAu
MCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRl
cyJ9LCAiRHJvbWFlby9kcm9tYWVvLTNkLWN1YmUiOiB7Im1pbiI6IDIyMTIuMCwgIm1heCI6IDIy
NzYuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMjMuOTY0NTU3MTYyNjA5OTUzLCAiYXZnIjog
MjI1Mi41OTk5OTk5OTk5OTk5LCAidW5pdCI6ICJydW5zL3MifSwgIkRyb21hZW8vc3Vuc3BpZGVy
LWNyeXB0by1tZDU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAw
LjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8v
ZG9tLWF0dHIiOiB7Im1pbiI6IDY3OTIuNjU2MzQzNjU2MzQzOCwgIm1heCI6IDY5MjkuMjg5NDIx
MTU3Njg1LCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAzMy42MjU2MzE3MzQ1ODExOTEsICJhdmci
OiA2ODQwLjA5NjQ0NTY3MDA5ODUsICJ1bml0IjogInJ1bnMvcyJ9LCAiQmluZGluZ3Mvc2V0LWF0
dHJpYnV0ZTpKU0hlYXAiOiB7Im1pbiI6IDEzMTkzMzYuMCwgIm1heCI6IDEzNjY3NzYuMCwgIm1l
ZGlhbiI6IDEzMjUxMTYuMCwgInN0ZGV2IjogMTIzMjUuNTExNjI0MjY5MjkzLCAiYXZnIjogMTMy
OTEyNC4wMDAwMDAwMDAyLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvdHlwZWQtYXJyYXkt
Y29uc3RydWN0LWZyb20tdHlwZWQ6SlNIZWFwIjogeyJtaW4iOiAxMjczOTIwLjAsICJtYXgiOiAx
Mjg1MzA0LjAsICJtZWRpYW4iOiAxMjc2NzUyLjAsICJzdGRldiI6IDI0ODIuMTE3MTI4NTgxOTY5
NiwgImF2ZyI6IDEyNzcxNjQuMzk5OTk5OTk5OSwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8v
anNsaWItc3R5bGUtcHJvdG90eXBlOkpTSGVhcCI6IHsibWluIjogMjYwNDQ2MDAuMCwgIm1heCI6
IDI2MDQ0NjAwLjAsICJtZWRpYW4iOiAyNjA0NDYwMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAy
NjA0NDYwMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvdHlwZWQtYXJyYXktY29uc3Ry
dWN0LWZyb20tc2FtZS10eXBlIjogeyJtaW4iOiA0MS4wLCAibWF4IjogNDQuMCwgIm1lZGlhbiI6
IDQzLjUsICJzdGRldiI6IDEuMTc4OTgyNjEyMjU1MTU4MywgImF2ZyI6IDQyLjkwMDAwMDAwMDAw
MDAwNiwgInVuaXQiOiAibXMifSwgIkRyb21hZW8vZG9tLXRyYXZlcnNlOk1hbGxvYyI6IHsibWlu
IjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAw
LjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy90eXBlZC1hcnJheS1jb25zdHJ1Y3QtZnJv
bS1zYW1lLXR5cGU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAw
LjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8v
anNsaWItc3R5bGUtanF1ZXJ5IjogeyJtaW4iOiAzOTI4LjExMDYwMDE4ODMwOSwgIm1heCI6IDQw
MzMuNjI4MjY3MjM1MTQ3NiwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMjQuMzgwNjcwMDU2MDc5
MjE0LCAiYXZnIjogNDAwMS4xNTY0MzQwODk2MTkzLCAidW5pdCI6ICJydW5zL3MifSwgIkRyb21h
ZW8vZHJvbWFlby1jb3JlLWV2YWwiOiB7Im1pbiI6IDc1ODUuNjgyOTUxMTQ2NTYwMywgIm1heCI6
IDc2MDEuODkzMTA2ODkzMTA3LCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiA1Ljc0Mzk5Njk5MjU2
ODU4MjEsICJhdmciOiA3NTkyLjIzODkwMDQwNDc3LCAidW5pdCI6ICJydW5zL3MifSwgIkJpbmRp
bmdzL2luc2VydC1iZWZvcmUiOiB7Im1pbiI6IDE4MC4xODAxODAxODAxODAxNywgIm1heCI6IDE4
MS4zNDcxNTAyNTkwNjczNSwgIm1lZGlhbiI6IDE4MC42NDUxNjEyOTAzMjI1OSwgInN0ZGV2Ijog
MC4zODAxNTkxMDMxMTY0MTEyMSwgImF2ZyI6IDE4MC43NjI1ODA4MzA5MTMyNywgInVuaXQiOiAi
cnVucy9zIn0sICJEcm9tYWVvL2pzbGliLXRyYXZlcnNlLXByb3RvdHlwZSI6IHsibWluIjogMTEy
MTEuMCwgIm1heCI6IDExMjgzLjIyOTU0MDkxODE2NCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2Ijog
MTQuNDMxMjY4Njg0NTQzNzMzLCAiYXZnIjogMTEyNTEuMzg2MTIxNjYyNzY4LCAidW5pdCI6ICJy
dW5zL3MifSwgIkRyb21hZW8vZHJvbWFlby1vYmplY3Qtc3RyaW5nIjogeyJtaW4iOiAxOTEzMjIu
MCwgIm1heCI6IDE5MjgwMS45NjEwMzg5NjEwNSwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMjY0
LjIzMDM5MzY0Mzk3MjM4LCAiYXZnIjogMTkyMTI1LjkxMTg4ODExMTkxLCAidW5pdCI6ICJydW5z
L3MifSwgIkRyb21hZW8vY3NzcXVlcnktZG9qbyI6IHsibWluIjogMTkxODM0LjgwMDkyMTMwMDky
LCAibWF4IjogMTk1MDAxLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDYxOS44NTcxMzI1MTY0
ODk5NywgImF2ZyI6IDE5NDA1MC4xNjAxODQyNjAxNywgInVuaXQiOiAicnVucy9zIn0sICJEcm9t
YWVvL2pzbGliLW1vZGlmeS1wcm90b3R5cGU6SlNIZWFwIjogeyJtaW4iOiA4OTgwNzU4NC4wLCAi
bWF4IjogODk4MDc1ODQuMCwgIm1lZGlhbiI6IDg5ODA3NTg0LjAsICJzdGRldiI6IDAuMCwgImF2
ZyI6IDg5ODA3NTg0LjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL3N1bnNwaWRlci1jcnlw
dG8tbWQ1IjogeyJtaW4iOiA1MTg0LjAsICJtYXgiOiA1MzA5LjAsICJtZWRpYW4iOiAwLjAsICJz
dGRldiI6IDUwLjM2NTY2MjkwNjM4ODkxMywgImF2ZyI6IDUyNjcuMTk5OTk5OTk5OTk5OCwgInVu
aXQiOiAicnVucy9zIn0sICJEcm9tYWVvL3N1bnNwaWRlci1jcnlwdG8tc2hhMTpNYWxsb2MiOiB7
Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZn
IjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvaWQtZ2V0dGVyIjogeyJtaW4iOiAz
MjAuMCwgIm1heCI6IDM0Mi4xMDUyNjMxNTc4OTQ3NCwgIm1lZGlhbiI6IDM0MC4zMTQxMzYxMjU2
NTQ0NCwgInN0ZGV2IjogNC41NjM5NDM3MTA2OTc0NDUsICJhdmciOiAzMzkuNzQ1Mzg4MzgwNjgx
MTYsICJ1bml0IjogInJ1bnMvcyJ9LCAiRHJvbWFlby9zdW5zcGlkZXItY3J5cHRvLW1kNTpKU0hl
YXAiOiB7Im1pbiI6IDcyMzkzOTIuMCwgIm1heCI6IDcyMzkzOTIuMCwgIm1lZGlhbiI6IDcyMzkz
OTIuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogNzIzOTM5Mi4wLCAidW5pdCI6ICJieXRlcyJ9LCAi
RHJvbWFlby9kb20tYXR0cjpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlh
biI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJv
bWFlby9qc2xpYi10cmF2ZXJzZS1qcXVlcnkiOiB7Im1pbiI6IDM3NjQuNDYwMDE3NTMwNjgxOSwg
Im1heCI6IDM3ODcuNjU2Mjc0MDg4NDU0NywgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogNS4xNDQx
NzkzNTk1NjAzNjY2LCAiYXZnIjogMzc3Ny4xMDYxOTY1MTkzMTg1LCAidW5pdCI6ICJydW5zL3Mi
fSwgIkJpbmRpbmdzL2V2ZW50LXRhcmdldC13cmFwcGVyOk1hbGxvYyI6IHsibWluIjogMC4wLCAi
bWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0
IjogImJ5dGVzIn0sICJCaW5kaW5ncy9zZXQtYXR0cmlidXRlIjogeyJtaW4iOiA4NzEuNjcwNzAy
MTc5MTc2NzEsICJtYXgiOiA4NzUuOTEyNDA4NzU5MTI0MTEsICJtZWRpYW4iOiA4NzIuNzI3Mjcy
NzI3MjcyNzUsICJzdGRldiI6IDEuMzI0MjI1NDQxOTk0MzM0LCAiYXZnIjogODcyLjk0MDg5OTU1
Nzk0MzM0LCAidW5pdCI6ICJydW5zL3MifSwgIkJpbmRpbmdzL25vZGUtbGlzdC1hY2Nlc3M6TWFs
bG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAu
MCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2V2ZW50LXRhcmdldC13
cmFwcGVyIjogeyJtaW4iOiAzNzAuMCwgIm1heCI6IDM3NC4wLCAibWVkaWFuIjogMzc0LjAsICJz
dGRldiI6IDEuNDkyNDgxMTU1NjU5OTAzOCwgImF2ZyI6IDM3Mi44NTAwMDAwMDAwMDAwMiwgInVu
aXQiOiAibXMifSwgIkJpbmRpbmdzL3VuZGVmaW5lZC1pZC1nZXR0ZXIiOiB7Im1pbiI6IDcyNC40
NTAxOTQwNDkxNTkxMSwgIm1heCI6IDczOC43ODYyNzk2ODMzNzczLCAibWVkaWFuIjogNzM2LjM1
Nzk3NzczMDEzMzQ4LCAic3RkZXYiOiAyLjkyOTc3MzA5MTc0NTM3MywgImF2ZyI6IDczNS43ODg5
NjAxMDIyMDE2LCAidW5pdCI6ICJydW5zL3MifSwgIkRyb21hZW8vY3NzcXVlcnktZG9qbzpKU0hl
YXAiOiB7Im1pbiI6IDMwMzU2ODA4LjAsICJtYXgiOiAzMDM1NjgwOC4wLCAibWVkaWFuIjogMzAz
NTY4MDguMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMzAzNTY4MDguMCwgInVuaXQiOiAiYnl0ZXMi
fSwgIkRyb21hZW8vanNsaWItc3R5bGUtanF1ZXJ5Ok1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4
IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0Ijog
ImJ5dGVzIn0sICJEcm9tYWVvL2pzbGliLWF0dHItanF1ZXJ5IjogeyJtaW4iOiA3NzcxLjM4MDYx
OTM4MDYxOTUsICJtYXgiOiA3ODI1LjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDExLjU0NDMx
NTM3MTM4NDk0LCAiYXZnIjogNzgwMi4wMzUzNjQ2MzUzNjUxLCAidW5pdCI6ICJydW5zL3MifSwg
IkJpbmRpbmdzL3R5cGVkLWFycmF5LWNvbnN0cnVjdC1mcm9tLWFycmF5Ok1hbGxvYyI6IHsibWlu
IjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAw
LjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy91bmRlZmluZWQtaWQtZ2V0dGVyOkpTSGVh
cCI6IHsibWluIjogMTMxOTc2MC4wLCAibWF4IjogMTM2NzIxNi4wLCAibWVkaWFuIjogMTMyNjY2
OC4wLCAic3RkZXYiOiAxMjI2Ny4wNTYzMzgwMTM1OSwgImF2ZyI6IDEzMjk5NjIuMCwgInVuaXQi
OiAiYnl0ZXMifSwgIkRyb21hZW8vZHJvbWFlby1vYmplY3QtcmVnZXhwOkpTSGVhcCI6IHsibWlu
IjogMjMzNDY2MzIuMCwgIm1heCI6IDIzMzQ2NjMyLjAsICJtZWRpYW4iOiAyMzM0NjYzMi4wLCAi
c3RkZXYiOiAwLjAsICJhdmciOiAyMzM0NjYzMi4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFl
by9qc2xpYi1hdHRyLXByb3RvdHlwZSI6IHsibWluIjogNTAwMy4zODM2MTYzODM2MTY4LCAibWF4
IjogNTAzNS42MjAzNzk2MjAzNzksICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDUuOTE0MDAwNzg3
NDUwNjMyNCwgImF2ZyI6IDUwMjEuNjc2MzIzNjc2MzI0NSwgInVuaXQiOiAicnVucy9zIn0sICJC
aW5kaW5ncy9pZC1zZXR0ZXI6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRp
YW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRy
b21hZW8vZHJvbWFlby1vYmplY3Qtc3RyaW5nOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4Ijog
MC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5
dGVzIn0sICJCaW5kaW5ncy9hcHBlbmQtY2hpbGQ6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgi
OiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAi
Ynl0ZXMifSwgIkRyb21hZW8vZG9tLXF1ZXJ5OkpTSGVhcCI6IHsibWluIjogODQ4Mjc4NC4wLCAi
bWF4IjogODQ4Mjc4NC4wLCAibWVkaWFuIjogODQ4Mjc4NC4wLCAic3RkZXYiOiAwLjAsICJhdmci
OiA4NDgyNzg0LjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2pzbGliLXRyYXZlcnNlLWpx
dWVyeTpKU0hlYXAiOiB7Im1pbiI6IDk1NDU5OTIuMCwgIm1heCI6IDk1NDU5OTIuMCwgIm1lZGlh
biI6IDk1NDU5OTIuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogOTU0NTk5Mi4wLCAidW5pdCI6ICJi
eXRlcyJ9LCAiRHJvbWFlby9kcm9tYWVvLWNvcmUtZXZhbDpNYWxsb2MiOiB7Im1pbiI6IDAuMCwg
Im1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5p
dCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvYXBwZW5kLWNoaWxkOkpTSGVhcCI6IHsibWluIjogMTMy
MTMzNi4wLCAibWF4IjogMTM2OTIzMi4wLCAibWVkaWFuIjogMTMyODA2OC4wLCAic3RkZXYiOiAx
MjIzMy43NDI0Nzg4OTgyODgsICJhdmciOiAxMzMyMDU4LjM5OTk5OTk5OTksICJ1bml0IjogImJ5
dGVzIn0sICJEcm9tYWVvL2pzbGliLWF0dHItanF1ZXJ5OkpTSGVhcCI6IHsibWluIjogNzE4NzYz
Mi4wLCAibWF4IjogNzE4NzYzMi4wLCAibWVkaWFuIjogNzE4NzYzMi4wLCAic3RkZXYiOiAwLjAs
ICJhdmciOiA3MTg3NjMyLjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2pzbGliLW1vZGlm
eS1qcXVlcnkiOiB7Im1pbiI6IDgyNDcuOTY0ODUzMjA1MjA4OCwgIm1heCI6IDExOTA5LjI5MDcw
OTI5MDcxLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAxMDU0LjYwOTE5OTAxMDI1MTYsICJhdmci
OiAxMDU4NC41Nzk4Mzg2NDY2ODEsICJ1bml0IjogInJ1bnMvcyJ9LCAiQmluZGluZ3MvdHlwZWQt
YXJyYXktY29uc3RydWN0LWZyb20tdHlwZWQiOiB7Im1pbiI6IDM5Ni4wLCAibWF4IjogNDAwLjAs
ICJtZWRpYW4iOiAzOTcuNSwgInN0ZGV2IjogMS4zNjM4MTgxNjk2OTg2MjI3LCAiYXZnIjogMzk3
LjgwMDAwMDAwMDAwMDAxLCAidW5pdCI6ICJtcyJ9LCAiQmluZGluZ3MvZ2V0LWVsZW1lbnQtYnkt
aWQ6SlNIZWFwIjogeyJtaW4iOiAxMzE1NTA0LjAsICJtYXgiOiAxMzYzMzUyLjAsICJtZWRpYW4i
OiAxMzIxNDIwLjAsICJzdGRldiI6IDEyMzk3LjAxOTUzODU4MjU4NiwgImF2ZyI6IDEzMjU0ODIu
NDAwMDAwMDAwMSwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL3Njcm9sbC10b3A6TWFsbG9j
IjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwg
ImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2lkLWdldHRlcjpNYWxsb2Mi
OiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAi
YXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9qc2xpYi1zdHlsZS1wcm90b3R5
cGUiOiB7Im1pbiI6IDczMTYuNzE0MTU0OTQwMzY4NiwgIm1heCI6IDc0NzYuODI3NjI2Mzc2ODgz
LCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAzNS4xMTI0NzIyNjQ2NzQ1MywgImF2ZyI6IDczODcu
MTMwMTM3ODc2NDM0NywgInVuaXQiOiAicnVucy9zIn0sICJEcm9tYWVvL2RvbS10cmF2ZXJzZTpK
U0hlYXAiOiB7Im1pbiI6IDc1NDM0MDguMCwgIm1heCI6IDc1NDM0MDguMCwgIm1lZGlhbiI6IDc1
NDM0MDguMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogNzU0MzQwOC4wLCAidW5pdCI6ICJieXRlcyJ9
LCAiRHJvbWFlby9qc2xpYi1hdHRyLWpxdWVyeTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6
IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJi
eXRlcyJ9LCAiRHJvbWFlby9kb20tYXR0cjpKU0hlYXAiOiB7Im1pbiI6IDEyMzkzMjE2LjAsICJt
YXgiOiAxMjM5MzIxNi4wLCAibWVkaWFuIjogMTIzOTMyMTYuMCwgInN0ZGV2IjogMC4wLCAiYXZn
IjogMTIzOTMyMTYuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL3VuZGVmaW5lZC1maXJz
dC1jaGlsZDpKU0hlYXAiOiB7Im1pbiI6IDEzMTk4MDAuMCwgIm1heCI6IDEzNjcyNTYuMCwgIm1l
ZGlhbiI6IDEzMjY3MTYuMCwgInN0ZGV2IjogMTIyNDUuMDA2MTA2OTgxMDAyLCAiYXZnIjogMTMz
MDAwOS4xOTk5OTk5OTk3LCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9zdW5zcGlkZXItY3J5
cHRvLXNoYTEiOiB7Im1pbiI6IDUwODUuMCwgIm1heCI6IDUxODEuMCwgIm1lZGlhbiI6IDAuMCwg
InN0ZGV2IjogNDEuMjIyNTY2NjM1Mjc4Nzg4LCAiYXZnIjogNTE1Ny4zOTk5OTk5OTk5OTk2LCAi
dW5pdCI6ICJydW5zL3MifSwgIkRyb21hZW8vanNsaWItZXZlbnQtcHJvdG90eXBlIjogeyJtaW4i
OiAyMTU0LjY1MDM0OTY1MDM0OTcsICJtYXgiOiAyMTk4LjY0NzM1MjY0NzM1MjgsICJtZWRpYW4i
OiAwLjAsICJzdGRldiI6IDEzLjUzNDcyNDgyNzYwMjAwMiwgImF2ZyI6IDIxODIuNzg5MjEwNzg5
MjEwOCwgInVuaXQiOiAicnVucy9zIn0sICJCaW5kaW5ncy9pbnNlcnQtYmVmb3JlOk1hbGxvYyI6
IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJh
dmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9zZXQtYXR0cmlidXRlOk1hbGxv
YyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAs
ICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy91bmRlZmluZWQtZmlyc3Qt
Y2hpbGQ6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJz
dGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vY3NzcXVl
cnktanF1ZXJ5Ok1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4w
LCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn19LCAicGxhdGZvcm0i
OiAiY2hyb21pdW0iLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZpc2lv
biI6ICIifSwgeyJ0aW1lc3RhbXAiOiAxMzQ3MzYwMDE3LCAid2Via2l0LXJldmlzaW9uIjogIjEy
ODE0OCIsICJyZXN1bHRzIjogeyJEcm9tYWVvL2Ryb21hZW8tb2JqZWN0LWFycmF5Ok1hbGxvYyI6
IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJh
dmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nZXQtZWxlbWVudHMtYnktdGFn
LW5hbWUiOiB7Im1pbiI6IDQxMS44NDA0MTE4NDA0MTE4MywgIm1heCI6IDQzMy43MzQ5Mzk3NTkw
MzYxNCwgIm1lZGlhbiI6IDQzMS4zOTYyMDA0MDQ5NDU0OSwgInN0ZGV2IjogNC4zNzQ2NTIzMjE3
MDUyMjk4LCAiYXZnIjogNDMwLjYxMzU3MzM1NjM3NjA5LCAidW5pdCI6ICJydW5zL3MifSwgIkRy
b21hZW8vZHJvbWFlby1zdHJpbmctYmFzZTY0IjogeyJtaW4iOiA1NTU1LjAsICJtYXgiOiA1Njc5
LjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDQ3LjcwMjIwMTIwNzA3MjE5MywgImF2ZyI6IDU2
NDcuNjAwMDAwMDAwMDAwNCwgInVuaXQiOiAicnVucy9zIn0sICJEcm9tYWVvL2pzbGliLXRyYXZl
cnNlLXByb3RvdHlwZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6
IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFl
by9qc2xpYi1hdHRyLXByb3RvdHlwZSI6IHsibWluIjogNDk4OC4zNTk2NDAzNTk2NDAzLCAibWF4
IjogNTAyOC42MjMzNzY2MjMzNzYzLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiA4LjY0NDI5NTE5
Mzc4OTEzMTksICJhdmciOiA1MDEzLjg2ODMzMTY2ODMzMTgsICJ1bml0IjogInJ1bnMvcyJ9LCAi
RHJvbWFlby9kcm9tYWVvLW9iamVjdC1zdHJpbmc6SlNIZWFwIjogeyJtaW4iOiA5Mjk0NzA0LjAs
ICJtYXgiOiA5Mjk0NzA0LjAsICJtZWRpYW4iOiA5Mjk0NzA0LjAsICJzdGRldiI6IDAuMCwgImF2
ZyI6IDkyOTQ3MDQuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vZHJvbWFlby1vYmplY3Qt
cmVnZXhwOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAi
c3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nZXQt
YXR0cmlidXRlOkpTSGVhcCI6IHsibWluIjogMTMxOTc0NC4wLCAibWF4IjogMTM2NzAyNC4wLCAi
bWVkaWFuIjogMTMyNTc0NC4wLCAic3RkZXYiOiAxMjE5NC4zODY3MTUyMDYyMDUsICJhdmciOiAx
MzI5NzY2LjgsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2Nzc3F1ZXJ5LXByb3RvdHlwZSI6
IHsibWluIjogMzA4ODg1LjAsICJtYXgiOiAzMTQ1NDUuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2
IjogOTEzLjY5MjA3MDY2NzEzNjgyLCAiYXZnIjogMzEyODg4LjIwMDAwMDAwMDAxLCAidW5pdCI6
ICJydW5zL3MifSwgIkRyb21hZW8vZG9tLW1vZGlmeTpKU0hlYXAiOiB7Im1pbiI6IDI2NDEwMDQw
LjAsICJtYXgiOiAyNjQxMDA0MC4wLCAibWVkaWFuIjogMjY0MTAwNDAuMCwgInN0ZGV2IjogMC4w
LCAiYXZnIjogMjY0MTAwNDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL25vZGUtbGlz
dC1hY2Nlc3MiOiB7Im1pbiI6IDIxNy42NTQxNzE3MDQ5NTc2OSwgIm1heCI6IDIxOC45NzgxMDIx
ODk3ODEwMywgIm1lZGlhbiI6IDIxNy45MTc2NzU1NDQ3OTQxOCwgInN0ZGV2IjogMC4zMDAzNjIy
NjQyNDcxNTQxOCwgImF2ZyI6IDIxOC4xMTYxMzU0OTE4NDcxNiwgInVuaXQiOiAicnVucy9zIn0s
ICJCaW5kaW5ncy9nZXQtZWxlbWVudHMtYnktdGFnLW5hbWU6TWFsbG9jIjogeyJtaW4iOiAwLjAs
ICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVu
aXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2lkLWdldHRlcjpNYWxsb2MiOiB7Im1pbiI6IDAuMCwg
Im1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5p
dCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvaWQtc2V0dGVyOkpTSGVhcCI6IHsibWluIjogMTMxOTQy
NC4wLCAibWF4IjogMTM2NzE2OC4wLCAibWVkaWFuIjogMTMyNTIxMi4wLCAic3RkZXYiOiAxMjMx
Ni4xMTI0OTcwNTA0MDIsICJhdmciOiAxMzI5NDQ4LjM5OTk5OTk5OTksICJ1bml0IjogImJ5dGVz
In0sICJEcm9tYWVvL2Nzc3F1ZXJ5LWpxdWVyeSI6IHsibWluIjogMzExMTc3My43NDM2ODIzMTA1
LCAibWF4IjogMzE5NTY2OC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAyMzgxOC4wNzYzMjgx
Njk1NzMsICJhdmciOiAzMTcwMDQ3Ljc0ODczNjQ2MTIsICJ1bml0IjogInJ1bnMvcyJ9LCAiQmlu
ZGluZ3MvdW5kZWZpbmVkLWdldC1lbGVtZW50LWJ5LWlkIjogeyJtaW4iOiAzMTAuMDc3NTE5Mzc5
ODQ0OTQsICJtYXgiOiAzMzIuOTM2OTc5Nzg1OTY5MDcsICJtZWRpYW4iOiAzMzEuMzYwOTQ2NzQ1
NTYyMSwgInN0ZGV2IjogNC42OTM3NDg4NTM4MDgxNjEzLCAiYXZnIjogMzMwLjQzNDc0NzEzMzQ4
OTQ1LCAidW5pdCI6ICJydW5zL3MifSwgIkJpbmRpbmdzL3R5cGVkLWFycmF5LWNvbnN0cnVjdC1m
cm9tLXR5cGVkOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4w
LCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy91
bmRlZmluZWQtZmlyc3QtY2hpbGQiOiB7Im1pbiI6IDY4Ny4xMTY1NjQ0MTcxNzc4NywgIm1heCI6
IDc2MC4wOTUwMTE4NzY0ODQ1OSwgIm1lZGlhbiI6IDc1Ny4zOTY0NDk3MDQxNDIwMSwgInN0ZGV2
IjogMTUuNTk2MjU4MTkzNjc1MTQ2LCAiYXZnIjogNzUzLjkyNTU5ODU1NDUzNjI0LCAidW5pdCI6
ICJydW5zL3MifSwgIkJpbmRpbmdzL2dldC1lbGVtZW50LWJ5LWlkIjogeyJtaW4iOiAyODkuMDkz
Mjk4MjkxNzIxNCwgIm1heCI6IDI5OC44NzkyMDI5ODg3OTIwMywgIm1lZGlhbiI6IDI5OC4xMzY2
NDU5NjI3MzI5MywgInN0ZGV2IjogMi4xMjczNjQ1NzUwNjQ4MywgImF2ZyI6IDI5Ny41NTc0NzEy
MTMwNjcxMiwgInVuaXQiOiAicnVucy9zIn0sICJCaW5kaW5ncy9nZXQtYXR0cmlidXRlOk1hbGxv
YyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAs
ICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2pzbGliLXRyYXZlcnNlLWpx
dWVyeTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0
ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9qc2xpYi1h
dHRyLXByb3RvdHlwZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6
IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFl
by9jc3NxdWVyeS1wcm90b3R5cGU6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJt
ZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwg
IkRyb21hZW8vZHJvbWFlby0zZC1jdWJlIjogeyJtaW4iOiAyMjE3LjAsICJtYXgiOiAyMjcyLjAs
ICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDIwLjYzMjQ5ODYzNjg1OTI3OCwgImF2ZyI6IDIyNTEu
ODAwMDAwMDAwMDAwMiwgInVuaXQiOiAicnVucy9zIn0sICJEcm9tYWVvL3N1bnNwaWRlci1jcnlw
dG8tbWQ1Ok1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAi
c3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy90eXBl
ZC1hcnJheS1zZXQtZnJvbS10eXBlZCI6IHsibWluIjogMTY0LjAsICJtYXgiOiAxNjguMCwgIm1l
ZGlhbiI6IDE2NS4wLCAic3RkZXYiOiAxLjE5NDc4MDMxNDUzNDg1NjEsICJhdmciOiAxNjUuNjQ5
OTk5OTk5OTk5OTgsICJ1bml0IjogIm1zIn0sICJEcm9tYWVvL2RvbS1hdHRyIjogeyJtaW4iOiA2
OTc4LjAsICJtYXgiOiA3MTE1LjMzMTMzNzMyNTM0OTUsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6
IDMwLjUxOTgwNjk3NDg0OTQwMiwgImF2ZyI6IDcwNDEuNTM2MTk3NTM0OTk4OCwgInVuaXQiOiAi
cnVucy9zIn0sICJEcm9tYWVvL2pzbGliLWV2ZW50LXByb3RvdHlwZTpNYWxsb2MiOiB7Im1pbiI6
IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4w
LCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvdHlwZWQtYXJyYXktY29uc3RydWN0LWZyb20t
dHlwZWQ6SlNIZWFwIjogeyJtaW4iOiAxMjczOTIwLjAsICJtYXgiOiAxMjg1MzkyLjAsICJtZWRp
YW4iOiAxMjc2NzUyLjAsICJzdGRldiI6IDI0OTYuNTc4MDA5OTk2ODg0MiwgImF2ZyI6IDEyNzcx
NjguOCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vanNsaWItbW9kaWZ5LWpxdWVyeTpKU0hl
YXAiOiB7Im1pbiI6IDIyODQ4Nzk2OC4wLCAibWF4IjogMjI4NDg3OTY4LjAsICJtZWRpYW4iOiAy
Mjg0ODc5NjguMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMjI4NDg3OTY4LjAsICJ1bml0IjogImJ5
dGVzIn0sICJCaW5kaW5ncy9pZC1nZXR0ZXI6SlNIZWFwIjogeyJtaW4iOiAxMzE5NzUyLjAsICJt
YXgiOiAxMzY3MDg4LjAsICJtZWRpYW4iOiAxMzI1Nzg4LjAsICJzdGRldiI6IDEyMjA0LjA0NDA3
NzI3MjIzMiwgImF2ZyI6IDEzMjk4MjIuMzk5OTk5OTk5NywgInVuaXQiOiAiYnl0ZXMifSwgIkRy
b21hZW8vanNsaWItc3R5bGUtcHJvdG90eXBlOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4Ijog
MC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5
dGVzIn0sICJCaW5kaW5ncy9pZC1zZXR0ZXIiOiB7Im1pbiI6IDI0Mi40MjQyNDI0MjQyNDI0NCwg
Im1heCI6IDI0Ni42MDkxMjQ1Mzc2MDc5LCAibWVkaWFuIjogMjQ0Ljc5ODA0MTYxNTY2NzA3LCAi
c3RkZXYiOiAxLjU0MDI0ODA0NjE2MjMwODcsICJhdmciOiAyNDQuMjY5NjA1MjI0OTQ0OTQsICJ1
bml0IjogInJ1bnMvcyJ9LCAiQmluZGluZ3Mvc2Nyb2xsLXRvcCI6IHsibWluIjogMjU0LjEyOTYw
NjA5OTExMDU2LCAibWF4IjogMjU5LjA2NzM1NzUxMjk1MzM4LCAibWVkaWFuIjogMjU3LjczMTk1
ODc2Mjg4NjYyLCAic3RkZXYiOiAxLjU4ODAwMzIxNjUyMzE4MTksICJhdmciOiAyNTcuMzc2OTk1
OTY3Njk5NDMsICJ1bml0IjogInJ1bnMvcyJ9LCAiQmluZGluZ3MvdHlwZWQtYXJyYXktY29uc3Ry
dWN0LWZyb20tc2FtZS10eXBlOkpTSGVhcCI6IHsibWluIjogMTI2NjY5Ni4wLCAibWF4IjogMTMx
NTY1Ni4wLCAibWVkaWFuIjogMTI3MTgwNC4wLCAic3RkZXYiOiAxMjgzOC4zMDM3NTcxMTY4MDYs
ICJhdmciOiAxMjc2MzY2LjgsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2pzbGliLXN0eWxl
LXByb3RvdHlwZTpKU0hlYXAiOiB7Im1pbiI6IDIzNzk1OTIwLjAsICJtYXgiOiAyMzc5NTkyMC4w
LCAibWVkaWFuIjogMjM3OTU5MjAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMjM3OTU5MjAuMCwg
InVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vanNsaWItdHJhdmVyc2UtcHJvdG90eXBlOkpTSGVh
cCI6IHsibWluIjogMTAyOTYxMTIuMCwgIm1heCI6IDEwMjk2MTEyLjAsICJtZWRpYW4iOiAxMDI5
NjExMi4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAxMDI5NjExMi4wLCAidW5pdCI6ICJieXRlcyJ9
LCAiRHJvbWFlby9qc2xpYi1tb2RpZnktcHJvdG90eXBlOkpTSGVhcCI6IHsibWluIjogOTI3NzA2
ODguMCwgIm1heCI6IDkyNzcwNjg4LjAsICJtZWRpYW4iOiA5Mjc3MDY4OC4wLCAic3RkZXYiOiAw
LjAsICJhdmciOiA5Mjc3MDY4OC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvdHlwZWQt
YXJyYXktY29uc3RydWN0LWZyb20tc2FtZS10eXBlIjogeyJtaW4iOiA0MC4wLCAibWF4IjogNDQu
MCwgIm1lZGlhbiI6IDQyLjAsICJzdGRldiI6IDEuMTk0NzgwMzE0NTM0ODQ3NywgImF2ZyI6IDQx
LjY1MDAwMDAwMDAwMDAwNiwgInVuaXQiOiAibXMifSwgIkRyb21hZW8vZG9tLXRyYXZlcnNlOk1h
bGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAw
LjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2Ryb21hZW8tY29yZS1l
dmFsOkpTSGVhcCI6IHsibWluIjogMTE4Mjg3MjAuMCwgIm1heCI6IDExODI4NzIwLjAsICJtZWRp
YW4iOiAxMTgyODcyMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAxMTgyODcyMC4wLCAidW5pdCI6
ICJieXRlcyJ9LCAiQmluZGluZ3MvYXBwZW5kLWNoaWxkIjogeyJtaW4iOiAyODcuMjA2MjY2MzE4
NTM3ODcsICJtYXgiOiAyOTcuNzY2NzQ5Mzc5NjUyNTksICJtZWRpYW4iOiAyOTYuMjk2Mjk2Mjk2
Mjk2MywgInN0ZGV2IjogMi41OTYyMzQ2NTQzODgwMzg4LCAiYXZnIjogMjk1LjY2NzU1NTgxMTY0
ODc1LCAidW5pdCI6ICJydW5zL3MifSwgIkJpbmRpbmdzL3R5cGVkLWFycmF5LWNvbnN0cnVjdC1m
cm9tLXNhbWUtdHlwZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6
IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFl
by9qc2xpYi1ldmVudC1wcm90b3R5cGU6SlNIZWFwIjogeyJtaW4iOiAxNjc1OTA0MC4wLCAibWF4
IjogMTY3NTkwNDAuMCwgIm1lZGlhbiI6IDE2NzU5MDQwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6
IDE2NzU5MDQwLjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2pzbGliLXN0eWxlLWpxdWVy
eSI6IHsibWluIjogNDMxMC42OTI3MTMzMjg0MjQ0LCAibWF4IjogNDQzNC4zNTM3NDk4MzQ2NjQx
LCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAyNi42MzI5OTIzMjI0NjA3NDQsICJhdmciOiA0Mzk1
LjQxNDExNTgyNTIxOTYsICJ1bml0IjogInJ1bnMvcyJ9LCAiRHJvbWFlby9jc3NxdWVyeS1kb2pv
Ok1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYi
OiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2Ryb21hZW8tY29y
ZS1ldmFsIjogeyJtaW4iOiA3NTkwLjg4MjExNzg4MjExODEsICJtYXgiOiA3NjE0LjE2NTgzOTEy
NjExNzEsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDkuNzc1MTA2MTMzODM0MTQzLCAiYXZnIjog
NzYwNC4zMTQ2Mjg3MzcxOTI4LCAidW5pdCI6ICJydW5zL3MifSwgIkJpbmRpbmdzL2ZpcnN0LWNo
aWxkOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3Rk
ZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2Ryb21hZW8t
b2JqZWN0LXJlZ2V4cCI6IHsibWluIjogMzc3MzEuNTExMDEyNTEyODU2LCAibWF4IjogMzc5MTAu
NDU1MzQ3MDc0NjkxLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAxOC43MjYxNjE2MDE2NDE0NTEs
ICJhdmciOiAzNzgzMi4wNjM1NjA0NDkxNjIsICJ1bml0IjogInJ1bnMvcyJ9LCAiRHJvbWFlby9k
b20tbW9kaWZ5IjogeyJtaW4iOiA0MDA1LjU0NzkzOTYxNjQ4MjgsICJtYXgiOiA0NTQ1LjQ4MjUy
MjQ2NzU1MjQsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDEzOC40MTY0ODc5OTQ1MTY3OSwgImF2
ZyI6IDQyMzkuNzg5NzYwMjA2MjE4NSwgInVuaXQiOiAicnVucy9zIn0sICJCaW5kaW5ncy9pbnNl
cnQtYmVmb3JlIjogeyJtaW4iOiAyMDMuODIxNjU2MDUwOTU1NDMsICJtYXgiOiAyMDUuMzkxNTI3
NTk5NDg2NTIsICJtZWRpYW4iOiAyMDQuNDcyOTI2OTM1MjI1MTksICJzdGRldiI6IDAuNDE0MDEz
OTY0ODI0MTgxOTYsICJhdmciOiAyMDQuNjA0NDE3NjYyMjIwMTMsICJ1bml0IjogInJ1bnMvcyJ9
LCAiQmluZGluZ3MvdHlwZWQtYXJyYXktc2V0LWZyb20tdHlwZWQ6TWFsbG9jIjogeyJtaW4iOiAw
LjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwg
InVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL3R5cGVkLWFycmF5LXNldC1mcm9tLXR5cGVkOkpT
SGVhcCI6IHsibWluIjogMTI3ODAwOC4wLCAibWF4IjogMTMzMTY4OC4wLCAibWVkaWFuIjogMTI4
MTM2MC4wLCAic3RkZXYiOiAxNDc1NC40MzYxMTEyMTc1MzksICJhdmciOiAxMjg3MzU1LjIsICJ1
bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2Ryb21hZW8tb2JqZWN0LXN0cmluZyI6IHsibWluIjog
MTg5NzUyLjQxMzU4NjQxMzU4LCAibWF4IjogMTkzNTI2LjYwNjM5MzYwNjQsICJtZWRpYW4iOiAw
LjAsICJzdGRldiI6IDkzOC4yOTMwMDkwNzA1OTMyNiwgImF2ZyI6IDE5MTUxMy4xNjgzMDMwODI4
MSwgInVuaXQiOiAicnVucy9zIn0sICJEcm9tYWVvL2Nzc3F1ZXJ5LWRvam8iOiB7Im1pbiI6IDE5
MjA1My40NzkzNDY3ODE5NCwgIm1heCI6IDE5NTUxMy4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYi
OiA2MDcuNzczODYxNTYzNjY0MzUsICJhdmciOiAxOTQ0NjYuMDk1ODY5MzU2MzksICJ1bml0Ijog
InJ1bnMvcyJ9LCAiRHJvbWFlby9qc2xpYi1tb2RpZnktcHJvdG90eXBlOk1hbGxvYyI6IHsibWlu
IjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAw
LjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL3N1bnNwaWRlci1jcnlwdG8tbWQ1IjogeyJt
aW4iOiA1NTc0LjAsICJtYXgiOiA1NzI1LjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDY0Ljk4
NDYxMzU2MzUxOTc4NywgImF2ZyI6IDU2OTAuMCwgInVuaXQiOiAicnVucy9zIn0sICJEcm9tYWVv
L3N1bnNwaWRlci1jcnlwdG8tc2hhMTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwg
Im1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9
LCAiRHJvbWFlby9qc2xpYi1zdHlsZS1qcXVlcnk6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgi
OiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAi
Ynl0ZXMifSwgIkRyb21hZW8vanNsaWItYXR0ci1wcm90b3R5cGU6SlNIZWFwIjogeyJtaW4iOiA2
NTQyMjY0LjAsICJtYXgiOiA2NTQyMjY0LjAsICJtZWRpYW4iOiA2NTQyMjY0LjAsICJzdGRldiI6
IDAuMCwgImF2ZyI6IDY1NDIyNjQuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2lkLWdl
dHRlciI6IHsibWluIjogMzUzLjA4OTUzMzQxNzQwMjI3LCAibWF4IjogMzc2LjAyODIwMjExNTE1
ODY1LCAibWVkaWFuIjogMzc0LjcwNzI1OTk1MzE2MTYxLCAic3RkZXYiOiA0Ljk1MzQ5NDc4ODg1
NTMzNTgsICJhdmciOiAzNzMuMjM0Mjk5Mjg3MTc0NDUsICJ1bml0IjogInJ1bnMvcyJ9LCAiRHJv
bWFlby9qc2xpYi1ldmVudC1qcXVlcnk6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAs
ICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMi
fSwgIkRyb21hZW8vc3Vuc3BpZGVyLWNyeXB0by1tZDU6SlNIZWFwIjogeyJtaW4iOiA4MTg1NDg4
LjAsICJtYXgiOiA4MTg1NDg4LjAsICJtZWRpYW4iOiA4MTg1NDg4LjAsICJzdGRldiI6IDAuMCwg
ImF2ZyI6IDgxODU0ODguMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL3Njcm9sbC10b3A6
SlNIZWFwIjogeyJtaW4iOiAxMzE4NTkyLjAsICJtYXgiOiAxMzY2MzQ0LjAsICJtZWRpYW4iOiAx
MzI0Mzg0LjAsICJzdGRldiI6IDEyMzUwLjM2MTY1MzAwNDM1NSwgImF2ZyI6IDEzMjg2ODQuNzk5
OTk5OTk5OCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vanNsaWItc3R5bGUtanF1ZXJ5OkpT
SGVhcCI6IHsibWluIjogNTY1NTU5OTIuMCwgIm1heCI6IDU2NTU1OTkyLjAsICJtZWRpYW4iOiA1
NjU1NTk5Mi4wLCAic3RkZXYiOiAwLjAsICJhdmciOiA1NjU1NTk5Mi4wLCAidW5pdCI6ICJieXRl
cyJ9LCAiRHJvbWFlby9zdW5zcGlkZXItY3J5cHRvLXNoYTE6SlNIZWFwIjogeyJtaW4iOiA3MzAy
NTEyLjAsICJtYXgiOiA3MzAyNTEyLjAsICJtZWRpYW4iOiA3MzAyNTEyLjAsICJzdGRldiI6IDAu
MCwgImF2ZyI6IDczMDI1MTIuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vanNsaWItdHJh
dmVyc2UtanF1ZXJ5IjogeyJtaW4iOiAzNzM5LjIyNTQ5MjUyMTUzNDgsICJtYXgiOiAzNzY2LjAy
MjQ2MjIxNTU0MDEsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDUuODc0Mzk0ODIyNTYxNTQzLCAi
YXZnIjogMzc1My4wMTYyNTQ2ODI2ODIzLCAidW5pdCI6ICJydW5zL3MifSwgIkJpbmRpbmdzL2Ny
ZWF0ZS1lbGVtZW50OkpTSGVhcCI6IHsibWluIjogOTI1NjMxNjAuMCwgIm1heCI6IDExMzM3OTE5
Mi4wLCAibWVkaWFuIjogMTEzMzUwNjIwLjAsICJzdGRldiI6IDQ1MzA4MzguNzAyMTk0MDIwMiwg
ImF2ZyI6IDExMjMxMjYwOC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9zdW5zcGlkZXIt
Y3J5cHRvLXNoYTEiOiB7Im1pbiI6IDUyMjUuMCwgIm1heCI6IDUzMjUuMCwgIm1lZGlhbiI6IDAu
MCwgInN0ZGV2IjogNDIuOTUxMTM1MDI1NzQ3NTc1LCAiYXZnIjogNTMwMC4zOTk5OTk5OTk5OTk2
LCAidW5pdCI6ICJydW5zL3MifSwgIkJpbmRpbmdzL3NldC1hdHRyaWJ1dGUiOiB7Im1pbiI6IDg4
OS45ODc2MzkwNjA1Njg2NSwgIm1heCI6IDkwMC4wLCAibWVkaWFuIjogODkzLjg1NTA5MzAxMzU3
ODMxLCAic3RkZXYiOiAyLjI4NzgxMTcyNzE0ODYzMiwgImF2ZyI6IDg5NC41ODI0NzM2NDgzNTE3
NywgInVuaXQiOiAicnVucy9zIn0sICJEcm9tYWVvL2pzbGliLWF0dHItanF1ZXJ5Ok1hbGxvYyI6
IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJh
dmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9zY3JvbGwtdG9wOk1hbGxvYyI6
IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJh
dmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9ub2RlLWxpc3QtYWNjZXNzOk1h
bGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAw
LjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9pbnNlcnQtYmVmb3Jl
OkpTSGVhcCI6IHsibWluIjogMTMyMjIzMi4wLCAibWF4IjogMTM3MDQ5Ni4wLCAibWVkaWFuIjog
MTMyOTExMi4wLCAic3RkZXYiOiAxMjI5NS41MzUzNDU4MDc1OTMsICJhdmciOiAxMzMyODczLjU5
OTk5OTk5OTYsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9ldmVudC10YXJnZXQtd3JhcHBl
ciI6IHsibWluIjogMzczLjAsICJtYXgiOiAzNzcuMCwgIm1lZGlhbiI6IDM3NS41LCAic3RkZXYi
OiAxLjMwMDAwMDAwMDAwMDA1MDQsICJhdmciOiAzNzQuODk5OTk5OTk5OTk5OTIsICJ1bml0Ijog
Im1zIn0sICJCaW5kaW5ncy91bmRlZmluZWQtaWQtZ2V0dGVyIjogeyJtaW4iOiA3MzUuODczODUw
MTk3MTA5MDUsICJtYXgiOiA3NDEuNzIxODU0MzA0NjM1NzEsICJtZWRpYW4iOiA3MzcuODEyOTEx
NzI1OTU1MjUsICJzdGRldiI6IDEuNTQ4MzczNzEzMzUzNzA4MSwgImF2ZyI6IDczOC4xNTY1NDMz
NTQ1MTYyLCAidW5pdCI6ICJydW5zL3MifSwgIkRyb21hZW8vY3NzcXVlcnktZG9qbzpKU0hlYXAi
OiB7Im1pbiI6IDM3ODg1ODY0LjAsICJtYXgiOiAzNzg4NTg2NC4wLCAibWVkaWFuIjogMzc4ODU4
NjQuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMzc4ODU4NjQuMCwgInVuaXQiOiAiYnl0ZXMifSwg
IkJpbmRpbmdzL3VuZGVmaW5lZC1pZC1nZXR0ZXI6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgi
OiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAi
Ynl0ZXMifSwgIkJpbmRpbmdzL3R5cGVkLWFycmF5LWNvbnN0cnVjdC1mcm9tLWFycmF5IjogeyJt
aW4iOiAyNTIuMCwgIm1heCI6IDI2OS4wLCAibWVkaWFuIjogMjU0LjUsICJzdGRldiI6IDMuNDQ5
NjM3NjYyMTMyMDgzLCAiYXZnIjogMjU0Ljk5OTk5OTk5OTk5OTk0LCAidW5pdCI6ICJtcyJ9LCAi
QmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXI6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgi
OiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAi
Ynl0ZXMifSwgIkRyb21hZW8vanNsaWItYXR0ci1qcXVlcnkiOiB7Im1pbiI6IDg2OTAuMzgzNjE2
MzgzNjE2OCwgIm1heCI6IDg3ODMuMzc5NjIwMzc5NjE5MiwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2
IjogMjAuOTYwNDMxNjY5NDI4MTU3LCAiYXZnIjogODc1Mi41NTI2NDczNTI2NDc5LCAidW5pdCI6
ICJydW5zL3MifSwgIkRyb21hZW8vanNsaWItYXR0ci1qcXVlcnk6SlNIZWFwIjogeyJtaW4iOiA4
NjAyOTM2LjAsICJtYXgiOiA4NjAyOTM2LjAsICJtZWRpYW4iOiA4NjAyOTM2LjAsICJzdGRldiI6
IDAuMCwgImF2ZyI6IDg2MDI5MzYuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL25vZGUt
bGlzdC1hY2Nlc3M6SlNIZWFwIjogeyJtaW4iOiA1MzU2NzM2LjAsICJtYXgiOiA1NDA1Mjk2LjAs
ICJtZWRpYW4iOiA1MzYyOTA0LjAsICJzdGRldiI6IDEyNzQwLjAyNTExMTQzNTQ2NywgImF2ZyI6
IDUzNjY4NzUuNTk5OTk5OTk5NiwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL3R5cGVkLWFy
cmF5LWNvbnN0cnVjdC1mcm9tLWFycmF5Ok1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4w
LCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVz
In0sICJEcm9tYWVvL2Nzc3F1ZXJ5LXByb3RvdHlwZTpKU0hlYXAiOiB7Im1pbiI6IDQyNDQ1MDQ4
LjAsICJtYXgiOiA0MjQ0NTA0OC4wLCAibWVkaWFuIjogNDI0NDUwNDguMCwgInN0ZGV2IjogMC4w
LCAiYXZnIjogNDI0NDUwNDguMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vanNsaWItdHJh
dmVyc2UtcHJvdG90eXBlIjogeyJtaW4iOiAxMDgzMi4wLCAibWF4IjogMTA5MTIuMjYzNDczMDUz
ODkyLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAyMS4wODE1Njc1NTE2NDQ5OCwgImF2ZyI6IDEw
ODc5LjU0ODU0NTY2NTkxMiwgInVuaXQiOiAicnVucy9zIn0sICJCaW5kaW5ncy90eXBlZC1hcnJh
eS1jb25zdHJ1Y3QtZnJvbS1hcnJheTpKU0hlYXAiOiB7Im1pbiI6IDgxMjc4MzkyLjAsICJtYXgi
OiA4MTMzMDMyOC4wLCAibWVkaWFuIjogODEyODIxNDguMCwgInN0ZGV2IjogMTA2NDQuNjM0Mjk5
MDI2ODUzLCAiYXZnIjogODEyODQ4NTEuMjAwMDAwMDAzLCAidW5pdCI6ICJieXRlcyJ9LCAiQmlu
ZGluZ3MvY3JlYXRlLWVsZW1lbnQ6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJt
ZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwg
IkJpbmRpbmdzL3NldC1hdHRyaWJ1dGU6SlNIZWFwIjogeyJtaW4iOiAxMzE5MjI0LjAsICJtYXgi
OiAxMzY2Nzc2LjAsICJtZWRpYW4iOiAxMzI1MTc2LjAsICJzdGRldiI6IDEyMzE5LjU1OTA3NjUy
NTY0OSwgImF2ZyI6IDEzMjkxMzYuMzk5OTk5OTk5NCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21h
ZW8vanNsaWItZXZlbnQtanF1ZXJ5IjogeyJtaW4iOiA3MTEuMjI1NzI0Mjk4NDUxNjEsICJtYXgi
OiAxNDAyLjE5MjY3ODIyNzM2MDQsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDIwOC42MzMzMzQy
NTA3NTg2OCwgImF2ZyI6IDExMzYuNDk0NTU1NzY3MTEyOCwgInVuaXQiOiAicnVucy9zIn0sICJE
cm9tYWVvL2Ryb21hZW8tb2JqZWN0LXJlZ2V4cDpKU0hlYXAiOiB7Im1pbiI6IDI5MDEyOTc2LjAs
ICJtYXgiOiAyOTAxMjk3Ni4wLCAibWVkaWFuIjogMjkwMTI5NzYuMCwgInN0ZGV2IjogMC4wLCAi
YXZnIjogMjkwMTI5NzYuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL3VuZGVmaW5lZC1n
ZXQtZWxlbWVudC1ieS1pZDpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlh
biI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJv
bWFlby9kb20tYXR0cjpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6
IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGlu
Z3MvaWQtc2V0dGVyOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjog
MC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVv
L2Nzc3F1ZXJ5LWpxdWVyeTpKU0hlYXAiOiB7Im1pbiI6IDQzNzIyNzYwLjAsICJtYXgiOiA0Mzcy
Mjc2MC4wLCAibWVkaWFuIjogNDM3MjI3NjAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogNDM3MjI3
NjAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vZHJvbWFlby1vYmplY3Qtc3RyaW5nOk1h
bGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAw
LjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9hcHBlbmQtY2hpbGQ6
TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6
IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vZHJvbWFlby0zZC1j
dWJlOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3Rk
ZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2RvbS1xdWVy
eTpKU0hlYXAiOiB7Im1pbiI6IDgxODc5MjguMCwgIm1heCI6IDgxODc5MjguMCwgIm1lZGlhbiI6
IDgxODc5MjguMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogODE4NzkyOC4wLCAidW5pdCI6ICJieXRl
cyJ9LCAiRHJvbWFlby9qc2xpYi10cmF2ZXJzZS1qcXVlcnk6SlNIZWFwIjogeyJtaW4iOiAxNDgw
ODIwMC4wLCAibWF4IjogMTQ4MDgyMDAuMCwgIm1lZGlhbiI6IDE0ODA4MjAwLjAsICJzdGRldiI6
IDAuMCwgImF2ZyI6IDE0ODA4MjAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2Ryb21h
ZW8tY29yZS1ldmFsOk1hbGxvYyI6IHsibWluIjogMC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjog
MC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVv
L2RvbS1xdWVyeTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAu
MCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9k
b20tcXVlcnkiOiB7Im1pbiI6IDk1NDA0OS4wLCAibWF4IjogOTcwMTIwLjAsICJtZWRpYW4iOiAw
LjAsICJzdGRldiI6IDY4MDAuNjA4MDcyNzQ4ODk3LCAiYXZnIjogOTYzNjE1LjI1MTM0ODY1MTM2
LCAidW5pdCI6ICJydW5zL3MifSwgIkJpbmRpbmdzL2FwcGVuZC1jaGlsZDpKU0hlYXAiOiB7Im1p
biI6IDEzMjEzOTIuMCwgIm1heCI6IDEzNjkyODAuMCwgIm1lZGlhbiI6IDEzMjgxNDQuMCwgInN0
ZGV2IjogMTIyMjAuMzg2NjEyNTQyMTM5LCAiYXZnIjogMTMzMjIxNi44LCAidW5pdCI6ICJieXRl
cyJ9LCAiRHJvbWFlby9kcm9tYWVvLXN0cmluZy1iYXNlNjQ6SlNIZWFwIjogeyJtaW4iOiAyMTg0
MDIwOC4wLCAibWF4IjogMjE4NDAyMDguMCwgIm1lZGlhbiI6IDIxODQwMjA4LjAsICJzdGRldiI6
IDAuMCwgImF2ZyI6IDIxODQwMjA4LjAsICJ1bml0IjogImJ5dGVzIn0sICJEcm9tYWVvL2pzbGli
LWV2ZW50LWpxdWVyeTpKU0hlYXAiOiB7Im1pbiI6IDU3ODA4NzIuMCwgIm1heCI6IDU3ODA4NzIu
MCwgIm1lZGlhbiI6IDU3ODA4NzIuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogNTc4MDg3Mi4wLCAi
dW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9qc2xpYi1tb2RpZnktanF1ZXJ5IjogeyJtaW4iOiA5
Mjk0LjMxMzcxNjQ3NTY1NTQsICJtYXgiOiAxMjE3OC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYi
OiA5NzcuMTc5NDI5NzYwMTQyMTcsICJhdmciOiAxMTEyOS41NTQ2ODM4NjI0NDMsICJ1bml0Ijog
InJ1bnMvcyJ9LCAiQmluZGluZ3MvdHlwZWQtYXJyYXktY29uc3RydWN0LWZyb20tdHlwZWQiOiB7
Im1pbiI6IDM3OS4wLCAibWF4IjogMzg0LjAsICJtZWRpYW4iOiAzODEuMCwgInN0ZGV2IjogMS40
MjgyODU2ODU3MDg1NjYyLCAiYXZnIjogMzgxLjYwMDAwMDAwMDAwMDAyLCAidW5pdCI6ICJtcyJ9
LCAiQmluZGluZ3MvZ2V0LWVsZW1lbnQtYnktaWQ6SlNIZWFwIjogeyJtaW4iOiAxMzE1NTA0LjAs
ICJtYXgiOiAxMzYzMzA0LjAsICJtZWRpYW4iOiAxMzIxNDIwLjAsICJzdGRldiI6IDEyMzg5LjY5
MDQyMzg5NjczMywgImF2ZyI6IDEzMjU0ODAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdz
L2dldC1lbGVtZW50cy1ieS10YWctbmFtZTpKU0hlYXAiOiB7Im1pbiI6IDEyNjE4NTYuMCwgIm1h
eCI6IDEzMDk3MzYuMCwgIm1lZGlhbiI6IDEyNjg3MjQuMCwgInN0ZGV2IjogMTIxNzguMTg1NDIx
NDgyMjEyLCAiYXZnIjogMTI3MjM0OS4xOTk5OTk5OTk3LCAidW5pdCI6ICJieXRlcyJ9LCAiRHJv
bWFlby9kcm9tYWVvLTNkLWN1YmU6SlNIZWFwIjogeyJtaW4iOiAxMDE5MTEzNi4wLCAibWF4Ijog
MTAxOTExMzYuMCwgIm1lZGlhbiI6IDEwMTkxMTM2LjAsICJzdGRldiI6IDAuMCwgImF2ZyI6IDEw
MTkxMTM2LjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9nZXQtZWxlbWVudC1ieS1pZDpN
YWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2Ijog
MC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZmlyc3QtY2hpbGQi
OiB7Im1pbiI6IDc3NC44MTg0MDE5MzcwNDYwMiwgIm1heCI6IDg3OS4xMjA4NzkxMjA4NzkwNywg
Im1lZGlhbiI6IDg3NC44NDgxMTY2NDY0MTU1MiwgInN0ZGV2IjogMjIuMDgxOTIwMjU4MjM1NzY5
LCAiYXZnIjogODcwLjgwNzQ3NzMwMTQxMzY2LCAidW5pdCI6ICJydW5zL3MifSwgIkJpbmRpbmdz
L2NyZWF0ZS1lbGVtZW50IjogeyJtaW4iOiAzMzcuNzU2MzMyOTMxMjQyNDcsICJtYXgiOiAzNDcu
ODI2MDg2OTU2NTIxNzUsICJtZWRpYW4iOiAzNDYuNzQ5MzU4OTUwNzY0OTksICJzdGRldiI6IDIu
NDI3MzE1ODE2MTc1NDYwMiwgImF2ZyI6IDM0NS45MDk4NDIxMzQ2NjQ5OCwgInVuaXQiOiAicnVu
cy9zIn0sICJEcm9tYWVvL2Ryb21hZW8tc3RyaW5nLWJhc2U2NDpNYWxsb2MiOiB7Im1pbiI6IDAu
MCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAi
dW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZ2V0LWF0dHJpYnV0ZSI6IHsibWluIjogMTkzLjAw
MzYxODgxNzg1Mjg0LCAibWF4IjogMjAxLjUxMTMzNTAxMjU5NDQ2LCAibWVkaWFuIjogMjAxLjAw
NTAyNTEyNTYyODE1LCAic3RkZXYiOiAxLjc0NDI1NzY3ODIyMTIxNTEsICJhdmciOiAyMDAuNTE2
OTY5MjUxMTI5NjcsICJ1bml0IjogInJ1bnMvcyJ9LCAiRHJvbWFlby9qc2xpYi1zdHlsZS1wcm90
b3R5cGUiOiB7Im1pbiI6IDc0MjEuMjA0NDIwODA1ODA0MSwgIm1heCI6IDc1NzYuMTYzNzUxODY4
NTM1NywgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMzMuNDczMzc5Mjk4Nzg5ODk0LCAiYXZnIjog
NzQ3NC45NDk0NDQzMTQyODMsICJ1bml0IjogInJ1bnMvcyJ9LCAiRHJvbWFlby9kb20tdHJhdmVy
c2UiOiB7Im1pbiI6IDI5MDkuMzUyNTE3NzQxNzM5NiwgIm1heCI6IDI5MzMuMTUxNjk2NjA2Nzg2
NiwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogNS42MTg2NjU4MDIxMTMxNDA0LCAiYXZnIjogMjky
My43NDA4MDI5MDk2NjUsICJ1bml0IjogInJ1bnMvcyJ9LCAiRHJvbWFlby9kcm9tYWVvLW9iamVj
dC1hcnJheSI6IHsibWluIjogNTcyMjguMTg1OTQyMjMwODQ4LCAibWF4IjogNTc1ODAuNTkzNDM1
NzgwNjg0LCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiA3MS4wMDI3NTk5NjY4Mjk4LCAiYXZnIjog
NTc0MTIuNjMyODMxMDA5ODk4LCAidW5pdCI6ICJydW5zL3MifSwgIkRyb21hZW8vZG9tLXRyYXZl
cnNlOkpTSGVhcCI6IHsibWluIjogNzUwMzcyOC4wLCAibWF4IjogNzUwMzcyOC4wLCAibWVkaWFu
IjogNzUwMzcyOC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiA3NTAzNzI4LjAsICJ1bml0IjogImJ5
dGVzIn0sICJEcm9tYWVvL2Ryb21hZW8tb2JqZWN0LWFycmF5OkpTSGVhcCI6IHsibWluIjogMTEw
MTI1MDQuMCwgIm1heCI6IDExMDEyNTA0LjAsICJtZWRpYW4iOiAxMTAxMjUwNC4wLCAic3RkZXYi
OiAwLjAsICJhdmciOiAxMTAxMjUwNC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9kb20t
YXR0cjpKU0hlYXAiOiB7Im1pbiI6IDUyNjg0NTYuMCwgIm1heCI6IDUyNjg0NTYuMCwgIm1lZGlh
biI6IDUyNjg0NTYuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogNTI2ODQ1Ni4wLCAidW5pdCI6ICJi
eXRlcyJ9LCAiQmluZGluZ3MvdW5kZWZpbmVkLWZpcnN0LWNoaWxkOkpTSGVhcCI6IHsibWluIjog
MTMxOTM4NC4wLCAibWF4IjogMTM2NjkyMC4wLCAibWVkaWFuIjogMTMyNTExMi4wLCAic3RkZXYi
OiAxMjM2Ni45MDc2MTAyMzEzOTQsICJhdmciOiAxMzI5MTczLjYwMDAwMDAwMDEsICJ1bml0Ijog
ImJ5dGVzIn0sICJCaW5kaW5ncy91bmRlZmluZWQtZ2V0LWVsZW1lbnQtYnktaWQ6SlNIZWFwIjog
eyJtaW4iOiAxMjU4NDgwLjAsICJtYXgiOiAxMzA2NDI0LjAsICJtZWRpYW4iOiAxMjY0MTEyLjAs
ICJzdGRldiI6IDEyMzEzLjY3NDExNjIwMTA5NywgImF2ZyI6IDEyNjg1NjYuMzk5OTk5OTk5OSwg
InVuaXQiOiAiYnl0ZXMifSwgIkRyb21hZW8vZG9tLW1vZGlmeTpNYWxsb2MiOiB7Im1pbiI6IDAu
MCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAi
dW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvdW5kZWZpbmVkLWlkLWdldHRlcjpKU0hlYXAiOiB7
Im1pbiI6IDEzMTk2NjQuMCwgIm1heCI6IDEzNjcyMTYuMCwgIm1lZGlhbiI6IDEzMjY1NjAuMCwg
InN0ZGV2IjogMTIyOTUuMTg0MTIzODc1NDMzLCAiYXZnIjogMTMyOTkwNi40MDAwMDAwMDAxLCAi
dW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZmlyc3QtY2hpbGQ6SlNIZWFwIjogeyJtaW4iOiAx
MzE5NTkyLjAsICJtYXgiOiAxMzY3MjMyLjAsICJtZWRpYW4iOiAxMzI1MzYwLjAsICJzdGRldiI6
IDEyMzg2LjM3NzcwNDU1OTIxNCwgImF2ZyI6IDEzMjk0OTQuMzk5OTk5OTk5OSwgInVuaXQiOiAi
Ynl0ZXMifSwgIkRyb21hZW8vanNsaWItZXZlbnQtcHJvdG90eXBlIjogeyJtaW4iOiAyMTE4LjUy
OTE4NzM3OTQ4NjgsICJtYXgiOiAyMTQwLjIzNjc2MzIzNjc2MzIsICJtZWRpYW4iOiAwLjAsICJz
dGRldiI6IDUuMzY0MTQ0MjA5MjA0OTE2MSwgImF2ZyI6IDIxMzIuNzUxNTkxNzIxNjUxNSwgInVu
aXQiOiAicnVucy9zIn0sICJCaW5kaW5ncy9pbnNlcnQtYmVmb3JlOk1hbGxvYyI6IHsibWluIjog
MC4wLCAibWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAic3RkZXYiOiAwLjAsICJhdmciOiAwLjAs
ICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9ldmVudC10YXJnZXQtd3JhcHBlcjpKU0hlYXAi
OiB7Im1pbiI6IDEzNTA2NjQuMCwgIm1heCI6IDEzOTkyNzIuMCwgIm1lZGlhbiI6IDEzNTI5MDQu
MCwgInN0ZGV2IjogMTMzOTAuMjk4MDY5ODcxMzM4LCAiYXZnIjogMTM1ODM3OC4wLCAidW5pdCI6
ICJieXRlcyJ9LCAiQmluZGluZ3Mvc2V0LWF0dHJpYnV0ZTpNYWxsb2MiOiB7Im1pbiI6IDAuMCwg
Im1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5p
dCI6ICJieXRlcyJ9LCAiRHJvbWFlby9qc2xpYi1tb2RpZnktcHJvdG90eXBlIjogeyJtaW4iOiAx
NDA4LjY0ODM5OTUwNDY4NjcsICJtYXgiOiAxNTU2LjQwOTg3NTU1MzU4ODEsICJtZWRpYW4iOiAw
LjAsICJzdGRldiI6IDM0LjA3OTY3NzM5MDcyNTE3MywgImF2ZyI6IDE1MTcuNjMxMTE0OTkyNzkx
NSwgInVuaXQiOiAicnVucy9zIn0sICJEcm9tYWVvL2pzbGliLW1vZGlmeS1qcXVlcnk6TWFsbG9j
IjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJzdGRldiI6IDAuMCwg
ImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL3VuZGVmaW5lZC1maXJzdC1j
aGlsZDpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInN0
ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6ICJieXRlcyJ9LCAiRHJvbWFlby9jc3NxdWVy
eS1qcXVlcnk6TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAs
ICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifX0sICJwbGF0Zm9ybSI6
ICJjaHJvbWl1bSIsICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgImNocm9taXVtLXJldmlzaW9u
IjogIiJ9XTwvc2NyaXB0Pgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwYWRkaW5nOiAwIDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9ImNvbnRh
aW5lciI+PC9kaXY+CjxzY3JpcHQ+CgpmdW5jdGlvbiBjcmVhdGVQbG90KHRlc3ROYW1lKSB7CiAg
ICB2YXIgc2VjdGlvbiA9ICQoJzxzZWN0aW9uPjxoMT48L2gxPjxkaXYgY2xhc3M9InBsb3QiPjwv
ZGl2PicKICAgICAgICArICc8c3BhbiBjbGFzcz0idG9vbHRpcCI+PC9zcGFuPjxzZWN0aW9uPicp
OwogICAgdmFyIHVuaXQgPSB0ZXN0VW5pdHNbdGVzdE5hbWVdOwogICAgc2VjdGlvbi5jaGlsZHJl
bignLnBsb3QnKS5jc3Moeyd3aWR0aCc6IDEwMCAqIG1heExlbmd0aCArICdweCcsICdoZWlnaHQn
OiAnMzAwcHgnfSk7CiAgICBzZWN0aW9uLmNoaWxkcmVuKCdoMScpLmh0bWwodGVzdE5hbWUgKyAo
dW5pdCA/ICcgKCcgKyB1bml0ICsgJyknIDogJycpKTsKICAgICQoJyNjb250YWluZXInKS5hcHBl
bmQoc2VjdGlvbik7CiAgICAKICAgIGF0dGFjaFBsb3QodGVzdE5hbWUsIHNlY3Rpb24pOwp9Cgpm
dW5jdGlvbiBhdHRhY2hQbG90KHRlc3ROYW1lLCBzZWN0aW9uLCBtaW5Jc1plcm8pIHsKICAgIHZh
ciBhdmVyYWdlcyA9IHRlc3RSZXN1bHRzW3Rlc3ROYW1lXTsKICAgIHZhciBjb2xvciA9ICdyZ2Io
MjMwLDUwLDUwKSc7CgogICAgdmFyIG1pbk1heE9wdGlvbnMgPSB7bGluZXM6IHtzaG93OnRydWUs
IGxpbmVXaWR0aDogMH0sCiAgICAgICAgY29sb3I6IGNvbG9yLAogICAgICAgIHBvaW50czoge3No
b3c6IHRydWUsIHJhZGl1czogMX0sCiAgICAgICAgYmFyczoge3Nob3c6IGZhbHNlfX07CgogICAg
ZnVuY3Rpb24gbWFrZUxvd1Bsb3QoaWQsIGRhdGEpIHsgcmV0dXJuICQuZXh0ZW5kKHRydWUsIHt9
LCBtaW5NYXhPcHRpb25zLCB7aWQ6IGlkLCBkYXRhOiBkYXRhfSk7IH0gICAgCiAgICBmdW5jdGlv
biBtYWtlSGlnaFBsb3QoZnJvbSwgdG8sIGZpbGwsIGRhdGEpIHsgcmV0dXJuICQuZXh0ZW5kKHRy
dWUsIHt9LCBtaW5NYXhPcHRpb25zLAogICAgICAgIHtpZDogdG8sIGRhdGE6IGRhdGF9KTsgfQoK
ICAgIHZhciBwbG90RGF0YSA9IFsKICAgICAgICBtYWtlTG93UGxvdCgnbWluJywgdGVzdFJlc3Vs
dHNNaW5bdGVzdE5hbWVdKSwKICAgICAgICBtYWtlSGlnaFBsb3QoJ21pbicsICdtYXgnLCAwLjIs
IHRlc3RSZXN1bHRzTWF4W3Rlc3ROYW1lXSksCiAgICAgICAgbWFrZUxvd1Bsb3QoJy0mIzk2Mzsn
LCB0ZXN0UmVzdWx0c1N0ZGV2TG93W3Rlc3ROYW1lXSksIC8vIHNtYWxsIGxldHRlciBzZ2ltYS4K
ICAgICAgICBtYWtlSGlnaFBsb3QoJy0mIzk2MzsnLCAnKyYjOTYzOycsIDAuNCwgdGVzdFJlc3Vs
dHNTdGRldkhpZ2hbdGVzdE5hbWVdKSwKICAgICAgICB7ZGF0YTogYXZlcmFnZXMsIGNvbG9yOiBj
b2xvcn1dOwoKICAgIHZhciBwbG90Q29udGFpbmVyID0gc2VjdGlvbi5jaGlsZHJlbignLnBsb3Qn
KTsKICAgICQucGxvdChwbG90Q29udGFpbmVyLCBwbG90RGF0YSwgewogICAgICAgIHhheGlzOiB7
CiAgICAgICAgICAgIG1pbjogYXZlcmFnZXNbMF1bMF0gLSAwLjUsCiAgICAgICAgICAgIG1heDog
YXZlcmFnZXNbYXZlcmFnZXMubGVuZ3RoIC0gMV1bMF0gKyAwLjUsCiAgICAgICAgICAgIHRpY2tT
aXplOiAxLAogICAgICAgICAgICB0aWNrczogYXZlcmFnZXMubWFwKGZ1bmN0aW9uICh2YWx1ZSwg
aW5kZXgpIHsKICAgICAgICAgICAgICAgIHZhciBsYWJlbCA9ICdyJyArIHdlYmtpdFJldmlzaW9u
c1tpbmRleF07CiAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRpb25zW2luZGV4XSkKICAgICAg
ICAgICAgICAgICAgICBsYWJlbCArPSAnICZkYXNoOyAnICsgZGVzY3JpcHRpb25zW2luZGV4XQog
ICAgICAgICAgICAgICAgcmV0dXJuIFtpbmRleCwgbGFiZWxdOwogICAgICAgICAgICB9KSwKICAg
ICAgICB9LAogICAgICAgIHlheGlzOiB7CiAgICAgICAgICAgIG1pbjogbWluSXNaZXJvID8gMCA6
IE1hdGgubWluLmFwcGx5KE1hdGgsICQubWFwKHRlc3RSZXN1bHRzTWluW3Rlc3ROYW1lXSwgZnVu
Y3Rpb24gKGVudHJ5KSB7IHJldHVybiBlbnRyeVsxXTsgfSkpICogMC45OCwKICAgICAgICAgICAg
bWF4OiBNYXRoLm1heC5hcHBseShNYXRoLCAkLm1hcCh0ZXN0UmVzdWx0c01heFt0ZXN0TmFtZV0s
IGZ1bmN0aW9uIChlbnRyeSkgeyByZXR1cm4gZW50cnlbMV07IH0pKSAqIChtaW5Jc1plcm8gPyAx
LjEgOiAxLjAxKSwKICAgICAgICB9LAogICAgICAgIGNyb3NzaGFpcjogeyBtb2RlOiAneScgfSwK
ICAgICAgICBzZXJpZXM6IHsgc2hhZG93U2l6ZTogMCB9LAogICAgICAgIGJhcnM6IHtzaG93OiB0
cnVlLCBhbGlnbjogJ2NlbnRlcicsIGJhcldpZHRoOiAwLjV9LAogICAgICAgIGxpbmVzOiB7IHNo
b3c6IGZhbHNlIH0sCiAgICAgICAgcG9pbnRzOiB7IHNob3c6IHRydWUgfSwKICAgICAgICBncmlk
OiB7CiAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLAogICAgICAgICAgICBiYWNrZ3JvdW5kQ29s
b3I6ICcjZmZmJywKICAgICAgICAgICAgaG92ZXJhYmxlOiB0cnVlLAogICAgICAgICAgICBhdXRv
SGlnaGxpZ2h0OiBmYWxzZSwKICAgICAgICB9CiAgICB9KTsKCiAgICB2YXIgdG9vbHRpcCA9IHNl
Y3Rpb24uY2hpbGRyZW4oJy50b29sdGlwJyk7CiAgICBwbG90Q29udGFpbmVyLmJpbmQoJ3Bsb3Ro
b3ZlcicsIGZ1bmN0aW9uIChldmVudCwgcG9zaXRpb24sIGl0ZW0pIHsKICAgICAgICBpZiAoaXRl
bSkgewogICAgICAgICAgICB2YXIgcG9zdGZpeCA9IGl0ZW0uc2VyaWVzLmlkID8gJyAoJyArIGl0
ZW0uc2VyaWVzLmlkICsgJyknIDogJyc7CiAgICAgICAgICAgIHRvb2x0aXAuaHRtbChpdGVtLmRh
dGFwb2ludFsxXS50b1ByZWNpc2lvbig0KSArIHBvc3RmaXgpOwogICAgICAgICAgICB0b29sdGlw
LmNzcyh7bGVmdDogaXRlbS5wYWdlWCAtIHRvb2x0aXAub3V0ZXJXaWR0aCgpIC8gMiwgdG9wOiBp
dGVtLnBhZ2VZICsgMTB9KTsKICAgICAgICAgICAgdG9vbHRpcC5mYWRlSW4oMjAwKTsKICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgdG9vbHRpcC5oaWRlKCk7CiAgICB9KTsKICAgIHBsb3RDb250
YWluZXIubW91c2VvdXQoZnVuY3Rpb24gKCkgewogICAgICAgIHRvb2x0aXAuaGlkZSgpOwogICAg
fSk7CgogICAgcGxvdENvbnRhaW5lci5jbGljayhmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIGF0dGFjaFBsb3QodGVzdE5hbWUsIHNlY3Rp
b24sICFtaW5Jc1plcm8pOwogICAgfSk7Cn0KCnZhciByZXN1bHRzID0gSlNPTi5wYXJzZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnanNvbicpLnRleHRDb250ZW50KTsKdmFyIHRlc3RzID0gW107
CnZhciB0ZXN0UmVzdWx0cyA9IHt9LCB0ZXN0UmVzdWx0c01pbiA9IHt9LCB0ZXN0UmVzdWx0c01h
eCA9IHt9LCB0ZXN0UmVzdWx0c1N0ZGV2TG93ID0ge30sIHRlc3RSZXN1bHRzU3RkZXZIaWdoID0g
e307CnZhciB0ZXN0VW5pdHMgPSB7fTsKdmFyIHdlYmtpdFJldmlzaW9ucyA9IFtdOwp2YXIgZGVz
Y3JpcHRpb25zID0gW107CnZhciBtYXhMZW5ndGggPSAwOwokLmVhY2gocmVzdWx0cywgZnVuY3Rp
b24gKGluZGV4LCBlbnRyeSkgewogICAgd2Via2l0UmV2aXNpb25zLnB1c2goZW50cnlbJ3dlYmtp
dC1yZXZpc2lvbiddKTsKICAgIGRlc2NyaXB0aW9ucy5wdXNoKGVudHJ5WydkZXNjcmlwdGlvbidd
KTsKICAgICQuZWFjaChlbnRyeS5yZXN1bHRzLCBmdW5jdGlvbiAodGVzdCwgcmVzdWx0KSB7CiAg
ICAgICAgaWYgKHRlc3RzLmluZGV4T2YodGVzdCkgPCAwKQogICAgICAgICAgICB0ZXN0cy5wdXNo
KHRlc3QpOwogICAgICAgIGlmICghdGVzdFJlc3VsdHNbdGVzdF0pIHsKICAgICAgICAgICAgdGVz
dFJlc3VsdHNbdGVzdF0gPSBbXTsKICAgICAgICAgICAgdGVzdFJlc3VsdHNNaW5bdGVzdF0gPSBb
XTsKICAgICAgICAgICAgdGVzdFJlc3VsdHNNYXhbdGVzdF0gPSBbXTsKICAgICAgICAgICAgdGVz
dFJlc3VsdHNTdGRldkxvd1t0ZXN0XSA9IFtdOwogICAgICAgICAgICB0ZXN0UmVzdWx0c1N0ZGV2
SGlnaFt0ZXN0XSA9IFtdOwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PSAn
bnVtYmVyJykKICAgICAgICAgICAgdGVzdFJlc3VsdHNbdGVzdF0ucHVzaChbaW5kZXgsIHJlc3Vs
dF0pOwogICAgICAgIGVsc2UgewogICAgICAgICAgICB0ZXN0UmVzdWx0c1t0ZXN0XS5wdXNoKFtp
bmRleCwgcmVzdWx0WydhdmcnXV0pOwogICAgICAgICAgICBpZiAoJ21pbicgaW4gcmVzdWx0KQog
ICAgICAgICAgICAgICAgdGVzdFJlc3VsdHNNaW5bdGVzdF0ucHVzaChbaW5kZXgsIHJlc3VsdFsn
bWluJ11dKTsKICAgICAgICAgICAgaWYgKCdtYXgnIGluIHJlc3VsdCkKICAgICAgICAgICAgICAg
IHRlc3RSZXN1bHRzTWF4W3Rlc3RdLnB1c2goW2luZGV4LCByZXN1bHRbJ21heCddXSk7CiAgICAg
ICAgICAgIGlmICgnc3RkZXYnIGluIHJlc3VsdCkgewogICAgICAgICAgICAgICAgdGVzdFJlc3Vs
dHNTdGRldkxvd1t0ZXN0XS5wdXNoKFtpbmRleCwgcmVzdWx0WydhdmcnXSAtIHJlc3VsdFsnc3Rk
ZXYnXV0pOwogICAgICAgICAgICAgICAgdGVzdFJlc3VsdHNTdGRldkhpZ2hbdGVzdF0ucHVzaChb
aW5kZXgsIHJlc3VsdFsnYXZnJ10gKyByZXN1bHRbJ3N0ZGV2J11dKTsKICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgICAgICBtYXhMZW5ndGggPSBNYXRoLm1heChtYXhMZW5ndGgsIHRlc3RSZXN1
bHRzW3Rlc3RdLmxlbmd0aCk7CiAgICAgICAgdGVzdFVuaXRzW3Rlc3RdID0gcmVzdWx0LnVuaXQ7
CiAgICB9KTsKfSk7CiQuZWFjaCh0ZXN0cy5zb3J0KCksIGZ1bmN0aW9uIChpbmRleCwgdGVzdCkg
eyBjcmVhdGVQbG90KHRlc3QpOyB9KTsKCjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169187</attachid>
            <date>2012-10-17 08:03:06 -0700</date>
            <delta_ts>2012-10-18 06:53:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91850-20121017170153.patch</filename>
            <type>text/plain</type>
            <size>16992</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTlhMGFhNTBiNjE1YzA2
NzRmMGI2MzhhOTE5ZjYyNDE4ZmQzMDdiYi4uNGY3N2M4MzZiYTRlZjIxY2Q0YjBmZjc4NzBkNzA2
ZDE4OTQ3N2Y0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTEwLTE3ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIGFkZCA3IGJpdCBzdHJpbmdz
IGNhcGFiaWxpdGllcyB0byB0aGUgdjggYmluZGluZyBsYXllcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBlbmFibGVzIHRoZSB2OCBi
aW5kaW5nIGxheWVyIHRvIG1ha2UgdXNlIG9mIHdlYmtpdCdzCisgICAgICAgIDggYml0IHN0cmlu
ZyBjYXBhYmlsaXRpZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUZXN0IGNvdmVyYWdlIGFs
cmVhZHkgZXh0ZW5zaXZlLgorCisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjp2aXNpdEV4dGVybmFs
U3RyaW5ncyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhTdHJpbmdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChTdHJpbmdUcmFpdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZmFsc2UpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0cnVlKToKKyAgICAgICAgKFdlYkNvcmU6
OnY4U3RyaW5nVG9XZWJDb3JlU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFZhbHVl
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUV4dGVybmFsU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2U6OnZpc2l0U3RyaW5ncyk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlOjpXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2U6On5XZWJDb3JlU3RyaW5n
UmVzb3VyY2VCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZUJh
c2U6OmF0b21pY1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2U6Om1lbW9yeUNvbnN1
bXB0aW9uKToKKwogMjAxMi0xMC0xNyAgR2Fib3IgUmFwY3NhbnlpICA8cmdhYm9yQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgTkVPTiBpbnRyaW5zaWNzIEdhdXNzIGZpbHRlciBkb2VzIG5vdCB3b3Jr
IHByb3Blcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklz
b2xhdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURh
dGEuY3BwCmluZGV4IGY1Y2QzOGFiZDA0NmNlMWRiNzUyYjdhMTY4Zjk3NjJlYWY0MzFjMjcuLmE4
YjRjOWJiMWEwYmNjNzIxMTUxMTVjMDZkNDUxOTkzNjRlZTRhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwCkBAIC0xMDUsOSArMTA1LDE2
IEBAIHZvaWQgVjhQZXJJc29sYXRlRGF0YTo6dmlzaXRFeHRlcm5hbFN0cmluZ3MoRXh0ZXJuYWxT
dHJpbmdWaXNpdG9yKiB2aXNpdG9yKQogICAgICAgICB2aXJ0dWFsIH5WaXNpdG9ySW1wbCgpIHsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgVmlzaXRFeHRlcm5hbFN0cmluZyh2ODo6SGFuZGxlPHY4
OjpTdHJpbmc+IHN0cmluZykKICAgICAgICAgewotICAgICAgICAgICAgV2ViQ29yZVN0cmluZ1Jl
c291cmNlKiByZXNvdXJjZSA9IHN0YXRpY19jYXN0PFdlYkNvcmVTdHJpbmdSZXNvdXJjZSo+KHN0
cmluZy0+R2V0RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZSgpKTsKLSAgICAgICAgICAgIGlmIChyZXNv
dXJjZSkKLSAgICAgICAgICAgICAgICByZXNvdXJjZS0+dmlzaXRTdHJpbmdzKG1fdmlzaXRvcik7
CisgICAgICAgICAgICB2ODo6U3RyaW5nOjpFbmNvZGluZyBlbmNvZGluZzsKKyAgICAgICAgICAg
IHY4OjpTdHJpbmc6OkV4dGVybmFsU3RyaW5nUmVzb3VyY2VCYXNlKiByZXNvdXJjZSA9IHN0cmlu
Zy0+R2V0RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZUJhc2UoJmVuY29kaW5nKTsKKyAgICAgICAgICAg
IGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgV2Vi
Q29yZVN0cmluZ1Jlc291cmNlQmFzZSogYmFzZSA9IDA7CisgICAgICAgICAgICBpZiAoZW5jb2Rp
bmcgPT0gdjg6OlN0cmluZzo6QVNDSUlfRU5DT0RJTkcpCisgICAgICAgICAgICAgICAgYmFzZSA9
IHN0YXRpY19jYXN0PFdlYkNvcmVTdHJpbmdSZXNvdXJjZTgqPihyZXNvdXJjZSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgYmFzZSA9IHN0YXRpY19jYXN0PFdlYkNvcmVTdHJp
bmdSZXNvdXJjZTE2Kj4ocmVzb3VyY2UpOworICAgICAgICAgICAgYmFzZS0+dmlzaXRTdHJpbmdz
KG1fdmlzaXRvcik7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgogICAgICAgICBFeHRlcm5hbFN0
cmluZ1Zpc2l0b3IqIG1fdmlzaXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4U3RyaW5nUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhTdHJpbmdSZXNvdXJjZS5jcHAKaW5kZXggYzdjOTY0ZGYxZGQ1NDZlYTAwYTA4NDNmNTFlNjdk
MmVkNGM3M2ZlZC4uMGY5NGFlZWQwOTQyNDVjZmFlZTg2YWU3MThkNzc2NWYwNjM0NzIwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhTdHJpbmdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhTdHJpbmdSZXNvdXJjZS5jcHAKQEAg
LTMwLDcyICszMCwxMzEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZSA8Y2xh
c3MgUz4gc3RydWN0IFN0cmluZ1RyYWl0cyB7Ci0gICAgc3RhdGljIFMgZnJvbVN0cmluZ1Jlc291
cmNlKFdlYkNvcmVTdHJpbmdSZXNvdXJjZSopOwordGVtcGxhdGU8Y2xhc3MgUz4gc3RydWN0IFN0
cmluZ1RyYWl0cyB7CisgICAgc3RhdGljIFMgZnJvbVN0cmluZ1Jlc291cmNlKFdlYkNvcmVTdHJp
bmdSZXNvdXJjZUJhc2UqKTsKKyAgICBzdGF0aWMgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSog
dHJ5Q3JlYXRlUmVzb3VyY2U4KFMmIHN0cmluZywgYm9vbCYgY29udmVydGVkKTsKKyAgICB0ZW1w
bGF0ZTxib29sIGFzY2lpPgogICAgIHN0YXRpYyBTIGZyb21WOFN0cmluZyh2ODo6SGFuZGxlPHY4
OjpTdHJpbmc+LCBpbnQpOwogfTsKIAogdGVtcGxhdGU8Pgogc3RydWN0IFN0cmluZ1RyYWl0czxT
dHJpbmc+IHsKLSAgICBzdGF0aWMgU3RyaW5nIGZyb21TdHJpbmdSZXNvdXJjZShXZWJDb3JlU3Ry
aW5nUmVzb3VyY2UqIHJlc291cmNlKQorICAgIGlubGluZSBzdGF0aWMgU3RyaW5nIGZyb21TdHJp
bmdSZXNvdXJjZShXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKiByZXNvdXJjZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiByZXNvdXJjZS0+d2ViY29yZVN0cmluZygpOwogICAgIH0KLQotICAgIHN0
YXRpYyBTdHJpbmcgZnJvbVY4U3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcs
IGludCBsZW5ndGgpCisgICAgaW5saW5lIHN0YXRpYyBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNl
KiB0cnlDcmVhdGVSZXNvdXJjZTgoU3RyaW5nJiBzdHJpbmcsIGJvb2wmIGNvbnZlcnRlZCkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVCh2OFN0cmluZy0+TGVuZ3RoKCkgPT0gbGVuZ3RoKTsKLSAgICAg
ICAgLy8gTk9URTogYXMgb2Ygbm93LCBTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQpIHBlcmZvcm1z
IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZAotICAgICAgICAvLyBhbnl3YXksIHNvIG5vIG5l
ZWQgdG8gb3B0aW1pemUgbGlrZSB3ZSBkbyBmb3IgQXRvbWljU3RyaW5nIGJlbG93LgotICAgICAg
ICBVQ2hhciogYnVmZmVyOwotICAgICAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nOjpjcmVhdGVV
bmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKLSAgICAgICAgdjhTdHJpbmctPldyaXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihidWZmZXIpLCAwLCBsZW5ndGgpOwotICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2U4KHN0cmluZyk7CiAgICAgfQorICAgIHRlbXBsYXRl
PGJvb2wgYXNjaWk+CisgICAgc3RhdGljIFN0cmluZyBmcm9tVjhTdHJpbmcodjg6OkhhbmRsZTx2
ODo6U3RyaW5nPiwgaW50KTsKIH07CiAKIHRlbXBsYXRlPD4KIHN0cnVjdCBTdHJpbmdUcmFpdHM8
QXRvbWljU3RyaW5nPiB7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tU3RyaW5nUmVzb3Vy
Y2UoV2ViQ29yZVN0cmluZ1Jlc291cmNlKiByZXNvdXJjZSkKKyAgICBpbmxpbmUgc3RhdGljIEF0
b21pY1N0cmluZyBmcm9tU3RyaW5nUmVzb3VyY2UoV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSog
cmVzb3VyY2UpCiAgICAgewogICAgICAgICByZXR1cm4gcmVzb3VyY2UtPmF0b21pY1N0cmluZygp
OwogICAgIH0KLQotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVY4U3RyaW5nKHY4OjpIYW5k
bGU8djg6OlN0cmluZz4gdjhTdHJpbmcsIGludCBsZW5ndGgpCisgICAgaW5saW5lIHN0YXRpYyBX
ZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKiB0cnlDcmVhdGVSZXNvdXJjZTgoQXRvbWljU3RyaW5n
JiBzdHJpbmcsIGJvb2wmIGNvbnZlcnRlZCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh2OFN0cmlu
Zy0+TGVuZ3RoKCkgPT0gbGVuZ3RoKTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBpbmxpbmVC
dWZmZXJTaXplID0gMTY7Ci0gICAgICAgIGlmIChsZW5ndGggPD0gaW5saW5lQnVmZmVyU2l6ZSkg
ewotICAgICAgICAgICAgVUNoYXIgaW5saW5lQnVmZmVyW2lubGluZUJ1ZmZlclNpemVdOwotICAg
ICAgICAgICAgdjhTdHJpbmctPldyaXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbmxp
bmVCdWZmZXIpLCAwLCBsZW5ndGgpOwotICAgICAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhp
bmxpbmVCdWZmZXIsIGxlbmd0aCk7CisgICAgICAgIGlmIChzdHJpbmcuc3RyaW5nKCkuaXM4Qml0
KCkpIHsKKyAgICAgICAgICAgIGNvbnZlcnRlZCA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJu
IG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2U4KHN0cmluZyk7CiAgICAgICAgIH0KLSAgICAgICAg
VUNoYXIqIGJ1ZmZlcjsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IFN0cmluZzo6Y3JlYXRlVW5p
bml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7Ci0gICAgICAgIHY4U3RyaW5nLT5Xcml0ZShyZWlu
dGVycHJldF9jYXN0PHVpbnQxNl90Kj4oYnVmZmVyKSwgMCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0
dXJuIEF0b21pY1N0cmluZyhzdHJpbmcpOworICAgICAgICBjb252ZXJ0ZWQgPSB0cnVlOworICAg
ICAgICByZXR1cm4gbmV3IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2KHN0cmluZyk7CiAgICAgfQor
ICAgIHRlbXBsYXRlPGJvb2wgYXNjaWk+CisgICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVjhT
dHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiwgaW50KTsKIH07CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBTdHJpbmdUeXBlPgordGVtcGxhdGU8PgorU3RyaW5nIFN0cmluZ1RyYWl0czxTdHJpbmc+
Ojpmcm9tVjhTdHJpbmc8ZmFsc2U+KHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcsIGlu
dCBsZW5ndGgpCit7CisgICAgQVNTRVJUKHY4U3RyaW5nLT5MZW5ndGgoKSA9PSBsZW5ndGgpOwor
ICAgIFVDaGFyKiBidWZmZXI7CisgICAgU3RyaW5nIHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5p
bml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CisgICAgdjhTdHJpbmctPldyaXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDE2X3QqPihidWZmZXIpLCAwLCBsZW5ndGgpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3RlbXBsYXRlPD4KK0F0b21pY1N0cmluZyBTdHJpbmdUcmFpdHM8QXRvbWljU3Ry
aW5nPjo6ZnJvbVY4U3RyaW5nPGZhbHNlPih2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5n
LCBpbnQgbGVuZ3RoKQoreworICAgIEFTU0VSVCh2OFN0cmluZy0+TGVuZ3RoKCkgPT0gbGVuZ3Ro
KTsKKyAgICBzdGF0aWMgY29uc3QgaW50IGlubGluZUJ1ZmZlclNpemUgPSAxNjsKKyAgICBpZiAo
bGVuZ3RoIDw9IGlubGluZUJ1ZmZlclNpemUpIHsKKyAgICAgICAgVUNoYXIgaW5saW5lQnVmZmVy
W2lubGluZUJ1ZmZlclNpemVdOworICAgICAgICB2OFN0cmluZy0+V3JpdGUocmVpbnRlcnByZXRf
Y2FzdDx1aW50MTZfdCo+KGlubGluZUJ1ZmZlciksIDAsIGxlbmd0aCk7CisgICAgICAgIHJldHVy
biBBdG9taWNTdHJpbmcoaW5saW5lQnVmZmVyLCBsZW5ndGgpOworICAgIH0KKyAgICBVQ2hhciog
YnVmZmVyOworICAgIFN0cmluZyBzdHJpbmcgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
bGVuZ3RoLCBidWZmZXIpOworICAgIHY4U3RyaW5nLT5Xcml0ZShyZWludGVycHJldF9jYXN0PHVp
bnQxNl90Kj4oYnVmZmVyKSwgMCwgbGVuZ3RoKTsKKyAgICByZXR1cm4gQXRvbWljU3RyaW5nKHN0
cmluZyk7Cit9CisKK3RlbXBsYXRlPD4KK1N0cmluZyBTdHJpbmdUcmFpdHM8U3RyaW5nPjo6ZnJv
bVY4U3RyaW5nPHRydWU+KHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcsIGludCBsZW5n
dGgpCit7CisgICAgQVNTRVJUKHY4U3RyaW5nLT5MZW5ndGgoKSA9PSBsZW5ndGgpOworICAgIExD
aGFyKiBidWZmZXI7CisgICAgU3RyaW5nIHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFs
aXplZChsZW5ndGgsIGJ1ZmZlcik7CisgICAgdjhTdHJpbmctPldyaXRlQXNjaWkocmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oYnVmZmVyKSwgMCwgbGVuZ3RoLCB2ODo6U3RyaW5nOjpQUkVTRVJWRV9B
U0NJSV9OVUxMKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUg
QXRvbWljU3RyaW5nIFN0cmluZ1RyYWl0czxBdG9taWNTdHJpbmc+Ojpmcm9tVjhTdHJpbmc8dHJ1
ZT4odjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgaW50IGxlbmd0aCkKK3sKKyAgICAv
LyBGSVhNRTogVGhlcmUgaXMgbm8gaW5saW5lIGZhc3QgcGF0aCBmb3IgOCBiaXQgYXRvbWljIHN0
cmluZ3MuCisgICAgcmV0dXJuIEF0b21pY1N0cmluZyhTdHJpbmdUcmFpdHM8U3RyaW5nPjo6ZnJv
bVY4U3RyaW5nPHRydWU+KHY4U3RyaW5nLCBsZW5ndGgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nVHlwZT4KIFN0cmluZ1R5cGUgdjhTdHJpbmdUb1dlYkNvcmVTdHJpbmcodjg6Okhh
bmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgRXh0ZXJuYWxNb2RlIGV4dGVybmFsKQogewotICAg
IFdlYkNvcmVTdHJpbmdSZXNvdXJjZSogc3RyaW5nUmVzb3VyY2UgPSBXZWJDb3JlU3RyaW5nUmVz
b3VyY2U6OnRvU3RyaW5nUmVzb3VyY2UodjhTdHJpbmcpOwotICAgIGlmIChzdHJpbmdSZXNvdXJj
ZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZ1RyYWl0czxTdHJpbmdUeXBlPjo6ZnJvbVN0cmluZ1Jl
c291cmNlKHN0cmluZ1Jlc291cmNlKTsKKyAgICB7CisgICAgICAgIHY4OjpTdHJpbmc6OkVuY29k
aW5nIGVuY29kaW5nOworICAgICAgICB2ODo6U3RyaW5nOjpFeHRlcm5hbFN0cmluZ1Jlc291cmNl
QmFzZSogcmVzb3VyY2UgPSB2OFN0cmluZy0+R2V0RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZUJhc2Uo
JmVuY29kaW5nKTsKKyAgICAgICAgaWYgKExJS0VMWSghIXJlc291cmNlKSkgeworICAgICAgICAg
ICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSogYmFzZTsKKyAgICAgICAgICAgIGlmIChlbmNv
ZGluZyA9PSB2ODo6U3RyaW5nOjpBU0NJSV9FTkNPRElORykKKyAgICAgICAgICAgICAgICBiYXNl
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlOCo+KHJlc291cmNlKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBiYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZVN0
cmluZ1Jlc291cmNlMTYqPihyZXNvdXJjZSk7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nVHJh
aXRzPFN0cmluZ1R5cGU+Ojpmcm9tU3RyaW5nUmVzb3VyY2UoYmFzZSk7CisgICAgICAgIH0KKyAg
ICB9CiAKICAgICBpbnQgbGVuZ3RoID0gdjhTdHJpbmctPkxlbmd0aCgpOwotICAgIGlmICghbGVu
Z3RoKQorICAgIGlmIChVTkxJS0VMWSghbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygi
Iik7CiAKLSAgICBTdHJpbmdUeXBlIHJlc3VsdChTdHJpbmdUcmFpdHM8U3RyaW5nVHlwZT46OmZy
b21WOFN0cmluZyh2OFN0cmluZywgbGVuZ3RoKSk7CisgICAgaWYgKHY4U3RyaW5nLT5NYXlDb250
YWluTm9uQXNjaWkoKSkgeworICAgICAgICBTdHJpbmdUeXBlIHJlc3VsdChTdHJpbmdUcmFpdHM8
U3RyaW5nVHlwZT46OnRlbXBsYXRlIGZyb21WOFN0cmluZzxmYWxzZT4odjhTdHJpbmcsIGxlbmd0
aCkpOworICAgICAgICBpZiAoZXh0ZXJuYWwgPT0gRXh0ZXJuYWxpemUgJiYgdjhTdHJpbmctPkNh
bk1ha2VFeHRlcm5hbCgpKSB7CisgICAgICAgICAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNiog
c3RyaW5nUmVzb3VyY2UgPSBuZXcgV2ViQ29yZVN0cmluZ1Jlc291cmNlMTYocmVzdWx0KTsKKyAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSghdjhTdHJpbmctPk1ha2VFeHRlcm5hbChzdHJpbmdSZXNv
dXJjZSkpKQorICAgICAgICAgICAgICAgIGRlbGV0ZSBzdHJpbmdSZXNvdXJjZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAorICAgIFN0cmluZ1R5cGUgcmVzdWx0
KFN0cmluZ1RyYWl0czxTdHJpbmdUeXBlPjo6dGVtcGxhdGUgZnJvbVY4U3RyaW5nPHRydWU+KHY4
U3RyaW5nLCBsZW5ndGgpKTsKICAgICBpZiAoZXh0ZXJuYWwgPT0gRXh0ZXJuYWxpemUgJiYgdjhT
dHJpbmctPkNhbk1ha2VFeHRlcm5hbCgpKSB7Ci0gICAgICAgIHN0cmluZ1Jlc291cmNlID0gbmV3
IFdlYkNvcmVTdHJpbmdSZXNvdXJjZShyZXN1bHQpOwotICAgICAgICBpZiAoIXY4U3RyaW5nLT5N
YWtlRXh0ZXJuYWwoc3RyaW5nUmVzb3VyY2UpKSB7Ci0gICAgICAgICAgICAvLyBJbiBjYXNlIG9m
IGEgZmFpbHVyZSBkZWxldGUgdGhlIGV4dGVybmFsIHJlc291cmNlIGFzIGl0IHdhcyBub3QgdXNl
ZC4KKyAgICAgICAgYm9vbCBjb252ZXJ0ZWRUbzE2Qml0czsKKyAgICAgICAgV2ViQ29yZVN0cmlu
Z1Jlc291cmNlQmFzZSogc3RyaW5nUmVzb3VyY2UgPSBTdHJpbmdUcmFpdHM8U3RyaW5nVHlwZT46
OnRyeUNyZWF0ZVJlc291cmNlOChyZXN1bHQsIGNvbnZlcnRlZFRvMTZCaXRzKTsKKyAgICAgICAg
Ym9vbCBleHRlcm5hbGl6ZWQ7CisgICAgICAgIGlmIChMSUtFTFkoIWNvbnZlcnRlZFRvMTZCaXRz
KSkKKyAgICAgICAgICAgIGV4dGVybmFsaXplZCA9IHY4U3RyaW5nLT5NYWtlRXh0ZXJuYWwoc3Rh
dGljX2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlOCo+KHN0cmluZ1Jlc291cmNlKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGV4dGVybmFsaXplZCA9IHY4U3RyaW5nLT5NYWtlRXh0ZXJu
YWwoc3RhdGljX2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlMTYqPihzdHJpbmdSZXNvdXJjZSkp
OworICAgICAgICBpZiAoVU5MSUtFTFkoIWV4dGVybmFsaXplZCkpCiAgICAgICAgICAgICBkZWxl
dGUgc3RyaW5nUmVzb3VyY2U7Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuY3BwCmluZGV4IGM2
MzZmMmMwMWZiY2E0ZTEzMTA2OThkOWMyMzZmNWM5NzAzZjMzNmMuLmRiMzBmMzA1Y2M5MTIwMmZm
YjdkYWI0ODEyNjFkNmI0MDI0ZTY0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4VmFsdWVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhWYWx1ZUNhY2hlLmNwcApAQCAtMzMsMTEgKzMzLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RhdGljIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBtYWtlRXh0ZXJuYWxTdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlKiBzdHJpbmdSZXNv
dXJjZSA9IG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2Uoc3RyaW5nKTsKKyAgICBpZiAoc3RyaW5n
LmlzOEJpdCgpICYmIHN0cmluZy5jb250YWluc09ubHlBU0NJSSgpKSB7CisgICAgICAgIFdlYkNv
cmVTdHJpbmdSZXNvdXJjZTgqIHN0cmluZ1Jlc291cmNlID0gbmV3IFdlYkNvcmVTdHJpbmdSZXNv
dXJjZTgoc3RyaW5nKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5ld1N0cmluZyA9
IHY4OjpTdHJpbmc6Ok5ld0V4dGVybmFsKHN0cmluZ1Jlc291cmNlKTsKKyAgICAgICAgaWYgKG5l
d1N0cmluZy5Jc0VtcHR5KCkpCisgICAgICAgICAgICBkZWxldGUgc3RyaW5nUmVzb3VyY2U7Cisg
ICAgICAgIHJldHVybiBuZXdTdHJpbmc7CisgICAgfQorCisgICAgV2ViQ29yZVN0cmluZ1Jlc291
cmNlMTYqIHN0cmluZ1Jlc291cmNlID0gbmV3IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2KHN0cmlu
Zyk7CiAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5ld1N0cmluZyA9IHY4OjpTdHJpbmc6Ok5l
d0V4dGVybmFsKHN0cmluZ1Jlc291cmNlKTsKICAgICBpZiAobmV3U3RyaW5nLklzRW1wdHkoKSkK
ICAgICAgICAgZGVsZXRlIHN0cmluZ1Jlc291cmNlOwotCiAgICAgcmV0dXJuIG5ld1N0cmluZzsK
IH0KIApAQCAtOTIsNyArOTksNyBAQCB2ODo6TG9jYWw8djg6OlN0cmluZz4gU3RyaW5nQ2FjaGU6
OnY4RXh0ZXJuYWxTdHJpbmdTbG93KFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwsCiAgICAgcmV0dXJu
IG5ld1N0cmluZzsKIH0KIAotdm9pZCBXZWJDb3JlU3RyaW5nUmVzb3VyY2U6OnZpc2l0U3RyaW5n
cyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqIHZpc2l0b3IpCit2b2lkIFdlYkNvcmVTdHJpbmdSZXNv
dXJjZUJhc2U6OnZpc2l0U3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqIHZpc2l0b3IpCiB7
CiAgICAgdmlzaXRvci0+dmlzaXRKU0V4dGVybmFsU3RyaW5nKG1fcGxhaW5TdHJpbmcuaW1wbCgp
KTsKICAgICBpZiAobV9wbGFpblN0cmluZy5pbXBsKCkgIT0gbV9hdG9taWNTdHJpbmcuaW1wbCgp
ICYmICFtX2F0b21pY1N0cmluZy5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhWYWx1ZUNhY2hlLmgKaW5kZXggYTc0YzRhM2MzZDU0YzcyNzM4N2RkOGE1MmJlZDQ4NDMzNzg1
MjA5ZC4uNjFmMzc1NGIwNTY1MjQ4MzdmMTNjMGI2OThlNDcyMzlmNWU0ZTg5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmgKQEAgLTcyLDE5ICs3MiwxOSBAQCBj
b25zdCBpbnQgbnVtYmVyT2ZDYWNoZWRTbWFsbEludGVnZXJzID0gNjQ7CiAKIC8vIFdlYkNvcmVT
dHJpbmdSZXNvdXJjZSBpcyBhIGhlbHBlciBjbGFzcyBmb3IgdjhFeHRlcm5hbFN0cmluZy4gSXQg
aXMgdXNlZAogLy8gdG8gbWFuYWdlIHRoZSBsaWZlLWN5Y2xlIG9mIHRoZSB1bmRlcmx5aW5nIGJ1
ZmZlciBvZiB0aGUgZXh0ZXJuYWwgc3RyaW5nLgotY2xhc3MgV2ViQ29yZVN0cmluZ1Jlc291cmNl
IDogcHVibGljIHY4OjpTdHJpbmc6OkV4dGVybmFsU3RyaW5nUmVzb3VyY2UgeworY2xhc3MgV2Vi
Q29yZVN0cmluZ1Jlc291cmNlQmFzZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViQ29yZVN0
cmluZ1Jlc291cmNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIGlubGluZSBleHBsaWNpdCBX
ZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICA6
IG1fcGxhaW5TdHJpbmcoc3RyaW5nKQogICAgIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1f
dGhyZWFkSWQgPSBXVEY6OmN1cnJlbnRUaHJlYWQoKTsKICNlbmRpZgogICAgICAgICBBU1NFUlQo
IXN0cmluZy5pc051bGwoKSk7Ci0gICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5h
bEFsbG9jYXRlZE1lbW9yeSgyICogc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgdjg6OlY4OjpB
ZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KG1lbW9yeUNvbnN1bXB0aW9uKHN0
cmluZykpOwogICAgIH0KIAotICAgIGV4cGxpY2l0IFdlYkNvcmVTdHJpbmdSZXNvdXJjZShjb25z
dCBBdG9taWNTdHJpbmcmIHN0cmluZykKKyAgICBpbmxpbmUgZXhwbGljaXQgV2ViQ29yZVN0cmlu
Z1Jlc291cmNlQmFzZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3Bs
YWluU3RyaW5nKHN0cmluZy5zdHJpbmcoKSkKICAgICAgICAgLCBtX2F0b21pY1N0cmluZyhzdHJp
bmcpCiAgICAgewpAQCAtOTIsMjcgKzkyLDIwIEBAIHB1YmxpYzoKICAgICAgICAgbV90aHJlYWRJ
ZCA9IFdURjo6Y3VycmVudFRocmVhZCgpOwogI2VuZGlmCiAgICAgICAgIEFTU0VSVCghc3RyaW5n
LmlzTnVsbCgpKTsKLSAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2Nh
dGVkTWVtb3J5KDIgKiBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICB2ODo6Vjg6OkFkanVzdEFt
b3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkobWVtb3J5Q29uc3VtcHRpb24oc3RyaW5nKSk7
CiAgICAgfQogCi0gICAgdmlydHVhbCB+V2ViQ29yZVN0cmluZ1Jlc291cmNlKCkKKyAgICB2aXJ0
dWFsIH5XZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKCkKICAgICB7CiAjaWZuZGVmIE5ERUJVRwog
ICAgICAgICBBU1NFUlQobV90aHJlYWRJZCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CiAjZW5k
aWYKLSAgICAgICAgaW50IHJlZHVjZWRFeHRlcm5hbE1lbW9yeSA9IC0yICogbV9wbGFpblN0cmlu
Zy5sZW5ndGgoKTsKKyAgICAgICAgaW50IHJlZHVjZWRFeHRlcm5hbE1lbW9yeSA9IC1tZW1vcnlD
b25zdW1wdGlvbihtX3BsYWluU3RyaW5nKTsKICAgICAgICAgaWYgKG1fcGxhaW5TdHJpbmcuaW1w
bCgpICE9IG1fYXRvbWljU3RyaW5nLmltcGwoKSAmJiAhbV9hdG9taWNTdHJpbmcuaXNOdWxsKCkp
Ci0gICAgICAgICAgICByZWR1Y2VkRXh0ZXJuYWxNZW1vcnkgKj0gMjsKKyAgICAgICAgICAgIHJl
ZHVjZWRFeHRlcm5hbE1lbW9yeSAtPSBtZW1vcnlDb25zdW1wdGlvbihtX2F0b21pY1N0cmluZy5z
dHJpbmcoKSk7CiAgICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRl
ZE1lbW9yeShyZWR1Y2VkRXh0ZXJuYWxNZW1vcnkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgY29u
c3QgdWludDE2X3QqIGRhdGEoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihtX3BsYWluU3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVy
cygpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX3BsYWluU3RyaW5nLmltcGwoKS0+bGVuZ3RoKCk7IH0KLQogICAgIFN0cmluZyB3ZWJjb3Jl
U3RyaW5nKCkgeyByZXR1cm4gbV9wbGFpblN0cmluZzsgfQogCiAgICAgQXRvbWljU3RyaW5nIGF0
b21pY1N0cmluZygpCkBAIC0xMjQsMTkgKzExNywxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X2F0b21pY1N0cmluZyA9IEF0b21pY1N0cmluZyhtX3BsYWluU3RyaW5nKTsKICAgICAgICAgICAg
IEFTU0VSVCghbV9hdG9taWNTdHJpbmcuaXNOdWxsKCkpOwogICAgICAgICAgICAgaWYgKG1fcGxh
aW5TdHJpbmcuaW1wbCgpICE9IG1fYXRvbWljU3RyaW5nLmltcGwoKSkKLSAgICAgICAgICAgICAg
ICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkoMiAqIG1fYXRv
bWljU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB2ODo6Vjg6OkFkanVzdEFtb3Vu
dE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkobWVtb3J5Q29uc3VtcHRpb24obV9hdG9taWNTdHJp
bmcuc3RyaW5nKCkpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9hdG9taWNTdHJpbmc7
CiAgICAgfQogCiAgICAgdm9pZCB2aXNpdFN0cmluZ3MoRXh0ZXJuYWxTdHJpbmdWaXNpdG9yKik7
CiAKLSAgICBzdGF0aWMgV2ViQ29yZVN0cmluZ1Jlc291cmNlKiB0b1N0cmluZ1Jlc291cmNlKHY4
OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcpCi0gICAgewotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlKj4odjhTdHJpbmctPkdldEV4dGVybmFsU3Ry
aW5nUmVzb3VyY2UoKSk7Ci0gICAgfQotCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIC8vIEEg
c2hhbGxvdyBjb3B5IG9mIHRoZSBzdHJpbmcuIEtlZXBzIHRoZSBzdHJpbmcgYnVmZmVyIGFsaXZl
IHVudGlsIHRoZSBWOCBlbmdpbmUgZ2FyYmFnZSBjb2xsZWN0cyBpdC4KICAgICBTdHJpbmcgbV9w
bGFpblN0cmluZzsKICAgICAvLyBJZiB0aGlzIHN0cmluZyBpcyBhdG9taWMgb3IgaGFzIGJlZW4g
bWFkZSBhdG9taWMgZWFybGllciB0aGUKQEAgLTE0NiwxMSArMTM0LDQ4IEBAIHByaXZhdGU6CiAg
ICAgLy8gaW50byB0aGF0IHN0cmluZy4KICAgICBBdG9taWNTdHJpbmcgbV9hdG9taWNTdHJpbmc7
CiAKK3ByaXZhdGU6CisgICAgaW5saW5lIHN0YXRpYyBpbnQgbWVtb3J5Q29uc3VtcHRpb24oY29u
c3QgU3RyaW5nJiBzdHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4gc3RyaW5nLmxlbmd0aCgp
ICogKHN0cmluZy5pczhCaXQoKSA/IHNpemVvZihMQ2hhcikgOiBzaXplb2YoVUNoYXIpKTsKKyAg
ICB9CiAjaWZuZGVmIE5ERUJVRwogICAgIFdURjo6VGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElk
OwogI2VuZGlmCiB9OwogCitjbGFzcyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNjogcHVibGljIFdl
YkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UsIHB1YmxpYyB2ODo6U3RyaW5nOjpFeHRlcm5hbFN0cmlu
Z1Jlc291cmNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViQ29yZVN0cmluZ1Jlc291cmNlMTYq
IHRvU3RyaW5nUmVzb3VyY2Uodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZykKKyAgICB7
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNio+KHY4
U3RyaW5nLT5HZXRFeHRlcm5hbFN0cmluZ1Jlc291cmNlKCkpOworICAgIH0KKyAgICBleHBsaWNp
dCBpbmxpbmUgV2ViQ29yZVN0cmluZ1Jlc291cmNlMTYoY29uc3QgU3RyaW5nJiBzdHJpbmcpOiBX
ZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKHN0cmluZykgeyB9CisgICAgZXhwbGljaXQgaW5saW5l
IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2KGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKTogV2Vi
Q29yZVN0cmluZ1Jlc291cmNlQmFzZShzdHJpbmcpIHsgfQorCisgICAgdmlydHVhbCBzaXplX3Qg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9wbGFpblN0cmluZy5pbXBsKCktPmxlbmd0aCgpOyB9
CisgICAgdmlydHVhbCBjb25zdCB1aW50MTZfdCogZGF0YSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KG1fcGxhaW5TdHJpbmcu
aW1wbCgpLT5jaGFyYWN0ZXJzKCkpOworICAgIH0KK307CisKK2NsYXNzIFdlYkNvcmVTdHJpbmdS
ZXNvdXJjZTg6IHB1YmxpYyBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlLCBwdWJsaWMgdjg6OlN0
cmluZzo6RXh0ZXJuYWxBc2NpaVN0cmluZ1Jlc291cmNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
V2ViQ29yZVN0cmluZ1Jlc291cmNlOCogdG9TdHJpbmdSZXNvdXJjZSh2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IHY4U3RyaW5nKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViQ29y
ZVN0cmluZ1Jlc291cmNlOCo+KHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvcmVTdHJpbmdSZXNvdXJj
ZTgqPih2OFN0cmluZy0+R2V0RXh0ZXJuYWxBc2NpaVN0cmluZ1Jlc291cmNlKCkpKTsKKyAgICB9
CisgICAgZXhwbGljaXQgaW5saW5lIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTgoY29uc3QgU3RyaW5n
JiBzdHJpbmcpOiBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKHN0cmluZykgeyB9CisgICAgZXhw
bGljaXQgaW5saW5lIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTgoY29uc3QgQXRvbWljU3RyaW5nJiBz
dHJpbmcpOiBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKHN0cmluZykgeyB9CisKKyAgICB2aXJ0
dWFsIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3BsYWluU3RyaW5nLmltcGwoKS0+
bGVuZ3RoKCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1fcGxhaW5TdHJp
bmcuaW1wbCgpLT5jaGFyYWN0ZXJzOCgpKTsKKyAgICB9Cit9OworCiBjbGFzcyBJbnRlZ2VyQ2Fj
aGUgewogcHVibGljOgogICAgICBJbnRlZ2VyQ2FjaGUoKSA6IG1faW5pdGlhbGl6ZWQoZmFsc2Up
IHsgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169406</attachid>
            <date>2012-10-18 06:53:14 -0700</date>
            <delta_ts>2012-10-30 08:03:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91850-20121018155159.patch</filename>
            <type>text/plain</type>
            <size>16416</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFmY2ExMTBjZTMwMDA3
MDM5YTU2ZmUzNDM1ZWI4YTMzYmFiNzU5Ni4uZWMzMGMxMjNlMjYwZDRhNzI3YTg5YWYxZTBlYzg1
NzdhMDg1NDcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTEwLTE4ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIGFkZCA3IGJpdCBzdHJpbmdz
IGNhcGFiaWxpdGllcyB0byB0aGUgdjggYmluZGluZyBsYXllcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBlbmFibGVzIHRoZSB2OCBi
aW5kaW5nIGxheWVyIHRvIG1ha2UgdXNlIG9mIHdlYmtpdCdzCisgICAgICAgIDggYml0IHN0cmlu
ZyBjYXBhYmlsaXRpZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUZXN0IGNvdmVyYWdlIGFs
cmVhZHkgZXh0ZW5zaXZlLgorCisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjp2aXNpdEV4dGVybmFs
U3RyaW5ncyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhTdHJpbmdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChTdHJpbmdUcmFpdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZmFsc2UpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0cnVlKToKKyAgICAgICAgKFdlYkNvcmU6
OnY4U3RyaW5nVG9XZWJDb3JlU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFZhbHVl
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUV4dGVybmFsU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2U6OnZpc2l0U3RyaW5ncyk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlOjpXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2U6On5XZWJDb3JlU3RyaW5n
UmVzb3VyY2VCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZUJh
c2U6OmF0b21pY1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2U6Om1lbW9yeUNvbnN1
bXB0aW9uKToKKwogMjAxMi0xMC0xOCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSBhdCBUcmVlU2NvcGVBZG9wdGVyOjptb3Zl
Tm9kZVRvTmV3RG9jdW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhQZXJJc29sYXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBl
cklzb2xhdGVEYXRhLmNwcAppbmRleCBmNWNkMzhhYmQwNDZjZTFkYjc1MmI3YTE2OGY5NzYyZWFm
NDMxYzI3Li5hOGI0YzliYjFhMGJjYzcyMTE1MTE1YzA2ZDQ1MTk5MzY0ZWU0YTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcApAQCAtMTA1
LDkgKzEwNSwxNiBAQCB2b2lkIFY4UGVySXNvbGF0ZURhdGE6OnZpc2l0RXh0ZXJuYWxTdHJpbmdz
KEV4dGVybmFsU3RyaW5nVmlzaXRvciogdmlzaXRvcikKICAgICAgICAgdmlydHVhbCB+VmlzaXRv
ckltcGwoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIFZpc2l0RXh0ZXJuYWxTdHJpbmcodjg6
OkhhbmRsZTx2ODo6U3RyaW5nPiBzdHJpbmcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFdlYkNv
cmVTdHJpbmdSZXNvdXJjZSogcmVzb3VyY2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlU3RyaW5nUmVz
b3VyY2UqPihzdHJpbmctPkdldEV4dGVybmFsU3RyaW5nUmVzb3VyY2UoKSk7Ci0gICAgICAgICAg
ICBpZiAocmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2UtPnZpc2l0U3RyaW5ncyht
X3Zpc2l0b3IpOworICAgICAgICAgICAgdjg6OlN0cmluZzo6RW5jb2RpbmcgZW5jb2Rpbmc7Cisg
ICAgICAgICAgICB2ODo6U3RyaW5nOjpFeHRlcm5hbFN0cmluZ1Jlc291cmNlQmFzZSogcmVzb3Vy
Y2UgPSBzdHJpbmctPkdldEV4dGVybmFsU3RyaW5nUmVzb3VyY2VCYXNlKCZlbmNvZGluZyk7Cisg
ICAgICAgICAgICBpZiAoIXJlc291cmNlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UqIGJhc2UgPSAwOworICAgICAgICAgICAg
aWYgKGVuY29kaW5nID09IHY4OjpTdHJpbmc6OkFTQ0lJX0VOQ09ESU5HKQorICAgICAgICAgICAg
ICAgIGJhc2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlU3RyaW5nUmVzb3VyY2U4Kj4ocmVzb3VyY2Up
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJhc2UgPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlU3RyaW5nUmVzb3VyY2UxNio+KHJlc291cmNlKTsKKyAgICAgICAgICAgIGJhc2UtPnZp
c2l0U3RyaW5ncyhtX3Zpc2l0b3IpOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToKICAgICAgICAg
RXh0ZXJuYWxTdHJpbmdWaXNpdG9yKiBtX3Zpc2l0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFN0cmluZ1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4U3RyaW5nUmVzb3VyY2UuY3BwCmluZGV4IDU5ODU1M2ZmZmNkMGIzMDM2MTUw
NmJlMWNlMzlhM2MyNzY3ZmU1NjQuLmRmODg5M2I1N2ZkOGEzMmJkN2NjM2RkZDM2MTQxNzRmMmRh
YjVhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4U3RyaW5nUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4U3RyaW5nUmVzb3Vy
Y2UuY3BwCkBAIC0zMCw3MyArMzAsMTIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVt
cGxhdGUgPGNsYXNzIFN0cmluZ0NsYXNzPiBzdHJ1Y3QgU3RyaW5nVHJhaXRzIHsKLSAgICBzdGF0
aWMgY29uc3QgU3RyaW5nQ2xhc3MmIGZyb21TdHJpbmdSZXNvdXJjZShXZWJDb3JlU3RyaW5nUmVz
b3VyY2UqKTsKK3RlbXBsYXRlPGNsYXNzIFN0cmluZ0NsYXNzPiBzdHJ1Y3QgU3RyaW5nVHJhaXRz
IHsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nQ2xhc3MmIGZyb21TdHJpbmdSZXNvdXJjZShXZWJD
b3JlU3RyaW5nUmVzb3VyY2VCYXNlKik7CisgICAgc3RhdGljIGJvb2wgaXMxNkJpdEF0b21pY1N0
cmluZyhTdHJpbmdDbGFzcyYpOworICAgIHRlbXBsYXRlPGJvb2wgYXNjaWk+CiAgICAgc3RhdGlj
IFN0cmluZ0NsYXNzIGZyb21WOFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+LCBpbnQpOwog
fTsKIAogdGVtcGxhdGU8Pgogc3RydWN0IFN0cmluZ1RyYWl0czxTdHJpbmc+IHsKLSAgICBzdGF0
aWMgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nUmVzb3VyY2UoV2ViQ29yZVN0cmluZ1Jlc291cmNl
KiByZXNvdXJjZSkKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nUmVzb3VyY2Uo
V2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSogcmVzb3VyY2UpCiAgICAgewogICAgICAgICByZXR1
cm4gcmVzb3VyY2UtPndlYmNvcmVTdHJpbmcoKTsKICAgICB9Ci0KLSAgICBzdGF0aWMgU3RyaW5n
IGZyb21WOFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nLCBpbnQgbGVuZ3Ro
KQorICAgIHN0YXRpYyBib29sIGlzMTZCaXRBdG9taWNTdHJpbmcoU3RyaW5nJiBzdHJpbmcpCiAg
ICAgewotICAgICAgICBBU1NFUlQodjhTdHJpbmctPkxlbmd0aCgpID09IGxlbmd0aCk7Ci0gICAg
ICAgIC8vIE5PVEU6IGFzIG9mIG5vdywgU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50KSBwZXJmb3Jt
cyBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQKLSAgICAgICAgLy8gYW55d2F5LCBzbyBubyBu
ZWVkIHRvIG9wdGltaXplIGxpa2Ugd2UgZG8gZm9yIEF0b21pY1N0cmluZyBiZWxvdy4KLSAgICAg
ICAgVUNoYXIqIGJ1ZmZlcjsKLSAgICAgICAgU3RyaW5nIHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRl
VW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7Ci0gICAgICAgIHY4U3RyaW5nLT5Xcml0ZShy
ZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oYnVmZmVyKSwgMCwgbGVuZ3RoKTsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICB0ZW1wbGF0
ZTxib29sIGFzY2lpPgorICAgIHN0YXRpYyBTdHJpbmcgZnJvbVY4U3RyaW5nKHY4OjpIYW5kbGU8
djg6OlN0cmluZz4sIGludCk7CiB9OwogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgU3RyaW5nVHJhaXRz
PEF0b21pY1N0cmluZz4gewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGZyb21TdHJp
bmdSZXNvdXJjZShXZWJDb3JlU3RyaW5nUmVzb3VyY2UqIHJlc291cmNlKQorICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGZyb21TdHJpbmdSZXNvdXJjZShXZWJDb3JlU3RyaW5nUmVzb3Vy
Y2VCYXNlKiByZXNvdXJjZSkKICAgICB7CiAgICAgICAgIHJldHVybiByZXNvdXJjZS0+YXRvbWlj
U3RyaW5nKCk7CiAgICAgfQotCi0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVjhTdHJpbmco
djg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgaW50IGxlbmd0aCkKKyAgICBzdGF0aWMg
Ym9vbCBpczE2Qml0QXRvbWljU3RyaW5nKEF0b21pY1N0cmluZyYgc3RyaW5nKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKHY4U3RyaW5nLT5MZW5ndGgoKSA9PSBsZW5ndGgpOwotICAgICAgICBzdGF0
aWMgY29uc3QgaW50IGlubGluZUJ1ZmZlclNpemUgPSAxNjsKLSAgICAgICAgaWYgKGxlbmd0aCA8
PSBpbmxpbmVCdWZmZXJTaXplKSB7Ci0gICAgICAgICAgICBVQ2hhciBpbmxpbmVCdWZmZXJbaW5s
aW5lQnVmZmVyU2l6ZV07Ci0gICAgICAgICAgICB2OFN0cmluZy0+V3JpdGUocmVpbnRlcnByZXRf
Y2FzdDx1aW50MTZfdCo+KGlubGluZUJ1ZmZlciksIDAsIGxlbmd0aCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gQXRvbWljU3RyaW5nKGlubGluZUJ1ZmZlciwgbGVuZ3RoKTsKLSAgICAgICAgfQotICAg
ICAgICBVQ2hhciogYnVmZmVyOwotICAgICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5nOjpjcmVh
dGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKLSAgICAgICAgdjhTdHJpbmctPldyaXRl
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihidWZmZXIpLCAwLCBsZW5ndGgpOwotICAgICAg
ICByZXR1cm4gQXRvbWljU3RyaW5nKHN0cmluZyk7CisgICAgICAgIHJldHVybiAhc3RyaW5nLnN0
cmluZygpLmlzOEJpdCgpOwogICAgIH0KKyAgICB0ZW1wbGF0ZTxib29sIGFzY2lpPgorICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcgZnJvbVY4U3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0cmluZz4sIGlu
dCk7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nVHlwZT4KK3RlbXBsYXRlPD4KK1N0
cmluZyBTdHJpbmdUcmFpdHM8U3RyaW5nPjo6ZnJvbVY4U3RyaW5nPGZhbHNlPih2ODo6SGFuZGxl
PHY4OjpTdHJpbmc+IHY4U3RyaW5nLCBpbnQgbGVuZ3RoKQoreworICAgIEFTU0VSVCh2OFN0cmlu
Zy0+TGVuZ3RoKCkgPT0gbGVuZ3RoKTsKKyAgICBVQ2hhciogYnVmZmVyOworICAgIFN0cmluZyBy
ZXN1bHQgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOworICAg
IHY4U3RyaW5nLT5Xcml0ZShyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oYnVmZmVyKSwgMCwg
bGVuZ3RoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTw+CitBdG9taWNTdHJp
bmcgU3RyaW5nVHJhaXRzPEF0b21pY1N0cmluZz46OmZyb21WOFN0cmluZzxmYWxzZT4odjg6Okhh
bmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgaW50IGxlbmd0aCkKK3sKKyAgICBBU1NFUlQodjhT
dHJpbmctPkxlbmd0aCgpID09IGxlbmd0aCk7CisgICAgc3RhdGljIGNvbnN0IGludCBpbmxpbmVC
dWZmZXJTaXplID0gMTY7CisgICAgaWYgKGxlbmd0aCA8PSBpbmxpbmVCdWZmZXJTaXplKSB7Cisg
ICAgICAgIFVDaGFyIGlubGluZUJ1ZmZlcltpbmxpbmVCdWZmZXJTaXplXTsKKyAgICAgICAgdjhT
dHJpbmctPldyaXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbmxpbmVCdWZmZXIpLCAw
LCBsZW5ndGgpOworICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKGlubGluZUJ1ZmZlciwgbGVu
Z3RoKTsKKyAgICB9CisgICAgVUNoYXIqIGJ1ZmZlcjsKKyAgICBTdHJpbmcgc3RyaW5nID0gU3Ry
aW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKKyAgICB2OFN0cmluZy0+
V3JpdGUocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGJ1ZmZlciksIDAsIGxlbmd0aCk7Cisg
ICAgcmV0dXJuIEF0b21pY1N0cmluZyhzdHJpbmcpOworfQorCit0ZW1wbGF0ZTw+CitTdHJpbmcg
U3RyaW5nVHJhaXRzPFN0cmluZz46OmZyb21WOFN0cmluZzx0cnVlPih2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IHY4U3RyaW5nLCBpbnQgbGVuZ3RoKQoreworICAgIEFTU0VSVCh2OFN0cmluZy0+TGVu
Z3RoKCkgPT0gbGVuZ3RoKTsKKyAgICBMQ2hhciogYnVmZmVyOworICAgIFN0cmluZyByZXN1bHQg
PSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOworICAgIHY4U3Ry
aW5nLT5Xcml0ZUFzY2lpKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlciksIDAsIGxlbmd0
aCwgdjg6OlN0cmluZzo6UFJFU0VSVkVfQVNDSUlfTlVMTCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordGVtcGxhdGU8PgoraW5saW5lIEF0b21pY1N0cmluZyBTdHJpbmdUcmFpdHM8QXRvbWlj
U3RyaW5nPjo6ZnJvbVY4U3RyaW5nPHRydWU+KHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJp
bmcsIGludCBsZW5ndGgpCit7CisgICAgLy8gRklYTUU6IFRoZXJlIGlzIG5vIGlubGluZSBmYXN0
IHBhdGggZm9yIDggYml0IGF0b21pYyBzdHJpbmdzLgorICAgIFN0cmluZyByZXN1bHQgPSBTdHJp
bmdUcmFpdHM8U3RyaW5nPjo6ZnJvbVY4U3RyaW5nPHRydWU+KHY4U3RyaW5nLCBsZW5ndGgpOwor
ICAgIHJldHVybiBBdG9taWNTdHJpbmcocmVzdWx0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nVHlwZT4KIFN0cmluZ1R5cGUgdjhTdHJpbmdUb1dlYkNvcmVTdHJpbmcodjg6OkhhbmRs
ZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgRXh0ZXJuYWxNb2RlIGV4dGVybmFsKQogewotICAgIFdl
YkNvcmVTdHJpbmdSZXNvdXJjZSogc3RyaW5nUmVzb3VyY2UgPSBXZWJDb3JlU3RyaW5nUmVzb3Vy
Y2U6OnRvU3RyaW5nUmVzb3VyY2UodjhTdHJpbmcpOwotICAgIGlmIChzdHJpbmdSZXNvdXJjZSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZ1RyYWl0czxTdHJpbmdUeXBlPjo6ZnJvbVN0cmluZ1Jlc291
cmNlKHN0cmluZ1Jlc291cmNlKTsKKyAgICB7CisgICAgICAgIHY4OjpTdHJpbmc6OkVuY29kaW5n
IGVuY29kaW5nOworICAgICAgICB2ODo6U3RyaW5nOjpFeHRlcm5hbFN0cmluZ1Jlc291cmNlQmFz
ZSogcmVzb3VyY2UgPSB2OFN0cmluZy0+R2V0RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZUJhc2UoJmVu
Y29kaW5nKTsKKyAgICAgICAgaWYgKExJS0VMWSghIXJlc291cmNlKSkgeworICAgICAgICAgICAg
V2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSogYmFzZTsKKyAgICAgICAgICAgIGlmIChlbmNvZGlu
ZyA9PSB2ODo6U3RyaW5nOjpBU0NJSV9FTkNPRElORykKKyAgICAgICAgICAgICAgICBiYXNlID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlOCo+KHJlc291cmNlKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBiYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZVN0cmlu
Z1Jlc291cmNlMTYqPihyZXNvdXJjZSk7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nVHJhaXRz
PFN0cmluZ1R5cGU+Ojpmcm9tU3RyaW5nUmVzb3VyY2UoYmFzZSk7CisgICAgICAgIH0KKyAgICB9
CiAKICAgICBpbnQgbGVuZ3RoID0gdjhTdHJpbmctPkxlbmd0aCgpOwotICAgIGlmICghbGVuZ3Ro
KQorICAgIGlmIChVTkxJS0VMWSghbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygiIik7
CiAKLSAgICBTdHJpbmdUeXBlIHJlc3VsdChTdHJpbmdUcmFpdHM8U3RyaW5nVHlwZT46OmZyb21W
OFN0cmluZyh2OFN0cmluZywgbGVuZ3RoKSk7CisgICAgYm9vbCBub25Bc2NpaSA9IHY4U3RyaW5n
LT5NYXlDb250YWluTm9uQXNjaWkoKTsKKyAgICBTdHJpbmdUeXBlIHJlc3VsdChub25Bc2NpaSA/
IFN0cmluZ1RyYWl0czxTdHJpbmdUeXBlPjo6dGVtcGxhdGUgZnJvbVY4U3RyaW5nPGZhbHNlPih2
OFN0cmluZywgbGVuZ3RoKSA6IFN0cmluZ1RyYWl0czxTdHJpbmdUeXBlPjo6dGVtcGxhdGUgZnJv
bVY4U3RyaW5nPHRydWU+KHY4U3RyaW5nLCBsZW5ndGgpKTsKKworICAgIGlmIChleHRlcm5hbCAh
PSBFeHRlcm5hbGl6ZSB8fCAhdjhTdHJpbmctPkNhbk1ha2VFeHRlcm5hbCgpKQorICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogCi0gICAgaWYgKGV4dGVybmFsID09IEV4dGVybmFsaXplICYmIHY4U3Ry
aW5nLT5DYW5NYWtlRXh0ZXJuYWwoKSkgewotICAgICAgICBzdHJpbmdSZXNvdXJjZSA9IG5ldyBX
ZWJDb3JlU3RyaW5nUmVzb3VyY2UocmVzdWx0KTsKLSAgICAgICAgaWYgKCF2OFN0cmluZy0+TWFr
ZUV4dGVybmFsKHN0cmluZ1Jlc291cmNlKSkgewotICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBh
IGZhaWx1cmUgZGVsZXRlIHRoZSBleHRlcm5hbCByZXNvdXJjZSBhcyBpdCB3YXMgbm90IHVzZWQu
CisgICAgaWYgKCFub25Bc2NpaSAmJiAhU3RyaW5nVHJhaXRzPFN0cmluZ1R5cGU+OjppczE2Qml0
QXRvbWljU3RyaW5nKHJlc3VsdCkpIHsKKyAgICAgICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlOCog
c3RyaW5nUmVzb3VyY2UgPSBuZXcgV2ViQ29yZVN0cmluZ1Jlc291cmNlOChyZXN1bHQpOworICAg
ICAgICBpZiAoVU5MSUtFTFkoIXY4U3RyaW5nLT5NYWtlRXh0ZXJuYWwoc3RyaW5nUmVzb3VyY2Up
KSkKKyAgICAgICAgICAgIGRlbGV0ZSBzdHJpbmdSZXNvdXJjZTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNiogc3RyaW5nUmVzb3VyY2UgPSBuZXcgV2ViQ29y
ZVN0cmluZ1Jlc291cmNlMTYocmVzdWx0KTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCF2OFN0cmlu
Zy0+TWFrZUV4dGVybmFsKHN0cmluZ1Jlc291cmNlKSkpCiAgICAgICAgICAgICBkZWxldGUgc3Ry
aW5nUmVzb3VyY2U7Ci0gICAgICAgIH0KICAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5jcHAKaW5kZXgg
YzYzNmYyYzAxZmJjYTRlMTMxMDY5OGQ5YzIzNmY1Yzk3MDNmMzM2Yy4uMjI2YWRlNTliYWExZjcw
OTYwYjViNDQxMjM2ZDgxZTFlNjFjNWE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFZhbHVlQ2FjaGUuY3BwCkBAIC0zMyw3ICszMywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyB2ODo6TG9jYWw8djg6OlN0cmluZz4gbWFrZUV4dGVybmFsU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogewotICAgIFdlYkNvcmVTdHJpbmdSZXNvdXJjZSogc3RyaW5nUmVz
b3VyY2UgPSBuZXcgV2ViQ29yZVN0cmluZ1Jlc291cmNlKHN0cmluZyk7CisgICAgaWYgKHN0cmlu
Zy5pczhCaXQoKSAmJiBzdHJpbmcuY29udGFpbnNPbmx5QVNDSUkoKSkgeworICAgICAgICBXZWJD
b3JlU3RyaW5nUmVzb3VyY2U4KiBzdHJpbmdSZXNvdXJjZSA9IG5ldyBXZWJDb3JlU3RyaW5nUmVz
b3VyY2U4KHN0cmluZyk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuZXdTdHJpbmcg
PSB2ODo6U3RyaW5nOjpOZXdFeHRlcm5hbChzdHJpbmdSZXNvdXJjZSk7CisgICAgICAgIGlmIChu
ZXdTdHJpbmcuSXNFbXB0eSgpKQorICAgICAgICAgICAgZGVsZXRlIHN0cmluZ1Jlc291cmNlOwor
ICAgICAgICByZXR1cm4gbmV3U3RyaW5nOworICAgIH0KKworICAgIFdlYkNvcmVTdHJpbmdSZXNv
dXJjZTE2KiBzdHJpbmdSZXNvdXJjZSA9IG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNihzdHJp
bmcpOwogICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuZXdTdHJpbmcgPSB2ODo6U3RyaW5nOjpO
ZXdFeHRlcm5hbChzdHJpbmdSZXNvdXJjZSk7CiAgICAgaWYgKG5ld1N0cmluZy5Jc0VtcHR5KCkp
CiAgICAgICAgIGRlbGV0ZSBzdHJpbmdSZXNvdXJjZTsKQEAgLTkyLDcgKzEwMCw3IEBAIHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBTdHJpbmdDYWNoZTo6djhFeHRlcm5hbFN0cmluZ1Nsb3coU3RyaW5n
SW1wbCogc3RyaW5nSW1wbCwKICAgICByZXR1cm4gbmV3U3RyaW5nOwogfQogCi12b2lkIFdlYkNv
cmVTdHJpbmdSZXNvdXJjZTo6dmlzaXRTdHJpbmdzKEV4dGVybmFsU3RyaW5nVmlzaXRvciogdmlz
aXRvcikKK3ZvaWQgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZTo6dmlzaXRTdHJpbmdzKEV4dGVy
bmFsU3RyaW5nVmlzaXRvciogdmlzaXRvcikKIHsKICAgICB2aXNpdG9yLT52aXNpdEpTRXh0ZXJu
YWxTdHJpbmcobV9wbGFpblN0cmluZy5pbXBsKCkpOwogICAgIGlmIChtX3BsYWluU3RyaW5nLmlt
cGwoKSAhPSBtX2F0b21pY1N0cmluZy5pbXBsKCkgJiYgIW1fYXRvbWljU3RyaW5nLmlzTnVsbCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuaAppbmRleCA3MmExYjcw
NDUyMzY2ZTA2ZWZlYTgxM2Q5NDAyYWUzNWQzZDc3NThlLi45ZDIyMWI4MTdjOWRhMjg4YTU5YzY2
NzUxMjEzNTZjNjM3ZGVhOWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFZhbHVlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVl
Q2FjaGUuaApAQCAtNzIsMTkgKzcyLDE5IEBAIGNvbnN0IGludCBudW1iZXJPZkNhY2hlZFNtYWxs
SW50ZWdlcnMgPSA2NDsKIAogLy8gV2ViQ29yZVN0cmluZ1Jlc291cmNlIGlzIGEgaGVscGVyIGNs
YXNzIGZvciB2OEV4dGVybmFsU3RyaW5nLiBJdCBpcyB1c2VkCiAvLyB0byBtYW5hZ2UgdGhlIGxp
ZmUtY3ljbGUgb2YgdGhlIHVuZGVybHlpbmcgYnVmZmVyIG9mIHRoZSBleHRlcm5hbCBzdHJpbmcu
Ci1jbGFzcyBXZWJDb3JlU3RyaW5nUmVzb3VyY2UgOiBwdWJsaWMgdjg6OlN0cmluZzo6RXh0ZXJu
YWxTdHJpbmdSZXNvdXJjZSB7CitjbGFzcyBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlIHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCisgICAgZXhwbGljaXQgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZShjb25zdCBTdHJp
bmcmIHN0cmluZykKICAgICAgICAgOiBtX3BsYWluU3RyaW5nKHN0cmluZykKICAgICB7CiAjaWZu
ZGVmIE5ERUJVRwogICAgICAgICBtX3RocmVhZElkID0gV1RGOjpjdXJyZW50VGhyZWFkKCk7CiAj
ZW5kaWYKICAgICAgICAgQVNTRVJUKCFzdHJpbmcuaXNOdWxsKCkpOwotICAgICAgICB2ODo6Vjg6
OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkoMiAqIHN0cmluZy5sZW5ndGgo
KSk7CisgICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9y
eShtZW1vcnlDb25zdW1wdGlvbihzdHJpbmcpKTsKICAgICB9CiAKLSAgICBleHBsaWNpdCBXZWJD
b3JlU3RyaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCisgICAgZXhwbGlj
aXQgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykK
ICAgICAgICAgOiBtX3BsYWluU3RyaW5nKHN0cmluZy5zdHJpbmcoKSkKICAgICAgICAgLCBtX2F0
b21pY1N0cmluZyhzdHJpbmcpCiAgICAgewpAQCAtOTIsMjcgKzkyLDIwIEBAIHB1YmxpYzoKICAg
ICAgICAgbV90aHJlYWRJZCA9IFdURjo6Y3VycmVudFRocmVhZCgpOwogI2VuZGlmCiAgICAgICAg
IEFTU0VSVCghc3RyaW5nLmlzTnVsbCgpKTsKLSAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRP
ZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KDIgKiBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICB2
ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkobWVtb3J5Q29uc3Vt
cHRpb24oc3RyaW5nKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+V2ViQ29yZVN0cmluZ1Jlc291
cmNlKCkKKyAgICB2aXJ0dWFsIH5XZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKCkKICAgICB7CiAj
aWZuZGVmIE5ERUJVRwogICAgICAgICBBU1NFUlQobV90aHJlYWRJZCA9PSBXVEY6OmN1cnJlbnRU
aHJlYWQoKSk7CiAjZW5kaWYKLSAgICAgICAgaW50IHJlZHVjZWRFeHRlcm5hbE1lbW9yeSA9IC0y
ICogbV9wbGFpblN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgaW50IHJlZHVjZWRFeHRlcm5hbE1l
bW9yeSA9IC1tZW1vcnlDb25zdW1wdGlvbihtX3BsYWluU3RyaW5nKTsKICAgICAgICAgaWYgKG1f
cGxhaW5TdHJpbmcuaW1wbCgpICE9IG1fYXRvbWljU3RyaW5nLmltcGwoKSAmJiAhbV9hdG9taWNT
dHJpbmcuaXNOdWxsKCkpCi0gICAgICAgICAgICByZWR1Y2VkRXh0ZXJuYWxNZW1vcnkgKj0gMjsK
KyAgICAgICAgICAgIHJlZHVjZWRFeHRlcm5hbE1lbW9yeSAtPSBtZW1vcnlDb25zdW1wdGlvbiht
X2F0b21pY1N0cmluZy5zdHJpbmcoKSk7CiAgICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZF
eHRlcm5hbEFsbG9jYXRlZE1lbW9yeShyZWR1Y2VkRXh0ZXJuYWxNZW1vcnkpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgY29uc3QgdWludDE2X3QqIGRhdGEoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihtX3BsYWluU3RyaW5nLmlt
cGwoKS0+Y2hhcmFjdGVycygpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHNpemVfdCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX3BsYWluU3RyaW5nLmltcGwoKS0+bGVuZ3RoKCk7IH0KLQogICAg
IGNvbnN0IFN0cmluZyYgd2ViY29yZVN0cmluZygpIHsgcmV0dXJuIG1fcGxhaW5TdHJpbmc7IH0K
IAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXRvbWljU3RyaW5nKCkKQEAgLTEyNCwxOSArMTE3
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYXRvbWljU3RyaW5nID0gQXRvbWljU3RyaW5n
KG1fcGxhaW5TdHJpbmcpOwogICAgICAgICAgICAgQVNTRVJUKCFtX2F0b21pY1N0cmluZy5pc051
bGwoKSk7CiAgICAgICAgICAgICBpZiAobV9wbGFpblN0cmluZy5pbXBsKCkgIT0gbV9hdG9taWNT
dHJpbmcuaW1wbCgpKQotICAgICAgICAgICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRl
cm5hbEFsbG9jYXRlZE1lbW9yeSgyICogbV9hdG9taWNTdHJpbmcubGVuZ3RoKCkpOworICAgICAg
ICAgICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSht
ZW1vcnlDb25zdW1wdGlvbihtX2F0b21pY1N0cmluZy5zdHJpbmcoKSkpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBtX2F0b21pY1N0cmluZzsKICAgICB9CiAKICAgICB2b2lkIHZpc2l0U3Ry
aW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqKTsKIAotICAgIHN0YXRpYyBXZWJDb3JlU3RyaW5n
UmVzb3VyY2UqIHRvU3RyaW5nUmVzb3VyY2Uodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmlu
ZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlU3RyaW5nUmVzb3Vy
Y2UqPih2OFN0cmluZy0+R2V0RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZSgpKTsKLSAgICB9Ci0KLXBy
aXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgLy8gQSBzaGFsbG93IGNvcHkgb2YgdGhlIHN0cmluZy4g
S2VlcHMgdGhlIHN0cmluZyBidWZmZXIgYWxpdmUgdW50aWwgdGhlIFY4IGVuZ2luZSBnYXJiYWdl
IGNvbGxlY3RzIGl0LgogICAgIFN0cmluZyBtX3BsYWluU3RyaW5nOwogICAgIC8vIElmIHRoaXMg
c3RyaW5nIGlzIGF0b21pYyBvciBoYXMgYmVlbiBtYWRlIGF0b21pYyBlYXJsaWVyIHRoZQpAQCAt
MTQ2LDExICsxMzQsNDggQEAgcHJpdmF0ZToKICAgICAvLyBpbnRvIHRoYXQgc3RyaW5nLgogICAg
IEF0b21pY1N0cmluZyBtX2F0b21pY1N0cmluZzsKIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgaW50
IG1lbW9yeUNvbnN1bXB0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN0cmluZy5sZW5ndGgoKSAqIChzdHJpbmcuaXM4Qml0KCkgPyBzaXplb2YoTENoYXIp
IDogc2l6ZW9mKFVDaGFyKSk7CisgICAgfQogI2lmbmRlZiBOREVCVUcKICAgICBXVEY6OlRocmVh
ZElkZW50aWZpZXIgbV90aHJlYWRJZDsKICNlbmRpZgogfTsKIAorY2xhc3MgV2ViQ29yZVN0cmlu
Z1Jlc291cmNlMTY6IHB1YmxpYyBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlLCBwdWJsaWMgdjg6
OlN0cmluZzo6RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFdl
YkNvcmVTdHJpbmdSZXNvdXJjZTE2KiB0b1N0cmluZ1Jlc291cmNlKHY4OjpIYW5kbGU8djg6OlN0
cmluZz4gdjhTdHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29y
ZVN0cmluZ1Jlc291cmNlMTYqPih2OFN0cmluZy0+R2V0RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZSgp
KTsKKyAgICB9CisgICAgZXhwbGljaXQgV2ViQ29yZVN0cmluZ1Jlc291cmNlMTYoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpOiBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKHN0cmluZykgeyB9CisgICAg
ZXhwbGljaXQgV2ViQ29yZVN0cmluZ1Jlc291cmNlMTYoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJp
bmcpOiBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKHN0cmluZykgeyB9CisKKyAgICB2aXJ0dWFs
IHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3BsYWluU3RyaW5nLmltcGwoKS0+bGVu
Z3RoKCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IHVpbnQxNl90KiBkYXRhKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4obV9wbGFp
blN0cmluZy5pbXBsKCktPmNoYXJhY3RlcnMoKSk7CisgICAgfQorfTsKKworY2xhc3MgV2ViQ29y
ZVN0cmluZ1Jlc291cmNlODogcHVibGljIFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UsIHB1Ymxp
YyB2ODo6U3RyaW5nOjpFeHRlcm5hbEFzY2lpU3RyaW5nUmVzb3VyY2UgeworcHVibGljOgorICAg
IHN0YXRpYyBXZWJDb3JlU3RyaW5nUmVzb3VyY2U4KiB0b1N0cmluZ1Jlc291cmNlKHY4OjpIYW5k
bGU8djg6OlN0cmluZz4gdjhTdHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4gY29uc3RfY2Fz
dDxXZWJDb3JlU3RyaW5nUmVzb3VyY2U4Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZVN0cmlu
Z1Jlc291cmNlOCo+KHY4U3RyaW5nLT5HZXRFeHRlcm5hbEFzY2lpU3RyaW5nUmVzb3VyY2UoKSkp
OworICAgIH0KKyAgICBleHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2U4KGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKTogV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZShzdHJpbmcpIHsgfQorICAgIGV4
cGxpY2l0IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTgoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcp
OiBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKHN0cmluZykgeyB9CisKKyAgICB2aXJ0dWFsIHNp
emVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3BsYWluU3RyaW5nLmltcGwoKS0+bGVuZ3Ro
KCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1fcGxhaW5TdHJpbmcuaW1w
bCgpLT5jaGFyYWN0ZXJzOCgpKTsKKyAgICB9Cit9OworCiBjbGFzcyBJbnRlZ2VyQ2FjaGUgewog
cHVibGljOgogICAgICBJbnRlZ2VyQ2FjaGUoKSA6IG1faW5pdGlhbGl6ZWQoZmFsc2UpIHsgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171452</attachid>
            <date>2012-10-30 08:03:14 -0700</date>
            <delta_ts>2012-11-16 07:08:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91850-20121030160139.patch</filename>
            <type>text/plain</type>
            <size>16490</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE5N2E2M2EyZTIyNmI2
ODNhN2RlYmJjZWI5MzMzMzI3MWMzZmY1ZC4uMjZkNzA0ZGM4YTM3ZTgxOTMzNWU4ZWMzNmQ1ZGEw
YmQxZDFiZGYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTEwLTMwICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIGFkZCA3IGJpdCBzdHJpbmdz
IGNhcGFiaWxpdGllcyB0byB0aGUgdjggYmluZGluZyBsYXllcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGVuYWJsZXMgdGhlIHY4IGJpbmRp
bmcgbGF5ZXIgdG8gbWFrZSB1c2Ugb2Ygd2Via2l0J3MKKyAgICAgICAgOCBiaXQgc3RyaW5nIGNh
cGFiaWxpdGllcy4gVXNpbmcgOCBiaXQgc3RyaW5ncyBsZWFkcyB0byBjZXJ0YWluCisgICAgICAg
IGJlbmNobWFyayBwZXJmb3JtYW5jZSBpbXByb3ZlbW50cyBhcyBjYW4gYmUgc2VlbiBpbgorICAg
ICAgICBodHRwczovL2J1Zy05MTg1MC1hdHRhY2htZW50cy53ZWJraXQub3JnL2F0dGFjaG1lbnQu
Y2dpP2lkPTE2MzMzNC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRlc3QgY292ZXJhZ2UgYWxy
ZWFkeSBleHRlbnNpdmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OnZpc2l0RXh0ZXJuYWxT
dHJpbmdzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFN0cmluZ1Jlc291cmNlLmNwcDoKKyAg
ICAgICAgKFN0cmluZ1RyYWl0cyk6CisgICAgICAgIChXZWJDb3JlOjpmYWxzZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRydWUpOgorICAgICAgICAoV2ViQ29yZTo6
djhTdHJpbmdUb1dlYkNvcmVTdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VmFsdWVD
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlRXh0ZXJuYWxTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZTo6dmlzaXRTdHJpbmdzKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvcmVTdHJpbmdSZXNvdXJjZUJhc2U6OldlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZTo6fldlYkNvcmVTdHJpbmdS
ZXNvdXJjZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNlQmFz
ZTo6YXRvbWljU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZTo6bWVtb3J5Q29uc3Vt
cHRpb24pOgorCiAyMDEyLTEwLTMwICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBu
b2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBBbmltYXRpb25zIGp1bXAgd2hlbiB0aGUgcGFnZSBp
cyBzdXNwZW5kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVy
SXNvbGF0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRl
RGF0YS5jcHAKaW5kZXggOTY4ODJmM2I3YWEyZGU0NzFhZGIwN2ZlYjYxZjAzYmY4ODM5ODc0NC4u
NmQ2OTc4YzNkZjFhNGJiNDY1MGE5NTYwM2UwYWQ4ZjllNDIwM2EyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKQEAgLTEyMSw3ICsxMjEs
NyBAQCB2b2lkIFY4UGVySXNvbGF0ZURhdGE6OnZpc2l0RXh0ZXJuYWxTdHJpbmdzKEV4dGVybmFs
U3RyaW5nVmlzaXRvciogdmlzaXRvcikKICAgICAgICAgdmlydHVhbCB+VmlzaXRvckltcGwoKSB7
IH0KICAgICAgICAgdmlydHVhbCB2b2lkIFZpc2l0RXh0ZXJuYWxTdHJpbmcodjg6OkhhbmRsZTx2
ODo6U3RyaW5nPiBzdHJpbmcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFdlYkNvcmVTdHJpbmdS
ZXNvdXJjZSogcmVzb3VyY2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlU3RyaW5nUmVzb3VyY2UqPihz
dHJpbmctPkdldEV4dGVybmFsU3RyaW5nUmVzb3VyY2UoKSk7CisgICAgICAgICAgICBXZWJDb3Jl
U3RyaW5nUmVzb3VyY2VCYXNlKiByZXNvdXJjZSA9IFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2U6
OnRvV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZShzdHJpbmcpOwogICAgICAgICAgICAgaWYgKHJl
c291cmNlKQogICAgICAgICAgICAgICAgIHJlc291cmNlLT52aXNpdFN0cmluZ3MobV92aXNpdG9y
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhT
dHJpbmdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFN0cmluZ1Jl
c291cmNlLmNwcAppbmRleCA1OTg1NTNmZmZjZDBiMzAzNjE1MDZiZTFjZTM5YTNjMjc2N2ZlNTY0
Li40MzA4MjViYTEwMGU1Zjg4YjgwOTRhZjdjMWEyYWZmNzQ5OTY5YWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFN0cmluZ1Jlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFN0cmluZ1Jlc291cmNlLmNwcApAQCAtMzAsNzIgKzMw
LDEyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlIDxjbGFzcyBTdHJpbmdD
bGFzcz4gc3RydWN0IFN0cmluZ1RyYWl0cyB7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZ0NsYXNz
JiBmcm9tU3RyaW5nUmVzb3VyY2UoV2ViQ29yZVN0cmluZ1Jlc291cmNlKik7Cit0ZW1wbGF0ZTxj
bGFzcyBTdHJpbmdDbGFzcz4gc3RydWN0IFN0cmluZ1RyYWl0cyB7CisgICAgc3RhdGljIGNvbnN0
IFN0cmluZ0NsYXNzJiBmcm9tU3RyaW5nUmVzb3VyY2UoV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFz
ZSopOworICAgIHN0YXRpYyBib29sIGlzMTZCaXRBdG9taWNTdHJpbmcoU3RyaW5nQ2xhc3MmKTsK
KyAgICB0ZW1wbGF0ZTxib29sIGFzY2lpPgogICAgIHN0YXRpYyBTdHJpbmdDbGFzcyBmcm9tVjhT
dHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiwgaW50KTsKIH07CiAKIHRlbXBsYXRlPD4KIHN0
cnVjdCBTdHJpbmdUcmFpdHM8U3RyaW5nPiB7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZnJv
bVN0cmluZ1Jlc291cmNlKFdlYkNvcmVTdHJpbmdSZXNvdXJjZSogcmVzb3VyY2UpCisgICAgc3Rh
dGljIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZ1Jlc291cmNlKFdlYkNvcmVTdHJpbmdSZXNvdXJj
ZUJhc2UqIHJlc291cmNlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlc291cmNlLT53ZWJjb3Jl
U3RyaW5nKCk7CiAgICAgfQotCi0gICAgc3RhdGljIFN0cmluZyBmcm9tVjhTdHJpbmcodjg6Okhh
bmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgaW50IGxlbmd0aCkKKyAgICBzdGF0aWMgYm9vbCBp
czE2Qml0QXRvbWljU3RyaW5nKFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KHY4U3RyaW5nLT5MZW5ndGgoKSA9PSBsZW5ndGgpOwotICAgICAgICAvLyBOT1RFOiBhcyBvZiBu
b3csIFN0cmluZyhjb25zdCBVQ2hhciosIGludCkgcGVyZm9ybXMgU3RyaW5nOjpjcmVhdGVVbmlu
aXRpYWxpemVkCi0gICAgICAgIC8vIGFueXdheSwgc28gbm8gbmVlZCB0byBvcHRpbWl6ZSBsaWtl
IHdlIGRvIGZvciBBdG9taWNTdHJpbmcgYmVsb3cuCi0gICAgICAgIFVDaGFyKiBidWZmZXI7Ci0g
ICAgICAgIFN0cmluZyByZXN1bHQgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3Ro
LCBidWZmZXIpOwotICAgICAgICB2OFN0cmluZy0+V3JpdGUocmVpbnRlcnByZXRfY2FzdDx1aW50
MTZfdCo+KGJ1ZmZlciksIDAsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgdGVtcGxhdGU8Ym9vbCBhc2NpaT4KKyAgICBz
dGF0aWMgU3RyaW5nIGZyb21WOFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+LCBpbnQpOwog
fTsKIAogdGVtcGxhdGU8Pgogc3RydWN0IFN0cmluZ1RyYWl0czxBdG9taWNTdHJpbmc+IHsKLSAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmcm9tU3RyaW5nUmVzb3VyY2UoV2ViQ29yZVN0
cmluZ1Jlc291cmNlKiByZXNvdXJjZSkKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBm
cm9tU3RyaW5nUmVzb3VyY2UoV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSogcmVzb3VyY2UpCiAg
ICAgewogICAgICAgICByZXR1cm4gcmVzb3VyY2UtPmF0b21pY1N0cmluZygpOwogICAgIH0KLQot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVY4U3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0cmlu
Zz4gdjhTdHJpbmcsIGludCBsZW5ndGgpCisgICAgc3RhdGljIGJvb2wgaXMxNkJpdEF0b21pY1N0
cmluZyhBdG9taWNTdHJpbmcmIHN0cmluZykKICAgICB7Ci0gICAgICAgIEFTU0VSVCh2OFN0cmlu
Zy0+TGVuZ3RoKCkgPT0gbGVuZ3RoKTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBpbmxpbmVC
dWZmZXJTaXplID0gMTY7Ci0gICAgICAgIGlmIChsZW5ndGggPD0gaW5saW5lQnVmZmVyU2l6ZSkg
ewotICAgICAgICAgICAgVUNoYXIgaW5saW5lQnVmZmVyW2lubGluZUJ1ZmZlclNpemVdOwotICAg
ICAgICAgICAgdjhTdHJpbmctPldyaXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbmxp
bmVCdWZmZXIpLCAwLCBsZW5ndGgpOwotICAgICAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhp
bmxpbmVCdWZmZXIsIGxlbmd0aCk7Ci0gICAgICAgIH0KLSAgICAgICAgVUNoYXIqIGJ1ZmZlcjsK
LSAgICAgICAgU3RyaW5nIHN0cmluZyA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5n
dGgsIGJ1ZmZlcik7Ci0gICAgICAgIHY4U3RyaW5nLT5Xcml0ZShyZWludGVycHJldF9jYXN0PHVp
bnQxNl90Kj4oYnVmZmVyKSwgMCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIEF0b21pY1N0cmlu
ZyhzdHJpbmcpOworICAgICAgICByZXR1cm4gIXN0cmluZy5zdHJpbmcoKS5pczhCaXQoKTsKICAg
ICB9CisgICAgdGVtcGxhdGU8Ym9vbCBhc2NpaT4KKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZy
b21WOFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+LCBpbnQpOwogfTsKIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFN0cmluZ1R5cGU+Cit0ZW1wbGF0ZTw+CitTdHJpbmcgU3RyaW5nVHJhaXRzPFN0
cmluZz46OmZyb21WOFN0cmluZzxmYWxzZT4odjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmlu
ZywgaW50IGxlbmd0aCkKK3sKKyAgICBBU1NFUlQodjhTdHJpbmctPkxlbmd0aCgpID09IGxlbmd0
aCk7CisgICAgVUNoYXIqIGJ1ZmZlcjsKKyAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nOjpjcmVh
dGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKKyAgICB2OFN0cmluZy0+V3JpdGUocmVp
bnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGJ1ZmZlciksIDAsIGxlbmd0aCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwordGVtcGxhdGU8PgorQXRvbWljU3RyaW5nIFN0cmluZ1RyYWl0czxBdG9t
aWNTdHJpbmc+Ojpmcm9tVjhTdHJpbmc8ZmFsc2U+KHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhT
dHJpbmcsIGludCBsZW5ndGgpCit7CisgICAgQVNTRVJUKHY4U3RyaW5nLT5MZW5ndGgoKSA9PSBs
ZW5ndGgpOworICAgIHN0YXRpYyBjb25zdCBpbnQgaW5saW5lQnVmZmVyU2l6ZSA9IDE2OworICAg
IGlmIChsZW5ndGggPD0gaW5saW5lQnVmZmVyU2l6ZSkgeworICAgICAgICBVQ2hhciBpbmxpbmVC
dWZmZXJbaW5saW5lQnVmZmVyU2l6ZV07CisgICAgICAgIHY4U3RyaW5nLT5Xcml0ZShyZWludGVy
cHJldF9jYXN0PHVpbnQxNl90Kj4oaW5saW5lQnVmZmVyKSwgMCwgbGVuZ3RoKTsKKyAgICAgICAg
cmV0dXJuIEF0b21pY1N0cmluZyhpbmxpbmVCdWZmZXIsIGxlbmd0aCk7CisgICAgfQorICAgIFVD
aGFyKiBidWZmZXI7CisgICAgU3RyaW5nIHN0cmluZyA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFs
aXplZChsZW5ndGgsIGJ1ZmZlcik7CisgICAgdjhTdHJpbmctPldyaXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDE2X3QqPihidWZmZXIpLCAwLCBsZW5ndGgpOworICAgIHJldHVybiBBdG9taWNTdHJp
bmcoc3RyaW5nKTsKK30KKwordGVtcGxhdGU8PgorU3RyaW5nIFN0cmluZ1RyYWl0czxTdHJpbmc+
Ojpmcm9tVjhTdHJpbmc8dHJ1ZT4odjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgaW50
IGxlbmd0aCkKK3sKKyAgICBBU1NFUlQodjhTdHJpbmctPkxlbmd0aCgpID09IGxlbmd0aCk7Cisg
ICAgTENoYXIqIGJ1ZmZlcjsKKyAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nOjpjcmVhdGVVbmlu
aXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKKyAgICB2OFN0cmluZy0+V3JpdGVBc2NpaShyZWlu
dGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIpLCAwLCBsZW5ndGgsIHY4OjpTdHJpbmc6OlBSRVNF
UlZFX0FTQ0lJX05VTEwpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPD4KK2lu
bGluZSBBdG9taWNTdHJpbmcgU3RyaW5nVHJhaXRzPEF0b21pY1N0cmluZz46OmZyb21WOFN0cmlu
Zzx0cnVlPih2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nLCBpbnQgbGVuZ3RoKQorewor
ICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBubyBpbmxpbmUgZmFzdCBwYXRoIGZvciA4IGJpdCBhdG9t
aWMgc3RyaW5ncy4KKyAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nVHJhaXRzPFN0cmluZz46OmZy
b21WOFN0cmluZzx0cnVlPih2OFN0cmluZywgbGVuZ3RoKTsKKyAgICByZXR1cm4gQXRvbWljU3Ry
aW5nKHJlc3VsdCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGU+CiBTdHJpbmdU
eXBlIHY4U3RyaW5nVG9XZWJDb3JlU3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJp
bmcsIEV4dGVybmFsTW9kZSBleHRlcm5hbCkKIHsKLSAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2Uq
IHN0cmluZ1Jlc291cmNlID0gV2ViQ29yZVN0cmluZ1Jlc291cmNlOjp0b1N0cmluZ1Jlc291cmNl
KHY4U3RyaW5nKTsKLSAgICBpZiAoc3RyaW5nUmVzb3VyY2UpCi0gICAgICAgIHJldHVybiBTdHJp
bmdUcmFpdHM8U3RyaW5nVHlwZT46OmZyb21TdHJpbmdSZXNvdXJjZShzdHJpbmdSZXNvdXJjZSk7
CisgICAgeworICAgICAgICAvLyBBIGxvdCBvZiBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlOjp0
b1dlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UgaXMgY29waWVkIGhlcmUgYnkgaGFuZCBmb3IgcGVy
Zm9ybWFuY2UgcmVhc29ucy4KKyAgICAgICAgLy8gVGhpcyBwb3J0aW9uIG9mIHRoaXMgZnVuY3Rp
b24gaXMgdmVyeSBob3QgaW4gY2VydGFpbiBEcm9tZWFvIGJlbmNobWFya3MuCisgICAgICAgIHY4
OjpTdHJpbmc6OkVuY29kaW5nIGVuY29kaW5nOworICAgICAgICB2ODo6U3RyaW5nOjpFeHRlcm5h
bFN0cmluZ1Jlc291cmNlQmFzZSogcmVzb3VyY2UgPSB2OFN0cmluZy0+R2V0RXh0ZXJuYWxTdHJp
bmdSZXNvdXJjZUJhc2UoJmVuY29kaW5nKTsKKyAgICAgICAgaWYgKExJS0VMWSghIXJlc291cmNl
KSkgeworICAgICAgICAgICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSogYmFzZTsKKyAgICAg
ICAgICAgIGlmIChlbmNvZGluZyA9PSB2ODo6U3RyaW5nOjpBU0NJSV9FTkNPRElORykKKyAgICAg
ICAgICAgICAgICBiYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlOCo+KHJl
c291cmNlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBiYXNlID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlMTYqPihyZXNvdXJjZSk7CisgICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nVHJhaXRzPFN0cmluZ1R5cGU+Ojpmcm9tU3RyaW5nUmVzb3VyY2UoYmFzZSk7
CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpbnQgbGVuZ3RoID0gdjhTdHJpbmctPkxlbmd0aCgp
OwotICAgIGlmICghbGVuZ3RoKQorICAgIGlmIChVTkxJS0VMWSghbGVuZ3RoKSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygiIik7CiAKLSAgICBTdHJpbmdUeXBlIHJlc3VsdChTdHJpbmdUcmFpdHM8
U3RyaW5nVHlwZT46OmZyb21WOFN0cmluZyh2OFN0cmluZywgbGVuZ3RoKSk7CisgICAgYm9vbCBu
b25Bc2NpaSA9IHY4U3RyaW5nLT5NYXlDb250YWluTm9uQXNjaWkoKTsKKyAgICBTdHJpbmdUeXBl
IHJlc3VsdChub25Bc2NpaSA/IFN0cmluZ1RyYWl0czxTdHJpbmdUeXBlPjo6dGVtcGxhdGUgZnJv
bVY4U3RyaW5nPGZhbHNlPih2OFN0cmluZywgbGVuZ3RoKSA6IFN0cmluZ1RyYWl0czxTdHJpbmdU
eXBlPjo6dGVtcGxhdGUgZnJvbVY4U3RyaW5nPHRydWU+KHY4U3RyaW5nLCBsZW5ndGgpKTsKIAot
ICAgIGlmIChleHRlcm5hbCA9PSBFeHRlcm5hbGl6ZSAmJiB2OFN0cmluZy0+Q2FuTWFrZUV4dGVy
bmFsKCkpIHsKLSAgICAgICAgc3RyaW5nUmVzb3VyY2UgPSBuZXcgV2ViQ29yZVN0cmluZ1Jlc291
cmNlKHJlc3VsdCk7Ci0gICAgICAgIGlmICghdjhTdHJpbmctPk1ha2VFeHRlcm5hbChzdHJpbmdS
ZXNvdXJjZSkpIHsKLSAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgYSBmYWlsdXJlIGRlbGV0ZSB0
aGUgZXh0ZXJuYWwgcmVzb3VyY2UgYXMgaXQgd2FzIG5vdCB1c2VkLgorICAgIGlmIChleHRlcm5h
bCAhPSBFeHRlcm5hbGl6ZSB8fCAhdjhTdHJpbmctPkNhbk1ha2VFeHRlcm5hbCgpKQorICAgICAg
ICByZXR1cm4gcmVzdWx0OworCisgICAgaWYgKCFub25Bc2NpaSAmJiAhU3RyaW5nVHJhaXRzPFN0
cmluZ1R5cGU+OjppczE2Qml0QXRvbWljU3RyaW5nKHJlc3VsdCkpIHsKKyAgICAgICAgV2ViQ29y
ZVN0cmluZ1Jlc291cmNlOCogc3RyaW5nUmVzb3VyY2UgPSBuZXcgV2ViQ29yZVN0cmluZ1Jlc291
cmNlOChyZXN1bHQpOworICAgICAgICBpZiAoVU5MSUtFTFkoIXY4U3RyaW5nLT5NYWtlRXh0ZXJu
YWwoc3RyaW5nUmVzb3VyY2UpKSkKKyAgICAgICAgICAgIGRlbGV0ZSBzdHJpbmdSZXNvdXJjZTsK
KyAgICB9IGVsc2UgeworICAgICAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNiogc3RyaW5nUmVz
b3VyY2UgPSBuZXcgV2ViQ29yZVN0cmluZ1Jlc291cmNlMTYocmVzdWx0KTsKKyAgICAgICAgaWYg
KFVOTElLRUxZKCF2OFN0cmluZy0+TWFrZUV4dGVybmFsKHN0cmluZ1Jlc291cmNlKSkpCiAgICAg
ICAgICAgICBkZWxldGUgc3RyaW5nUmVzb3VyY2U7Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
VmFsdWVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUu
Y3BwCmluZGV4IDM5Y2ZmYzVhMjhjZWM1MGRhZWQxZGE3ODk5MzU2NTZkNTllODE2MWEuLmQxODAx
MWRhZGJkOTI3ODBiNzVjYTk4YzZjOGE0OGY5YmRlNWIxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmNwcApAQCAtMzMsNyArMzMsMTUgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG1ha2VFeHRlcm5hbFN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2Uq
IHN0cmluZ1Jlc291cmNlID0gbmV3IFdlYkNvcmVTdHJpbmdSZXNvdXJjZShzdHJpbmcpOworICAg
IGlmIChzdHJpbmcuaXM4Qml0KCkgJiYgc3RyaW5nLmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKKyAg
ICAgICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlOCogc3RyaW5nUmVzb3VyY2UgPSBuZXcgV2ViQ29y
ZVN0cmluZ1Jlc291cmNlOChzdHJpbmcpOworICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmV3U3RyaW5nID0gdjg6OlN0cmluZzo6TmV3RXh0ZXJuYWwoc3RyaW5nUmVzb3VyY2UpOworICAg
ICAgICBpZiAobmV3U3RyaW5nLklzRW1wdHkoKSkKKyAgICAgICAgICAgIGRlbGV0ZSBzdHJpbmdS
ZXNvdXJjZTsKKyAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKKyAgICB9CisKKyAgICBXZWJDb3Jl
U3RyaW5nUmVzb3VyY2UxNiogc3RyaW5nUmVzb3VyY2UgPSBuZXcgV2ViQ29yZVN0cmluZ1Jlc291
cmNlMTYoc3RyaW5nKTsKICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gbmV3U3RyaW5nID0gdjg6
OlN0cmluZzo6TmV3RXh0ZXJuYWwoc3RyaW5nUmVzb3VyY2UpOwogICAgIGlmIChuZXdTdHJpbmcu
SXNFbXB0eSgpKQogICAgICAgICBkZWxldGUgc3RyaW5nUmVzb3VyY2U7CkBAIC05Miw3ICsxMDAs
MTggQEAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IFN0cmluZ0NhY2hlOjp2OEV4dGVybmFsU3RyaW5n
U2xvdyhTdHJpbmdJbXBsKiBzdHJpbmdJbXBsLAogICAgIHJldHVybiBuZXdTdHJpbmc7CiB9CiAK
LXZvaWQgV2ViQ29yZVN0cmluZ1Jlc291cmNlOjp2aXNpdFN0cmluZ3MoRXh0ZXJuYWxTdHJpbmdW
aXNpdG9yKiB2aXNpdG9yKQorV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSogV2ViQ29yZVN0cmlu
Z1Jlc291cmNlQmFzZTo6dG9XZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKHY4OjpIYW5kbGU8djg6
OlN0cmluZz4gc3RyaW5nKQoreworICAgIHY4OjpTdHJpbmc6OkVuY29kaW5nIGVuY29kaW5nOwor
ICAgIHY4OjpTdHJpbmc6OkV4dGVybmFsU3RyaW5nUmVzb3VyY2VCYXNlKiByZXNvdXJjZSA9IHN0
cmluZy0+R2V0RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZUJhc2UoJmVuY29kaW5nKTsKKyAgICBpZiAo
IXJlc291cmNlKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoZW5jb2RpbmcgPT0gdjg6OlN0
cmluZzo6QVNDSUlfRU5DT0RJTkcpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3Jl
U3RyaW5nUmVzb3VyY2U4Kj4ocmVzb3VyY2UpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJD
b3JlU3RyaW5nUmVzb3VyY2UxNio+KHJlc291cmNlKTsKK30KKwordm9pZCBXZWJDb3JlU3RyaW5n
UmVzb3VyY2VCYXNlOjp2aXNpdFN0cmluZ3MoRXh0ZXJuYWxTdHJpbmdWaXNpdG9yKiB2aXNpdG9y
KQogewogICAgIHZpc2l0b3ItPnZpc2l0SlNFeHRlcm5hbFN0cmluZyhtX3BsYWluU3RyaW5nLmlt
cGwoKSk7CiAgICAgaWYgKG1fcGxhaW5TdHJpbmcuaW1wbCgpICE9IG1fYXRvbWljU3RyaW5nLmlt
cGwoKSAmJiAhbV9hdG9taWNTdHJpbmcuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4VmFsdWVDYWNoZS5oCmluZGV4IDY3MWY2OGRkNDJjYTQwMzFlY2NhZWRjZmQzMzhkMzdi
NzA5OTM1NmIuLmMyOGQ1NDIzYTIwYTg3ZTk4NTc0MmQ2MjIxOTBmZmRhNDY0NWIzMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5oCkBAIC03MiwxOSArNzIsMjEg
QEAgY29uc3QgaW50IG51bWJlck9mQ2FjaGVkU21hbGxJbnRlZ2VycyA9IDY0OwogCiAvLyBXZWJD
b3JlU3RyaW5nUmVzb3VyY2UgaXMgYSBoZWxwZXIgY2xhc3MgZm9yIHY4RXh0ZXJuYWxTdHJpbmcu
IEl0IGlzIHVzZWQKIC8vIHRvIG1hbmFnZSB0aGUgbGlmZS1jeWNsZSBvZiB0aGUgdW5kZXJseWlu
ZyBidWZmZXIgb2YgdGhlIGV4dGVybmFsIHN0cmluZy4KLWNsYXNzIFdlYkNvcmVTdHJpbmdSZXNv
dXJjZSA6IHB1YmxpYyB2ODo6U3RyaW5nOjpFeHRlcm5hbFN0cmluZ1Jlc291cmNlIHsKK2NsYXNz
IFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UgewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkNv
cmVTdHJpbmdSZXNvdXJjZShjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0aWMgV2ViQ29y
ZVN0cmluZ1Jlc291cmNlQmFzZSogdG9XZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKHY4OjpIYW5k
bGU8djg6OlN0cmluZz4pOworCisgICAgZXhwbGljaXQgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3BsYWluU3RyaW5nKHN0cmluZykK
ICAgICB7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBtX3RocmVhZElkID0gV1RGOjpjdXJyZW50
VGhyZWFkKCk7CiAjZW5kaWYKICAgICAgICAgQVNTRVJUKCFzdHJpbmcuaXNOdWxsKCkpOwotICAg
ICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkoMiAqIHN0
cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFs
bG9jYXRlZE1lbW9yeShtZW1vcnlDb25zdW1wdGlvbihzdHJpbmcpKTsKICAgICB9CiAKLSAgICBl
eHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcp
CisgICAgZXhwbGljaXQgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZShjb25zdCBBdG9taWNTdHJp
bmcmIHN0cmluZykKICAgICAgICAgOiBtX3BsYWluU3RyaW5nKHN0cmluZy5zdHJpbmcoKSkKICAg
ICAgICAgLCBtX2F0b21pY1N0cmluZyhzdHJpbmcpCiAgICAgewpAQCAtOTIsMjcgKzk0LDIwIEBA
IHB1YmxpYzoKICAgICAgICAgbV90aHJlYWRJZCA9IFdURjo6Y3VycmVudFRocmVhZCgpOwogI2Vu
ZGlmCiAgICAgICAgIEFTU0VSVCghc3RyaW5nLmlzTnVsbCgpKTsKLSAgICAgICAgdjg6OlY4OjpB
ZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVkTWVtb3J5KDIgKiBzdHJpbmcubGVuZ3RoKCkp
OworICAgICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnko
bWVtb3J5Q29uc3VtcHRpb24oc3RyaW5nKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+V2ViQ29y
ZVN0cmluZ1Jlc291cmNlKCkKKyAgICB2aXJ0dWFsIH5XZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNl
KCkKICAgICB7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBBU1NFUlQobV90aHJlYWRJZCA9PSBX
VEY6OmN1cnJlbnRUaHJlYWQoKSk7CiAjZW5kaWYKLSAgICAgICAgaW50IHJlZHVjZWRFeHRlcm5h
bE1lbW9yeSA9IC0yICogbV9wbGFpblN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgaW50IHJlZHVj
ZWRFeHRlcm5hbE1lbW9yeSA9IC1tZW1vcnlDb25zdW1wdGlvbihtX3BsYWluU3RyaW5nKTsKICAg
ICAgICAgaWYgKG1fcGxhaW5TdHJpbmcuaW1wbCgpICE9IG1fYXRvbWljU3RyaW5nLmltcGwoKSAm
JiAhbV9hdG9taWNTdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgICAgICByZWR1Y2VkRXh0ZXJuYWxN
ZW1vcnkgKj0gMjsKKyAgICAgICAgICAgIHJlZHVjZWRFeHRlcm5hbE1lbW9yeSAtPSBtZW1vcnlD
b25zdW1wdGlvbihtX2F0b21pY1N0cmluZy5zdHJpbmcoKSk7CiAgICAgICAgIHY4OjpWODo6QWRq
dXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeShyZWR1Y2VkRXh0ZXJuYWxNZW1vcnkp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgY29uc3QgdWludDE2X3QqIGRhdGEoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihtX3Bs
YWluU3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVycygpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHNp
emVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3BsYWluU3RyaW5nLmltcGwoKS0+bGVuZ3Ro
KCk7IH0KLQogICAgIGNvbnN0IFN0cmluZyYgd2ViY29yZVN0cmluZygpIHsgcmV0dXJuIG1fcGxh
aW5TdHJpbmc7IH0KIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXRvbWljU3RyaW5nKCkKQEAg
LTEyNCwxOSArMTE5LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYXRvbWljU3RyaW5nID0g
QXRvbWljU3RyaW5nKG1fcGxhaW5TdHJpbmcpOwogICAgICAgICAgICAgQVNTRVJUKCFtX2F0b21p
Y1N0cmluZy5pc051bGwoKSk7CiAgICAgICAgICAgICBpZiAobV9wbGFpblN0cmluZy5pbXBsKCkg
IT0gbV9hdG9taWNTdHJpbmcuaW1wbCgpKQotICAgICAgICAgICAgICAgIHY4OjpWODo6QWRqdXN0
QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSgyICogbV9hdG9taWNTdHJpbmcubGVuZ3Ro
KCkpOworICAgICAgICAgICAgICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9j
YXRlZE1lbW9yeShtZW1vcnlDb25zdW1wdGlvbihtX2F0b21pY1N0cmluZy5zdHJpbmcoKSkpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2F0b21pY1N0cmluZzsKICAgICB9CiAKICAgICB2
b2lkIHZpc2l0U3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqKTsKIAotICAgIHN0YXRpYyBX
ZWJDb3JlU3RyaW5nUmVzb3VyY2UqIHRvU3RyaW5nUmVzb3VyY2Uodjg6OkhhbmRsZTx2ODo6U3Ry
aW5nPiB2OFN0cmluZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3Jl
U3RyaW5nUmVzb3VyY2UqPih2OFN0cmluZy0+R2V0RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZSgpKTsK
LSAgICB9Ci0KLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgLy8gQSBzaGFsbG93IGNvcHkgb2Yg
dGhlIHN0cmluZy4gS2VlcHMgdGhlIHN0cmluZyBidWZmZXIgYWxpdmUgdW50aWwgdGhlIFY4IGVu
Z2luZSBnYXJiYWdlIGNvbGxlY3RzIGl0LgogICAgIFN0cmluZyBtX3BsYWluU3RyaW5nOwogICAg
IC8vIElmIHRoaXMgc3RyaW5nIGlzIGF0b21pYyBvciBoYXMgYmVlbiBtYWRlIGF0b21pYyBlYXJs
aWVyIHRoZQpAQCAtMTQ2LDExICsxMzYsNDAgQEAgcHJpdmF0ZToKICAgICAvLyBpbnRvIHRoYXQg
c3RyaW5nLgogICAgIEF0b21pY1N0cmluZyBtX2F0b21pY1N0cmluZzsKIAorcHJpdmF0ZToKKyAg
ICBzdGF0aWMgaW50IG1lbW9yeUNvbnN1bXB0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHN0cmluZy5sZW5ndGgoKSAqIChzdHJpbmcuaXM4Qml0KCkgPyBz
aXplb2YoTENoYXIpIDogc2l6ZW9mKFVDaGFyKSk7CisgICAgfQogI2lmbmRlZiBOREVCVUcKICAg
ICBXVEY6OlRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJZDsKICNlbmRpZgogfTsKIAorY2xhc3Mg
V2ViQ29yZVN0cmluZ1Jlc291cmNlMTYgOiBwdWJsaWMgV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFz
ZSwgcHVibGljIHY4OjpTdHJpbmc6OkV4dGVybmFsU3RyaW5nUmVzb3VyY2UgeworcHVibGljOgor
ICAgIGV4cGxpY2l0IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2KGNvbnN0IFN0cmluZyYgc3RyaW5n
KSA6IFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2Uoc3RyaW5nKSB7IH0KKyAgICBleHBsaWNpdCBX
ZWJDb3JlU3RyaW5nUmVzb3VyY2UxNihjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykgOiBXZWJD
b3JlU3RyaW5nUmVzb3VyY2VCYXNlKHN0cmluZykgeyB9CisKKyAgICB2aXJ0dWFsIHNpemVfdCBs
ZW5ndGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3BsYWluU3RyaW5nLmltcGwoKS0+bGVu
Z3RoKCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IHVpbnQxNl90KiBkYXRhKCkgY29uc3QgT1ZFUlJJ
REUKKyAgICB7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90
Kj4obV9wbGFpblN0cmluZy5pbXBsKCktPmNoYXJhY3RlcnMoKSk7CisgICAgfQorfTsKKworY2xh
c3MgV2ViQ29yZVN0cmluZ1Jlc291cmNlOCA6IHB1YmxpYyBXZWJDb3JlU3RyaW5nUmVzb3VyY2VC
YXNlLCBwdWJsaWMgdjg6OlN0cmluZzo6RXh0ZXJuYWxBc2NpaVN0cmluZ1Jlc291cmNlIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2U4KGNvbnN0IFN0cmluZyYg
c3RyaW5nKSA6IFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2Uoc3RyaW5nKSB7IH0KKyAgICBleHBs
aWNpdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2U4KGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKSA6
IFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2Uoc3RyaW5nKSB7IH0KKworICAgIHZpcnR1YWwgc2l6
ZV90IGxlbmd0aCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fcGxhaW5TdHJpbmcuaW1wbCgp
LT5sZW5ndGgoKTsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0IE9WRVJS
SURFCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
bV9wbGFpblN0cmluZy5pbXBsKCktPmNoYXJhY3RlcnM4KCkpOworICAgIH0KK307CisKIGNsYXNz
IEludGVnZXJDYWNoZSB7CiBwdWJsaWM6CiAgICAgIEludGVnZXJDYWNoZSgpIDogbV9pbml0aWFs
aXplZChmYWxzZSkgeyB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174676</attachid>
            <date>2012-11-16 07:08:36 -0800</date>
            <delta_ts>2012-11-20 17:22:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91850-20121116160631.patch</filename>
            <type>text/plain</type>
            <size>17244</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVkM2Y5YjhhMjZhNGFi
ZWMxM2JjMWM2ZmUwYTg2YWE5YjRlYzRlMS4uZmRkZDViOGI1YTViM2U0NmQxM2M4MzIyZTU4YTRl
NTEwMzMxNzcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTExLTE2ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIGFkZCA3IGJpdCBzdHJpbmdz
IGNhcGFiaWxpdGllcyB0byB0aGUgdjggYmluZGluZyBsYXllcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGVuYWJsZXMgdGhlIHY4IGJpbmRp
bmcgbGF5ZXIgdG8gbWFrZSB1c2Ugb2Ygd2Via2l0J3MKKyAgICAgICAgOCBiaXQgc3RyaW5nIGNh
cGFiaWxpdGllcy4gVXNpbmcgOCBiaXQgc3RyaW5ncyBsZWFkcyB0byBjZXJ0YWluCisgICAgICAg
IGJlbmNobWFyayBwZXJmb3JtYW5jZSBpbXByb3ZlbW50cyBhcyBjYW4gYmUgc2VlbiBpbgorICAg
ICAgICBodHRwczovL2J1Zy05MTg1MC1hdHRhY2htZW50cy53ZWJraXQub3JnL2F0dGFjaG1lbnQu
Y2dpP2lkPTE2MzMzNC4KKworICAgICAgICBObyBuZXcgdGVzdHMuICBUZXN0IGNvdmVyYWdlIGFs
cmVhZHkgZXh0ZW5zaXZlLgorCisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjp2aXNpdEV4dGVybmFs
U3RyaW5ncyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhTdHJpbmdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChTdHJpbmdUcmFpdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZmFsc2UpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0cnVlKToKKyAgICAgICAgKFdlYkNvcmU6
OnY4U3RyaW5nVG9XZWJDb3JlU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFZhbHVl
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUV4dGVybmFsU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2U6OnRvV2ViQ29yZVN0cmluZ1Jl
c291cmNlQmFzZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
cmVTdHJpbmdSZXNvdXJjZUJhc2U6OnZpc2l0U3RyaW5ncyk6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhWYWx1ZUNhY2hlLmg6CisgICAgICAgIChXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2U6OldlYkNvcmVTdHJp
bmdSZXNvdXJjZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNl
QmFzZTo6fldlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
Q29yZVN0cmluZ1Jlc291cmNlQmFzZTo6YXRvbWljU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2U6Om1lbW9yeUNvbnN1bXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJp
bmdSZXNvdXJjZTE2OjpXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmVTdHJpbmdSZXNvdXJjZTgpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29yZVN0cmluZ1Jlc291cmNlODo6V2ViQ29yZVN0cmluZ1Jlc291cmNlOCk6CisKIDIwMTIt
MTEtMTYgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBbT3ZlcnJpZGVzXSBEZXZpY2UgbWV0cmljcyBnZXQgcmVzZXQgb24g
bmF2aWdhdGlvbiwgeWV0IHJlbWFpbiBpbiB0aGUgT3ZlcnJpZGVzIHZpZXcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKaW5kZXggYjliMTlhY2Ez
YmI4NDZjNThlYzBhNjdlZDViNDBhMzJjZGZlZjQ2Ny4uNGNiZDJmZjJhYWM4NTBiODgwN2NmMGY4
OWViZWVkOTdkYWQ3NWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQZXJJc29sYXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQ
ZXJJc29sYXRlRGF0YS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFY4UGVySXNvbGF0ZURh
dGE6OnZpc2l0RXh0ZXJuYWxTdHJpbmdzKEV4dGVybmFsU3RyaW5nVmlzaXRvciogdmlzaXRvcikK
ICAgICAgICAgdmlydHVhbCB+VmlzaXRvckltcGwoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lk
IFZpc2l0RXh0ZXJuYWxTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBzdHJpbmcpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFdlYkNvcmVTdHJpbmdSZXNvdXJjZSogcmVzb3VyY2UgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlU3RyaW5nUmVzb3VyY2UqPihzdHJpbmctPkdldEV4dGVybmFsU3RyaW5n
UmVzb3VyY2UoKSk7CisgICAgICAgICAgICBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKiByZXNv
dXJjZSA9IFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2U6OnRvV2ViQ29yZVN0cmluZ1Jlc291cmNl
QmFzZShzdHJpbmcpOwogICAgICAgICAgICAgaWYgKHJlc291cmNlKQogICAgICAgICAgICAgICAg
IHJlc291cmNlLT52aXNpdFN0cmluZ3MobV92aXNpdG9yKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhTdHJpbmdSZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFN0cmluZ1Jlc291cmNlLmNwcAppbmRleCA1OTg1NTNm
ZmZjZDBiMzAzNjE1MDZiZTFjZTM5YTNjMjc2N2ZlNTY0Li5hYTIyMDQ4MmU2YjIxYmJiMWZjNzA4
NGFlOTk0M2NjZTIzOTQzODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFN0cmluZ1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFN0cmluZ1Jlc291cmNlLmNwcApAQCAtMzAsNzIgKzMwLDEyOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXRlbXBsYXRlIDxjbGFzcyBTdHJpbmdDbGFzcz4gc3RydWN0IFN0cmluZ1RyYWl0
cyB7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZ0NsYXNzJiBmcm9tU3RyaW5nUmVzb3VyY2UoV2Vi
Q29yZVN0cmluZ1Jlc291cmNlKik7Cit0ZW1wbGF0ZTxjbGFzcyBTdHJpbmdDbGFzcz4gc3RydWN0
IFN0cmluZ1RyYWl0cyB7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZ0NsYXNzJiBmcm9tU3RyaW5n
UmVzb3VyY2UoV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSopOworICAgIHN0YXRpYyBib29sIGlz
MTZCaXRBdG9taWNTdHJpbmcoU3RyaW5nQ2xhc3MmKTsKKyAgICB0ZW1wbGF0ZTxib29sIGFzY2lp
PgogICAgIHN0YXRpYyBTdHJpbmdDbGFzcyBmcm9tVjhTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3Ry
aW5nPiwgaW50KTsKIH07CiAKIHRlbXBsYXRlPD4KIHN0cnVjdCBTdHJpbmdUcmFpdHM8U3RyaW5n
PiB7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZ1Jlc291cmNlKFdlYkNvcmVT
dHJpbmdSZXNvdXJjZSogcmVzb3VyY2UpCisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZnJvbVN0
cmluZ1Jlc291cmNlKFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UqIHJlc291cmNlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHJlc291cmNlLT53ZWJjb3JlU3RyaW5nKCk7CiAgICAgfQotCi0gICAg
c3RhdGljIFN0cmluZyBmcm9tVjhTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmlu
ZywgaW50IGxlbmd0aCkKKyAgICBzdGF0aWMgYm9vbCBpczE2Qml0QXRvbWljU3RyaW5nKFN0cmlu
ZyYgc3RyaW5nKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHY4U3RyaW5nLT5MZW5ndGgoKSA9PSBs
ZW5ndGgpOwotICAgICAgICAvLyBOT1RFOiBhcyBvZiBub3csIFN0cmluZyhjb25zdCBVQ2hhcios
IGludCkgcGVyZm9ybXMgU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkCi0gICAgICAgIC8vIGFu
eXdheSwgc28gbm8gbmVlZCB0byBvcHRpbWl6ZSBsaWtlIHdlIGRvIGZvciBBdG9taWNTdHJpbmcg
YmVsb3cuCi0gICAgICAgIFVDaGFyKiBidWZmZXI7Ci0gICAgICAgIFN0cmluZyByZXN1bHQgPSBT
dHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgICAgICB2OFN0
cmluZy0+V3JpdGUocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGJ1ZmZlciksIDAsIGxlbmd0
aCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CisgICAgdGVtcGxhdGU8Ym9vbCBhc2NpaT4KKyAgICBzdGF0aWMgU3RyaW5nIGZyb21WOFN0cmlu
Zyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+LCBpbnQpOwogfTsKIAogdGVtcGxhdGU8Pgogc3RydWN0
IFN0cmluZ1RyYWl0czxBdG9taWNTdHJpbmc+IHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBmcm9tU3RyaW5nUmVzb3VyY2UoV2ViQ29yZVN0cmluZ1Jlc291cmNlKiByZXNvdXJjZSkK
KyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmcm9tU3RyaW5nUmVzb3VyY2UoV2ViQ29y
ZVN0cmluZ1Jlc291cmNlQmFzZSogcmVzb3VyY2UpCiAgICAgewogICAgICAgICByZXR1cm4gcmVz
b3VyY2UtPmF0b21pY1N0cmluZygpOwogICAgIH0KLQotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
ZnJvbVY4U3RyaW5nKHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcsIGludCBsZW5ndGgp
CisgICAgc3RhdGljIGJvb2wgaXMxNkJpdEF0b21pY1N0cmluZyhBdG9taWNTdHJpbmcmIHN0cmlu
ZykKICAgICB7Ci0gICAgICAgIEFTU0VSVCh2OFN0cmluZy0+TGVuZ3RoKCkgPT0gbGVuZ3RoKTsK
LSAgICAgICAgc3RhdGljIGNvbnN0IGludCBpbmxpbmVCdWZmZXJTaXplID0gMTY7Ci0gICAgICAg
IGlmIChsZW5ndGggPD0gaW5saW5lQnVmZmVyU2l6ZSkgewotICAgICAgICAgICAgVUNoYXIgaW5s
aW5lQnVmZmVyW2lubGluZUJ1ZmZlclNpemVdOwotICAgICAgICAgICAgdjhTdHJpbmctPldyaXRl
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihpbmxpbmVCdWZmZXIpLCAwLCBsZW5ndGgpOwot
ICAgICAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhpbmxpbmVCdWZmZXIsIGxlbmd0aCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgVUNoYXIqIGJ1ZmZlcjsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9
IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7Ci0gICAgICAgIHY4
U3RyaW5nLT5Xcml0ZShyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oYnVmZmVyKSwgMCwgbGVu
Z3RoKTsKLSAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhzdHJpbmcpOworICAgICAgICByZXR1
cm4gIXN0cmluZy5zdHJpbmcoKS5pczhCaXQoKTsKICAgICB9CisgICAgdGVtcGxhdGU8Ym9vbCBh
c2NpaT4KKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21WOFN0cmluZyh2ODo6SGFuZGxlPHY4
OjpTdHJpbmc+LCBpbnQpOwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFN0cmluZ1R5cGU+Cit0
ZW1wbGF0ZTw+CitTdHJpbmcgU3RyaW5nVHJhaXRzPFN0cmluZz46OmZyb21WOFN0cmluZzxmYWxz
ZT4odjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgaW50IGxlbmd0aCkKK3sKKyAgICBB
U1NFUlQodjhTdHJpbmctPkxlbmd0aCgpID09IGxlbmd0aCk7CisgICAgVUNoYXIqIGJ1ZmZlcjsK
KyAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwg
YnVmZmVyKTsKKyAgICB2OFN0cmluZy0+V3JpdGUocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+
KGJ1ZmZlciksIDAsIGxlbmd0aCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGU8
PgorQXRvbWljU3RyaW5nIFN0cmluZ1RyYWl0czxBdG9taWNTdHJpbmc+Ojpmcm9tVjhTdHJpbmc8
ZmFsc2U+KHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcsIGludCBsZW5ndGgpCit7Cisg
ICAgQVNTRVJUKHY4U3RyaW5nLT5MZW5ndGgoKSA9PSBsZW5ndGgpOworICAgIHN0YXRpYyBjb25z
dCBpbnQgaW5saW5lQnVmZmVyU2l6ZSA9IDE2OworICAgIGlmIChsZW5ndGggPD0gaW5saW5lQnVm
ZmVyU2l6ZSkgeworICAgICAgICBVQ2hhciBpbmxpbmVCdWZmZXJbaW5saW5lQnVmZmVyU2l6ZV07
CisgICAgICAgIHY4U3RyaW5nLT5Xcml0ZShyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oaW5s
aW5lQnVmZmVyKSwgMCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhpbmxp
bmVCdWZmZXIsIGxlbmd0aCk7CisgICAgfQorICAgIFVDaGFyKiBidWZmZXI7CisgICAgU3RyaW5n
IHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7Cisg
ICAgdjhTdHJpbmctPldyaXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihidWZmZXIpLCAw
LCBsZW5ndGgpOworICAgIHJldHVybiBBdG9taWNTdHJpbmcocmVzdWx0KTsKK30KKwordGVtcGxh
dGU8PgorU3RyaW5nIFN0cmluZ1RyYWl0czxTdHJpbmc+Ojpmcm9tVjhTdHJpbmc8dHJ1ZT4odjg6
OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgaW50IGxlbmd0aCkKK3sKKyAgICBBU1NFUlQo
djhTdHJpbmctPkxlbmd0aCgpID09IGxlbmd0aCk7CisgICAgTENoYXIqIGJ1ZmZlcjsKKyAgICBT
dHJpbmcgcmVzdWx0ID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVy
KTsKKyAgICB2OFN0cmluZy0+V3JpdGVBc2NpaShyZWludGVycHJldF9jYXN0PGNoYXIqPihidWZm
ZXIpLCAwLCBsZW5ndGgsIHY4OjpTdHJpbmc6OlBSRVNFUlZFX0FTQ0lJX05VTEwpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPD4KK0F0b21pY1N0cmluZyBTdHJpbmdUcmFpdHM8
QXRvbWljU3RyaW5nPjo6ZnJvbVY4U3RyaW5nPHRydWU+KHY4OjpIYW5kbGU8djg6OlN0cmluZz4g
djhTdHJpbmcsIGludCBsZW5ndGgpCit7CisgICAgQVNTRVJUKHY4U3RyaW5nLT5MZW5ndGgoKSA9
PSBsZW5ndGgpOworICAgIHN0YXRpYyBjb25zdCBpbnQgaW5saW5lQnVmZmVyU2l6ZSA9IDMyOwor
ICAgIGlmIChsZW5ndGggPD0gaW5saW5lQnVmZmVyU2l6ZSkgeworICAgICAgICBMQ2hhciBpbmxp
bmVCdWZmZXJbaW5saW5lQnVmZmVyU2l6ZV07CisgICAgICAgIHY4U3RyaW5nLT5Xcml0ZUFzY2lp
KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGlubGluZUJ1ZmZlciksIDAsIGxlbmd0aCwgdjg6OlN0
cmluZzo6UFJFU0VSVkVfQVNDSUlfTlVMTCk7CisgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmco
aW5saW5lQnVmZmVyLCBsZW5ndGgpOworICAgIH0KKyAgICBMQ2hhciogYnVmZmVyOworICAgIFN0
cmluZyBzdHJpbmcgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIp
OworICAgIHY4U3RyaW5nLT5Xcml0ZUFzY2lpKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZl
ciksIDAsIGxlbmd0aCwgdjg6OlN0cmluZzo6UFJFU0VSVkVfQVNDSUlfTlVMTCk7CisgICAgcmV0
dXJuIEF0b21pY1N0cmluZyhzdHJpbmcpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdU
eXBlPgogU3RyaW5nVHlwZSB2OFN0cmluZ1RvV2ViQ29yZVN0cmluZyh2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IHY4U3RyaW5nLCBFeHRlcm5hbE1vZGUgZXh0ZXJuYWwpCiB7Ci0gICAgV2ViQ29yZVN0
cmluZ1Jlc291cmNlKiBzdHJpbmdSZXNvdXJjZSA9IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTo6dG9T
dHJpbmdSZXNvdXJjZSh2OFN0cmluZyk7Ci0gICAgaWYgKHN0cmluZ1Jlc291cmNlKQotICAgICAg
ICByZXR1cm4gU3RyaW5nVHJhaXRzPFN0cmluZ1R5cGU+Ojpmcm9tU3RyaW5nUmVzb3VyY2Uoc3Ry
aW5nUmVzb3VyY2UpOworICAgIHsKKyAgICAgICAgLy8gQSBsb3Qgb2YgV2ViQ29yZVN0cmluZ1Jl
c291cmNlQmFzZTo6dG9XZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlIGlzIGNvcGllZCBoZXJlIGJ5
IGhhbmQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCisgICAgICAgIC8vIFRoaXMgcG9ydGlvbiBv
ZiB0aGlzIGZ1bmN0aW9uIGlzIHZlcnkgaG90IGluIGNlcnRhaW4gRHJvbWVhbyBiZW5jaG1hcmtz
LgorICAgICAgICB2ODo6U3RyaW5nOjpFbmNvZGluZyBlbmNvZGluZzsKKyAgICAgICAgdjg6OlN0
cmluZzo6RXh0ZXJuYWxTdHJpbmdSZXNvdXJjZUJhc2UqIHJlc291cmNlID0gdjhTdHJpbmctPkdl
dEV4dGVybmFsU3RyaW5nUmVzb3VyY2VCYXNlKCZlbmNvZGluZyk7CisgICAgICAgIGlmIChMSUtF
TFkoISFyZXNvdXJjZSkpIHsKKyAgICAgICAgICAgIFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2Uq
IGJhc2U7CisgICAgICAgICAgICBpZiAoZW5jb2RpbmcgPT0gdjg6OlN0cmluZzo6QVNDSUlfRU5D
T0RJTkcpCisgICAgICAgICAgICAgICAgYmFzZSA9IHN0YXRpY19jYXN0PFdlYkNvcmVTdHJpbmdS
ZXNvdXJjZTgqPihyZXNvdXJjZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
YmFzZSA9IHN0YXRpY19jYXN0PFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2Kj4ocmVzb3VyY2UpOwor
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1RyYWl0czxTdHJpbmdUeXBlPjo6ZnJvbVN0cmluZ1Jl
c291cmNlKGJhc2UpOworICAgICAgICB9CisgICAgfQogCiAgICAgaW50IGxlbmd0aCA9IHY4U3Ry
aW5nLT5MZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKKyAgICBpZiAoVU5MSUtFTFkoIWxlbmd0
aCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoIiIpOwogCi0gICAgU3RyaW5nVHlwZSByZXN1bHQo
U3RyaW5nVHJhaXRzPFN0cmluZ1R5cGU+Ojpmcm9tVjhTdHJpbmcodjhTdHJpbmcsIGxlbmd0aCkp
OworICAgIGJvb2wgbm9uQXNjaWkgPSB2OFN0cmluZy0+TWF5Q29udGFpbk5vbkFzY2lpKCk7Cisg
ICAgU3RyaW5nVHlwZSByZXN1bHQobm9uQXNjaWkgPyBTdHJpbmdUcmFpdHM8U3RyaW5nVHlwZT46
OnRlbXBsYXRlIGZyb21WOFN0cmluZzxmYWxzZT4odjhTdHJpbmcsIGxlbmd0aCkgOiBTdHJpbmdU
cmFpdHM8U3RyaW5nVHlwZT46OnRlbXBsYXRlIGZyb21WOFN0cmluZzx0cnVlPih2OFN0cmluZywg
bGVuZ3RoKSk7CiAKLSAgICBpZiAoZXh0ZXJuYWwgPT0gRXh0ZXJuYWxpemUgJiYgdjhTdHJpbmct
PkNhbk1ha2VFeHRlcm5hbCgpKSB7Ci0gICAgICAgIHN0cmluZ1Jlc291cmNlID0gbmV3IFdlYkNv
cmVTdHJpbmdSZXNvdXJjZShyZXN1bHQpOwotICAgICAgICBpZiAoIXY4U3RyaW5nLT5NYWtlRXh0
ZXJuYWwoc3RyaW5nUmVzb3VyY2UpKSB7Ci0gICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGEgZmFp
bHVyZSBkZWxldGUgdGhlIGV4dGVybmFsIHJlc291cmNlIGFzIGl0IHdhcyBub3QgdXNlZC4KKyAg
ICBpZiAoZXh0ZXJuYWwgIT0gRXh0ZXJuYWxpemUgfHwgIXY4U3RyaW5nLT5DYW5NYWtlRXh0ZXJu
YWwoKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIGlmICghbm9uQXNjaWkgJiYgIVN0
cmluZ1RyYWl0czxTdHJpbmdUeXBlPjo6aXMxNkJpdEF0b21pY1N0cmluZyhyZXN1bHQpKSB7Cisg
ICAgICAgIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTgqIHN0cmluZ1Jlc291cmNlID0gbmV3IFdlYkNv
cmVTdHJpbmdSZXNvdXJjZTgocmVzdWx0KTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCF2OFN0cmlu
Zy0+TWFrZUV4dGVybmFsKHN0cmluZ1Jlc291cmNlKSkpCisgICAgICAgICAgICBkZWxldGUgc3Ry
aW5nUmVzb3VyY2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgV2ViQ29yZVN0cmluZ1Jlc291cmNl
MTYqIHN0cmluZ1Jlc291cmNlID0gbmV3IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2KHJlc3VsdCk7
CisgICAgICAgIGlmIChVTkxJS0VMWSghdjhTdHJpbmctPk1ha2VFeHRlcm5hbChzdHJpbmdSZXNv
dXJjZSkpKQogICAgICAgICAgICAgZGVsZXRlIHN0cmluZ1Jlc291cmNlOwotICAgICAgICB9CiAg
ICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhWYWx1ZUNhY2hlLmNwcAppbmRleCBiNWY5M2YzYTU1MDg1NWFkYjBkNjg0NzE0YzEzYzNkODY4
MWU0ZjQxLi4xMWMwOTA4YTFhNjdjZGVkMWUzMGUxOGMwZDI5OTExNGEyZmJkZDFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5jcHAKQEAgLTMzLDcgKzMzLDE1
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBt
YWtlRXh0ZXJuYWxTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgV2ViQ29yZVN0
cmluZ1Jlc291cmNlKiBzdHJpbmdSZXNvdXJjZSA9IG5ldyBXZWJDb3JlU3RyaW5nUmVzb3VyY2Uo
c3RyaW5nKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpICYmIHN0cmluZy5jb250YWluc09ubHlB
U0NJSSgpKSB7CisgICAgICAgIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTgqIHN0cmluZ1Jlc291cmNl
ID0gbmV3IFdlYkNvcmVTdHJpbmdSZXNvdXJjZTgoc3RyaW5nKTsKKyAgICAgICAgdjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5ld1N0cmluZyA9IHY4OjpTdHJpbmc6Ok5ld0V4dGVybmFsKHN0cmluZ1Jl
c291cmNlKTsKKyAgICAgICAgaWYgKG5ld1N0cmluZy5Jc0VtcHR5KCkpCisgICAgICAgICAgICBk
ZWxldGUgc3RyaW5nUmVzb3VyY2U7CisgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CisgICAgfQor
CisgICAgV2ViQ29yZVN0cmluZ1Jlc291cmNlMTYqIHN0cmluZ1Jlc291cmNlID0gbmV3IFdlYkNv
cmVTdHJpbmdSZXNvdXJjZTE2KHN0cmluZyk7CiAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5l
d1N0cmluZyA9IHY4OjpTdHJpbmc6Ok5ld0V4dGVybmFsKHN0cmluZ1Jlc291cmNlKTsKICAgICBp
ZiAobmV3U3RyaW5nLklzRW1wdHkoKSkKICAgICAgICAgZGVsZXRlIHN0cmluZ1Jlc291cmNlOwpA
QCAtOTMsNyArMTAxLDE4IEBAIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBTdHJpbmdDYWNoZTo6djhF
eHRlcm5hbFN0cmluZ1Nsb3coU3RyaW5nSW1wbCogc3RyaW5nSW1wbCwKICAgICByZXR1cm4gbmV3
U3RyaW5nOwogfQogCi12b2lkIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTo6dmlzaXRTdHJpbmdzKEV4
dGVybmFsU3RyaW5nVmlzaXRvciogdmlzaXRvcikKK1dlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2Uq
IFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2U6OnRvV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZSh2
ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHN0cmluZykKK3sKKyAgICB2ODo6U3RyaW5nOjpFbmNvZGlu
ZyBlbmNvZGluZzsKKyAgICB2ODo6U3RyaW5nOjpFeHRlcm5hbFN0cmluZ1Jlc291cmNlQmFzZSog
cmVzb3VyY2UgPSBzdHJpbmctPkdldEV4dGVybmFsU3RyaW5nUmVzb3VyY2VCYXNlKCZlbmNvZGlu
Zyk7CisgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGVuY29k
aW5nID09IHY4OjpTdHJpbmc6OkFTQ0lJX0VOQ09ESU5HKQorICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlOCo+KHJlc291cmNlKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlMTYqPihyZXNvdXJjZSk7Cit9CisKK3ZvaWQg
V2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZTo6dmlzaXRTdHJpbmdzKEV4dGVybmFsU3RyaW5nVmlz
aXRvciogdmlzaXRvcikKIHsKICAgICB2aXNpdG9yLT52aXNpdEpTRXh0ZXJuYWxTdHJpbmcobV9w
bGFpblN0cmluZy5pbXBsKCkpOwogICAgIGlmIChtX3BsYWluU3RyaW5nLmltcGwoKSAhPSBtX2F0
b21pY1N0cmluZy5pbXBsKCkgJiYgIW1fYXRvbWljU3RyaW5nLmlzTnVsbCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuaAppbmRleCA2NzFmNjhkZDQyY2E0MDMxZWNj
YWVkY2ZkMzM4ZDM3YjcwOTkzNTZiLi5jMjhkNTQyM2EyMGE4N2U5ODU3NDJkNjIyMTkwZmZkYTQ2
NDViMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuaApAQCAt
NzIsMTkgKzcyLDIxIEBAIGNvbnN0IGludCBudW1iZXJPZkNhY2hlZFNtYWxsSW50ZWdlcnMgPSA2
NDsKIAogLy8gV2ViQ29yZVN0cmluZ1Jlc291cmNlIGlzIGEgaGVscGVyIGNsYXNzIGZvciB2OEV4
dGVybmFsU3RyaW5nLiBJdCBpcyB1c2VkCiAvLyB0byBtYW5hZ2UgdGhlIGxpZmUtY3ljbGUgb2Yg
dGhlIHVuZGVybHlpbmcgYnVmZmVyIG9mIHRoZSBleHRlcm5hbCBzdHJpbmcuCi1jbGFzcyBXZWJD
b3JlU3RyaW5nUmVzb3VyY2UgOiBwdWJsaWMgdjg6OlN0cmluZzo6RXh0ZXJuYWxTdHJpbmdSZXNv
dXJjZSB7CitjbGFzcyBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlIHsKIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAg
c3RhdGljIFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UqIHRvV2ViQ29yZVN0cmluZ1Jlc291cmNl
QmFzZSh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+KTsKKworICAgIGV4cGxpY2l0IFdlYkNvcmVTdHJp
bmdSZXNvdXJjZUJhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIDogbV9wbGFpblN0
cmluZyhzdHJpbmcpCiAgICAgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV90aHJlYWRJZCA9
IFdURjo6Y3VycmVudFRocmVhZCgpOwogI2VuZGlmCiAgICAgICAgIEFTU0VSVCghc3RyaW5nLmlz
TnVsbCgpKTsKLSAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxsb2NhdGVk
TWVtb3J5KDIgKiBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICB2ODo6Vjg6OkFkanVzdEFtb3Vu
dE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkobWVtb3J5Q29uc3VtcHRpb24oc3RyaW5nKSk7CiAg
ICAgfQogCi0gICAgZXhwbGljaXQgV2ViQ29yZVN0cmluZ1Jlc291cmNlKGNvbnN0IEF0b21pY1N0
cmluZyYgc3RyaW5nKQorICAgIGV4cGxpY2l0IFdlYkNvcmVTdHJpbmdSZXNvdXJjZUJhc2UoY29u
c3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIDogbV9wbGFpblN0cmluZyhzdHJpbmcu
c3RyaW5nKCkpCiAgICAgICAgICwgbV9hdG9taWNTdHJpbmcoc3RyaW5nKQogICAgIHsKQEAgLTky
LDI3ICs5NCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGhyZWFkSWQgPSBXVEY6OmN1cnJlbnRU
aHJlYWQoKTsKICNlbmRpZgogICAgICAgICBBU1NFUlQoIXN0cmluZy5pc051bGwoKSk7Ci0gICAg
ICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSgyICogc3Ry
aW5nLmxlbmd0aCgpKTsKKyAgICAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxs
b2NhdGVkTWVtb3J5KG1lbW9yeUNvbnN1bXB0aW9uKHN0cmluZykpOwogICAgIH0KIAotICAgIHZp
cnR1YWwgfldlYkNvcmVTdHJpbmdSZXNvdXJjZSgpCisgICAgdmlydHVhbCB+V2ViQ29yZVN0cmlu
Z1Jlc291cmNlQmFzZSgpCiAgICAgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKG1f
dGhyZWFkSWQgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpOwogI2VuZGlmCi0gICAgICAgIGludCBy
ZWR1Y2VkRXh0ZXJuYWxNZW1vcnkgPSAtMiAqIG1fcGxhaW5TdHJpbmcubGVuZ3RoKCk7CisgICAg
ICAgIGludCByZWR1Y2VkRXh0ZXJuYWxNZW1vcnkgPSAtbWVtb3J5Q29uc3VtcHRpb24obV9wbGFp
blN0cmluZyk7CiAgICAgICAgIGlmIChtX3BsYWluU3RyaW5nLmltcGwoKSAhPSBtX2F0b21pY1N0
cmluZy5pbXBsKCkgJiYgIW1fYXRvbWljU3RyaW5nLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVk
dWNlZEV4dGVybmFsTWVtb3J5ICo9IDI7CisgICAgICAgICAgICByZWR1Y2VkRXh0ZXJuYWxNZW1v
cnkgLT0gbWVtb3J5Q29uc3VtcHRpb24obV9hdG9taWNTdHJpbmcuc3RyaW5nKCkpOwogICAgICAg
ICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkocmVkdWNlZEV4
dGVybmFsTWVtb3J5KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IHVpbnQxNl90KiBkYXRh
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQxNl90Kj4obV9wbGFpblN0cmluZy5pbXBsKCktPmNoYXJhY3RlcnMoKSk7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9wbGFpblN0cmluZy5p
bXBsKCktPmxlbmd0aCgpOyB9Ci0KICAgICBjb25zdCBTdHJpbmcmIHdlYmNvcmVTdHJpbmcoKSB7
IHJldHVybiBtX3BsYWluU3RyaW5nOyB9CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF0b21p
Y1N0cmluZygpCkBAIC0xMjQsMTkgKzExOSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2F0
b21pY1N0cmluZyA9IEF0b21pY1N0cmluZyhtX3BsYWluU3RyaW5nKTsKICAgICAgICAgICAgIEFT
U0VSVCghbV9hdG9taWNTdHJpbmcuaXNOdWxsKCkpOwogICAgICAgICAgICAgaWYgKG1fcGxhaW5T
dHJpbmcuaW1wbCgpICE9IG1fYXRvbWljU3RyaW5nLmltcGwoKSkKLSAgICAgICAgICAgICAgICB2
ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkoMiAqIG1fYXRvbWlj
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9m
RXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkobWVtb3J5Q29uc3VtcHRpb24obV9hdG9taWNTdHJpbmcu
c3RyaW5nKCkpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9hdG9taWNTdHJpbmc7CiAg
ICAgfQogCiAgICAgdm9pZCB2aXNpdFN0cmluZ3MoRXh0ZXJuYWxTdHJpbmdWaXNpdG9yKik7CiAK
LSAgICBzdGF0aWMgV2ViQ29yZVN0cmluZ1Jlc291cmNlKiB0b1N0cmluZ1Jlc291cmNlKHY4OjpI
YW5kbGU8djg6OlN0cmluZz4gdjhTdHJpbmcpCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViQ29yZVN0cmluZ1Jlc291cmNlKj4odjhTdHJpbmctPkdldEV4dGVybmFsU3RyaW5n
UmVzb3VyY2UoKSk7Ci0gICAgfQotCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIC8vIEEgc2hh
bGxvdyBjb3B5IG9mIHRoZSBzdHJpbmcuIEtlZXBzIHRoZSBzdHJpbmcgYnVmZmVyIGFsaXZlIHVu
dGlsIHRoZSBWOCBlbmdpbmUgZ2FyYmFnZSBjb2xsZWN0cyBpdC4KICAgICBTdHJpbmcgbV9wbGFp
blN0cmluZzsKICAgICAvLyBJZiB0aGlzIHN0cmluZyBpcyBhdG9taWMgb3IgaGFzIGJlZW4gbWFk
ZSBhdG9taWMgZWFybGllciB0aGUKQEAgLTE0NiwxMSArMTM2LDQwIEBAIHByaXZhdGU6CiAgICAg
Ly8gaW50byB0aGF0IHN0cmluZy4KICAgICBBdG9taWNTdHJpbmcgbV9hdG9taWNTdHJpbmc7CiAK
K3ByaXZhdGU6CisgICAgc3RhdGljIGludCBtZW1vcnlDb25zdW1wdGlvbihjb25zdCBTdHJpbmcm
IHN0cmluZykKKyAgICB7CisgICAgICAgIHJldHVybiBzdHJpbmcubGVuZ3RoKCkgKiAoc3RyaW5n
LmlzOEJpdCgpID8gc2l6ZW9mKExDaGFyKSA6IHNpemVvZihVQ2hhcikpOworICAgIH0KICNpZm5k
ZWYgTkRFQlVHCiAgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSWQ7CiAjZW5kaWYK
IH07CiAKK2NsYXNzIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTE2IDogcHVibGljIFdlYkNvcmVTdHJp
bmdSZXNvdXJjZUJhc2UsIHB1YmxpYyB2ODo6U3RyaW5nOjpFeHRlcm5hbFN0cmluZ1Jlc291cmNl
IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2UxNihjb25zdCBT
dHJpbmcmIHN0cmluZykgOiBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKHN0cmluZykgeyB9Cisg
ICAgZXhwbGljaXQgV2ViQ29yZVN0cmluZ1Jlc291cmNlMTYoY29uc3QgQXRvbWljU3RyaW5nJiBz
dHJpbmcpIDogV2ViQ29yZVN0cmluZ1Jlc291cmNlQmFzZShzdHJpbmcpIHsgfQorCisgICAgdmly
dHVhbCBzaXplX3QgbGVuZ3RoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9wbGFpblN0cmlu
Zy5pbXBsKCktPmxlbmd0aCgpOyB9CisgICAgdmlydHVhbCBjb25zdCB1aW50MTZfdCogZGF0YSgp
IGNvbnN0IE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50MTZfdCo+KG1fcGxhaW5TdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzKCkpOworICAg
IH0KK307CisKK2NsYXNzIFdlYkNvcmVTdHJpbmdSZXNvdXJjZTggOiBwdWJsaWMgV2ViQ29yZVN0
cmluZ1Jlc291cmNlQmFzZSwgcHVibGljIHY4OjpTdHJpbmc6OkV4dGVybmFsQXNjaWlTdHJpbmdS
ZXNvdXJjZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViQ29yZVN0cmluZ1Jlc291cmNlOChj
b25zdCBTdHJpbmcmIHN0cmluZykgOiBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKHN0cmluZykg
eyB9CisgICAgZXhwbGljaXQgV2ViQ29yZVN0cmluZ1Jlc291cmNlOChjb25zdCBBdG9taWNTdHJp
bmcmIHN0cmluZykgOiBXZWJDb3JlU3RyaW5nUmVzb3VyY2VCYXNlKHN0cmluZykgeyB9CisKKyAg
ICB2aXJ0dWFsIHNpemVfdCBsZW5ndGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3BsYWlu
U3RyaW5nLmltcGwoKS0+bGVuZ3RoKCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGRhdGEo
KSBjb25zdCBPVkVSUklERQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KG1fcGxhaW5TdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzOCgpKTsKKyAgICB9
Cit9OworCiBjbGFzcyBJbnRlZ2VyQ2FjaGUgewogcHVibGljOgogICAgICBJbnRlZ2VyQ2FjaGUo
KSA6IG1faW5pdGlhbGl6ZWQoZmFsc2UpIHsgfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>