<?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>137374</bug_id>
          
          <creation_ts>2014-10-02 18:08:19 -0700</creation_ts>
          <short_desc>Support insert iterators for Vectors. [Part 1]</short_desc>
          <delta_ts>2016-09-17 07:05:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>137419</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1039080</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-02 18:08:19 -0700</bug_when>
    <thetext>Support insert iterators for Vectors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039116</commentid>
    <comment_count>1</comment_count>
      <attachid>239176</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-02 21:20:39 -0700</bug_when>
    <thetext>Created attachment 239176
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039117</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-02 21:22:40 -0700</bug_when>
    <thetext>Attachment 239176 did not pass style-queue:


ERROR: Source/WTF/wtf/VectorIterators.h:40:  difference_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/VectorIterators.h:43:  iterator_category is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/VectorIterators.h:74:  difference_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/VectorIterators.h:77:  iterator_category is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 4 in 3 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>1039256</commentid>
    <comment_count>3</comment_count>
      <attachid>239176</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-10-03 10:46:20 -0700</bug_when>
    <thetext>Comment on attachment 239176
Patch

We should add unit tests for this functionality. You can see examples of unit tests in Tools/TestWebKitAPI/Tests. In particular, we have WTF-specific unit tests in Tools/TestWebKitAPI/Tests/WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039257</commentid>
    <comment_count>4</comment_count>
      <attachid>239213</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-03 10:51:35 -0700</bug_when>
    <thetext>Created attachment 239213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039258</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-03 10:52:07 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 239176 [details])
&gt; We should add unit tests for this functionality. You can see examples of unit tests in Tools/TestWebKitAPI/Tests. In particular, we have WTF-specific unit tests in Tools/TestWebKitAPI/Tests/WTF.

Oh I wrote them; but somehow managed to upload a patch without them. :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039259</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-10-03 10:52:28 -0700</bug_when>
    <thetext>We need to add file VectorIterators.h to the Windows and CMake build systems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039260</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-03 10:52:42 -0700</bug_when>
    <thetext>Attachment 239213 did not pass style-queue:


ERROR: Source/WTF/wtf/VectorIterators.h:40:  difference_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/VectorIterators.h:43:  iterator_category is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/VectorIterators.h:74:  difference_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/VectorIterators.h:77:  iterator_category is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 4 in 5 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>1039266</commentid>
    <comment_count>8</comment_count>
      <attachid>239214</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-03 10:59:02 -0700</bug_when>
    <thetext>Created attachment 239214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039268</commentid>
    <comment_count>9</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-10-03 10:59:48 -0700</bug_when>
    <thetext>Why can&apos;t we use std::back_insert_iterator? 

http://en.cppreference.com/w/cpp/iterator/back_insert_iterator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039269</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-03 11:01:31 -0700</bug_when>
    <thetext>Attachment 239214 did not pass style-queue:


ERROR: Source/WTF/wtf/VectorIterators.h:40:  difference_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/VectorIterators.h:43:  iterator_category is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/VectorIterators.h:74:  difference_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/VectorIterators.h:77:  iterator_category is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 4 in 5 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>1039270</commentid>
    <comment_count>11</comment_count>
      <attachid>239215</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-03 11:01:52 -0700</bug_when>
    <thetext>Created attachment 239215
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039272</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-03 11:04:23 -0700</bug_when>
    <thetext>Attachment 239215 did not pass style-queue:


ERROR: Source/WTF/wtf/VectorIterators.h:40:  difference_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/VectorIterators.h:43:  iterator_category is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/VectorIterators.h:74:  difference_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/VectorIterators.h:77:  iterator_category is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 4 in 7 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>1039273</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-03 11:04:57 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Why can&apos;t we use std::back_insert_iterator? 
&gt; 
&gt; http://en.cppreference.com/w/cpp/iterator/back_insert_iterator

Because Vector doesn&apos;t have a push_back().  Its iterator types also don&apos;t have the std standard typedefs, like value_type, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039280</commentid>
    <comment_count>14</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-10-03 11:35:52 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #9)
&gt; &gt; Why can&apos;t we use std::back_insert_iterator? 
&gt; &gt; 
&gt; &gt; http://en.cppreference.com/w/cpp/iterator/back_insert_iterator
&gt; 
&gt; Because Vector doesn&apos;t have a push_back().  Its iterator types also don&apos;t have the std standard typedefs, like value_type, etc.

I think it&apos;s much better to make our containers play well with the STL than it is to replicate STL functionality. (Our transition from OwnPtr to std::unique_ptr is an example of this).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039298</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-03 12:41:09 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; Why can&apos;t we use std::back_insert_iterator? 
&gt; &gt; &gt; 
&gt; &gt; &gt; http://en.cppreference.com/w/cpp/iterator/back_insert_iterator
&gt; &gt; 
&gt; &gt; Because Vector doesn&apos;t have a push_back().  Its iterator types also don&apos;t have the std standard typedefs, like value_type, etc.
&gt; 
&gt; I think it&apos;s much better to make our containers play well with the STL than it is to replicate STL functionality. (Our transition from OwnPtr to std::unique_ptr is an example of this).

I’m with Anders on this. Seems like a natural refinement to improve the Vector iterators, add push_back, and then use back_insert_iterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039300</commentid>
    <comment_count>16</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-03 12:56:27 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; &gt; Why can&apos;t we use std::back_insert_iterator? 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; http://en.cppreference.com/w/cpp/iterator/back_insert_iterator
&gt; &gt; &gt; 
&gt; &gt; &gt; Because Vector doesn&apos;t have a push_back().  Its iterator types also don&apos;t have the std standard typedefs, like value_type, etc.
&gt; &gt; 
&gt; &gt; I think it&apos;s much better to make our containers play well with the STL than it is to replicate STL functionality. (Our transition from OwnPtr to std::unique_ptr is an example of this).
&gt; 
&gt; I’m with Anders on this. Seems like a natural refinement to improve the Vector iterators, add push_back, and then use back_insert_iterator.

Okay, that&apos;s fine.  And back_insert_iterator was actually my primary use-case anyway.

But for insert_iterator, the default STL implementation won&apos;t work, as Vector invalidates all outstanding iterators when it does a re-alloc.  The version I posted here works around this by resetting the internal iterator in that scenario, so it may still be useful as a template specification version of std::insert_Iterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039447</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-03 21:38:59 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; But for insert_iterator, the default STL implementation won&apos;t work, as Vector invalidates all outstanding iterators when it does a re-alloc.

How does insert_iterator work with std::vector? If the answer is that it doesn’t then we should consider whether we have a good reason that we want WTF::Vector to work with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039449</commentid>
    <comment_count>18</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-03 21:59:57 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; But for insert_iterator, the default STL implementation won&apos;t work, as Vector invalidates all outstanding iterators when it does a re-alloc.
&gt; 
&gt; How does insert_iterator work with std::vector? If the answer is that it doesn’t then we should consider whether we have a good reason that we want WTF::Vector to work with it.

std::vector has the same problem, in that all iterators are invalidated in the event of a re-alloc. The way you&apos;d make a insert_iterator work with std::vector is the same as with WTF::Vector: by increasing the container&apos;s capacity with reserve()/reserveCapacity() before the insert operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039460</commentid>
    <comment_count>19</comment_count>
      <attachid>239267</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-03 22:54:37 -0700</bug_when>
    <thetext>Created attachment 239267
Patch

Trying the alternative approach of making Vector compatible with back_insert_iterator and insert_iterator. This requires Vector to have an insert(iterator, value) method, which causes compile-time errors due to an ambiguity between insert(iterator, value) and insert(size_t, value) when passing in a literal (e.g., 0). So Part 1 is to rename insert(size_t, value) to insertAt(size_t, value), and Part 2 will be adding a new insert(iterator, value) method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221915</commentid>
    <comment_count>20</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-08-22 11:23:56 -0700</bug_when>
    <thetext>Was this abandoned? Should we be getting it up-to-date and landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230805</commentid>
    <comment_count>21</comment_count>
      <attachid>239267</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-09-17 07:05:35 -0700</bug_when>
    <thetext>Comment on attachment 239267
Patch

Hi,

Apologies that your patch was not reviewed in a timely manner. Since it&apos;s now quite old, I am removing it from the review request queue. Please consider rebasing it on trunk and resubmitting.

To increase the chances of getting a review, consider using &apos;Tools/Scripts/webkit-patch upload --suggest-reviewers&apos; to CC reviewers who might be interested in this bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239176</attachid>
            <date>2014-10-02 21:20:39 -0700</date>
            <delta_ts>2014-10-03 10:51:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137374-20141002212041.patch</filename>
            <type>text/plain</type>
            <size>9662</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM0ZWNmODZhMGQyNmI1MWMyZTVjNjNj
NDIzODQwNTAyNzJjNGQzYTMuLmJmZWM0MDg4MjFlNGU1ZDA0OGJjODJkOTE4NTg0YmFjYjQ4MWI4
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTQtMTAtMDIgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBpbnNlcnQgaXRlcmF0b3JzIGZvciBWZWN0
b3JzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
Mzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8g
YmUgYWJsZSB0byB1c2Ugc3RkIGFsZ29yaXRobXMgd2hpY2ggcmVxdWlyZSBhbiBpbnNlcnQgaXRl
cmF0b3IsIGFkZCBpbnNlcnQgaXRlcmF0b3JzIGZvcgorICAgICAgICBWZWN0b3Igb2JqZWN0cy4g
QWRkIGNvbnZlbmllbmNlIGNyZWF0aW9uIGZ1bmN0aW9ucyBmb3IgVmVjdG9yQmFja0luc2VydEl0
ZXJhdG9yIGFuZAorICAgICAgICBWZWN0b3JJbnNlcnRJdGVyYXRvciB0byBhbGxvdyB0ZW1wbGF0
ZSB0eXBlIGRlZHVjdGlvbiB0byB3b3JrIHdpdGhvdXQgZXhwbGljaXQgdGVtcGxhdGUKKyAgICAg
ICAgcGFyYW1ldGVycy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHd0Zi9WZWN0b3JJdGVyYXRvcnMuaDogQWRkZWQuCisgICAgICAgIChXVEY6
OlZlY3RvckJhY2tJbnNlcnRJdGVyYXRvcjo6VmVjdG9yQmFja0luc2VydEl0ZXJhdG9yKToKKyAg
ICAgICAgKFdURjo6VmVjdG9yQmFja0luc2VydEl0ZXJhdG9yOjpvcGVyYXRvcj0pOiBJbnNlcnQg
YSB2YWx1ZSBpbnRvIHRoZSBhc3NvY2lhdGVkIHZlY3RvciwgcmVzZXR0aW5nCisgICAgICAgICAg
ICBtX2l0ZXIgYXMgbWVtb3J5IGxheW91dCBtYXkgaGF2ZSBjaGFuZ2VkLgorICAgICAgICAoV1RG
OjpWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3I6Om9wZXJhdG9yKik6IFJldHVybiAqdGhpczsKKyAg
ICAgICAgKFdURjo6VmVjdG9yQmFja0luc2VydEl0ZXJhdG9yOjpvcGVyYXRvcisrKTogTm8tb3Au
CisgICAgICAgIChXVEY6OnZlY3RvckJhY2tJbnNlcnRlcik6IENvbnZlbmllbmNlIGNyZWF0aW9u
IGZ1bmN0aW9uLgorICAgICAgICAoV1RGOjpWZWN0b3JJbnNlcnRJdGVyYXRvcjo6VmVjdG9ySW5z
ZXJ0SXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpWZWN0b3JJbnNlcnRJdGVyYXRvcjo6b3BlcmF0
b3I9KTogQXBwZW5kIGEgdmFsdWUgdG8gdGhlIGFzc29jaWF0ZWQgdmVjdG9yLgorICAgICAgICAo
V1RGOjpWZWN0b3JJbnNlcnRJdGVyYXRvcjo6b3BlcmF0b3IqKTogUmV0dXJuICp0aGlzLgorICAg
ICAgICAoV1RGOjpWZWN0b3JJbnNlcnRJdGVyYXRvcjo6b3BlcmF0b3IrKyk6IE5vLW9wLgorICAg
ICAgICAoV1RGOjp2ZWN0b3JJbnNlcnRlcik6IENvbnZlbmllbmNlIGNyZWF0aW9uIGZ1bmN0aW9u
LgorCiAyMDE0LTEwLTAyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDbGVhbiB1cDogTW92ZSBYUEMgZm9yd2FyZCBkZWNsYXJhdGlvbnMgaW4gSmF2YVNjcmlw
dENvcmUgdG8gV1RGIFNQSSB3cmFwcGVyIGhlYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZDZjYmQ3MTEzOTExYTM5ZTFkYjAxYzVhZGUzY2VkZGFmY2Nj
Njk5OC4uMWVmOWY4ODgyM2UxYjUwZDE2NmMxZDk5Mjk3MGU4M2E3M2MxYTA0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzYsNiArMjc2LDcgQEAKIAkJ
Q0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8q
IE1lZGlhVGltZS5oICovOyB9OwogCQlDRTQ2NTE2RTE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBU
YWJsZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0U0NjUxNkQxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLzsgfTsKIAkJQ0U3
M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQ
SS5oICovOyB9OworCQlDREJFQUVBRjE5REE2OERGMDBCRUJBODggLyogVmVjdG9ySXRlcmF0b3Jz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREJFQUVB
RTE5REE2OERGMDBCRUJBODggLyogVmVjdG9ySXRlcmF0b3JzLmggKi87IH07CiAJCUUxNTU1NkY1
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTU1NkYzMThBMENDMTgwMDZG
NDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLzsgfTsKIAkJRTE1NTU2RjYxOEEw
Q0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTU1NkY0MThBMENDMTgwMDZGNDhGQiAv
KiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi87IH07CiAJCUVCOTVFMUYwMTYxQTcyNDEwMDg5
QTJGNSAvKiBCeXRlT3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEVCOTVFMUVGMTYxQTcyNDEwMDg5QTJGNSAvKiBCeXRlT3JkZXIuaCAqLzsgfTsK
QEAgLTU2OCw2ICs1NjksNyBAQAogCQlDRDU0OTdBQjE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFU
aW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVGltZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTQ2NTE2RDE5REIxRkI0MDAzRUNBMDUgLyogTlNN
YXBUYWJsZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU01hcFRhYmxl
U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNzNFMDI0MTlEQ0I3QUIwMDU4
MEQ1QyAvKiBYUENTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDU1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQkVBRUFFMTlEQTY4REYwMEJFQkE4
OCAvKiBWZWN0b3JJdGVyYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmVjdG9ySXRlcmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkYz
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyog
Q3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUVCOTVFMUVGMTYxQTcyNDEwMDg5QTJGNSAvKiBCeXRlT3JkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnl0ZU9yZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC04ODIsNiArODg0LDcgQEAKIAkJCQlBOEE0NzM1QzE1MUE4MjVCMDA0MTIzRkYgLyogVW5p
b25GaW5kLmggKi8sCiAJCQkJQThBNDczNkYxNTFBODI1QjAwNDEyM0ZGIC8qIFZhbHVlQ2hlY2su
aCAqLywKIAkJCQlBOEE0NzM3MDE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yLmggKi8sCisJCQkJ
Q0RCRUFFQUUxOURBNjhERjAwQkVCQTg4IC8qIFZlY3Rvckl0ZXJhdG9ycy5oICovLAogCQkJCUE4
QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3JUcmFpdHMuaCAqLywKIAkJCQlBOEE0NzM3
MjE1MUE4MjVCMDA0MTIzRkYgLyogVk1UYWdzLmggKi8sCiAJCQkJOTc0Q0ZDOEQxNkE0RjMyNzAw
NkQ1NDA0IC8qIFdlYWtQdHIuaCAqLywKQEAgLTExNDIsNiArMTE0NSw3IEBACiAJCQkJQTg3NkRC
RDgxNTE4MTZFNTAwREFEQjk1IC8qIFBsYXRmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzQwRjE1MUE4MjVCMDA0MTIzRkYgLyogUG9zc2libHlOdWxsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkIxNEUxOTE4MEZBMjE4MDA5QjZCNEQgLyogQmFnLmggaW4gSGVhZGVycyAqLywKKwkJCQlD
REJFQUVBRjE5REE2OERGMDBCRUJBODggLyogVmVjdG9ySXRlcmF0b3JzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjlEMzM2MzE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQzQ0ODgzMTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0M0Y2MTIwMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvckl0ZXJhdG9ycy5o
IGIvU291cmNlL1dURi93dGYvVmVjdG9ySXRlcmF0b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmIzMTYzZWY1
YTRjOTMzYjg2MzY2MTExY2JkZDI3ZThkOTY3NjFlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1ZlY3Rvckl0ZXJhdG9ycy5oCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXVEZfVmVjdG9ySXRlcmF0b3JzX2gKKyNkZWZpbmUgV1RGX1ZlY3Rvckl0ZXJh
dG9yc19oCisKKyNpbmNsdWRlIDxpdGVyYXRvcj4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFZlY3RvclR5cGUsIHR5cGVuYW1lIFQ+IGNsYXNzIFZlY3RvckJhY2tJbnNl
cnRJdGVyYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGUsIHR5cGVuYW1lIFQ+IGNs
YXNzIFZlY3Rvckluc2VydEl0ZXJhdG9yOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBl
LCB0eXBlbmFtZSBUID0gdHlwZW5hbWUgVmVjdG9yVHlwZTo6VmFsdWVUeXBlPgorY2xhc3MgVmVj
dG9yQmFja0luc2VydEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFQgdmFsdWVfdHlw
ZTsKKyAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CisgICAgdHlwZWRlZiBU
KiBwb2ludGVyOworICAgIHR5cGVkZWYgVCYgcmVmZXJlbmNlOworICAgIHR5cGVkZWYgc3RkOjpv
dXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OworCisgICAgVmVjdG9yQmFja0lu
c2VydEl0ZXJhdG9yKFZlY3RvclR5cGUmIHZlY3RvcikKKyAgICAgICAgOiBtX3ZlY3Rvcih2ZWN0
b3IpCisgICAgeworICAgIH0KKworICAgIFZlY3RvckJhY2tJbnNlcnRJdGVyYXRvciYgb3BlcmF0
b3I9KGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV92ZWN0b3IuYXBwZW5kKHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFZlY3RvckJhY2tJbnNlcnRJ
dGVyYXRvciYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICBWZWN0b3JCYWNrSW5z
ZXJ0SXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQorICAgIFZlY3RvckJh
Y2tJbnNlcnRJdGVyYXRvciYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuICp0aGlzOyB9CisKK3By
aXZhdGU6CisgICAgVmVjdG9yVHlwZSYgbV92ZWN0b3I7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBWZWN0b3JUeXBlLCB0eXBlbmFtZSBUID0gdHlwZW5hbWUgVmVjdG9yVHlwZTo6VmFsdWVUeXBl
PgoraW5saW5lIFZlY3RvckJhY2tJbnNlcnRJdGVyYXRvcjxWZWN0b3JUeXBlLCBUPiB2ZWN0b3JC
YWNrSW5zZXJ0ZXIoVmVjdG9yVHlwZSYgdmVjdG9yKQoreworICAgIHJldHVybiBWZWN0b3JCYWNr
SW5zZXJ0SXRlcmF0b3I8VmVjdG9yVHlwZSwgVD4odmVjdG9yKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUgVCA9IHR5cGVuYW1lIFZlY3RvclR5cGU6OlZhbHVl
VHlwZT4KK2NsYXNzIFZlY3Rvckluc2VydEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IFQgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Cisg
ICAgdHlwZWRlZiBUKiBwb2ludGVyOworICAgIHR5cGVkZWYgVCYgcmVmZXJlbmNlOworICAgIHR5
cGVkZWYgc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OworCisgICAg
VmVjdG9ySW5zZXJ0SXRlcmF0b3IoVmVjdG9yVHlwZSYgdmVjdG9yLCB0eXBlbmFtZSBWZWN0b3JU
eXBlOjppdGVyYXRvciBpdGVyKQorICAgICAgICA6IG1fdmVjdG9yKCZ2ZWN0b3IpCisgICAgICAg
ICwgbV9pdGVyKGl0ZXIpCisgICAgeworICAgIH0KKworICAgIFZlY3Rvckluc2VydEl0ZXJhdG9y
JiBvcGVyYXRvcj0oY29uc3QgVCYgdmFsdWUpCisgICAgeworICAgICAgICBzaXplX3QgaW5kZXgg
PSBtX2l0ZXIgLSBtX3ZlY3Rvci0+YmVnaW4oKTsKKyAgICAgICAgbV92ZWN0b3ItPmluc2VydChp
bmRleCwgdmFsdWUpOworICAgICAgICBtX2l0ZXIgPSBtX3ZlY3Rvci0+YmVnaW4oKSArIGluZGV4
OworICAgICAgICArK21faXRlcjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAg
IFZlY3Rvckluc2VydEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgVmVjdG9ySW5zZXJ0SXRlcmF0
b3I8VmVjdG9yVHlwZSwgVD4mIG90aGVyKQorICAgIHsKKyAgICAgICAgbV92ZWN0b3IgPSBvdGhl
ci5tX3ZlY3RvcjsKKyAgICAgICAgbV9pdGVyID0gb3RoZXIubV9pdGVyOworICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgfQorCisgICAgVmVjdG9ySW5zZXJ0SXRlcmF0b3ImIG9wZXJhdG9yKigp
IHsgcmV0dXJuICp0aGlzOyB9CisgICAgVmVjdG9ySW5zZXJ0SXRlcmF0b3ImIG9wZXJhdG9yKyso
KSB7IHJldHVybiAqdGhpczsgfQorICAgIFZlY3Rvckluc2VydEl0ZXJhdG9yJiBvcGVyYXRvcisr
KGludCkgeyByZXR1cm4gKnRoaXM7IH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3JUeXBlKiBtX3Zl
Y3RvcjsKKyAgICB0eXBlbmFtZSBWZWN0b3JUeXBlOjppdGVyYXRvciBtX2l0ZXI7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlLCB0eXBlbmFtZSBUID0gdHlwZW5hbWUgVmVjdG9y
VHlwZTo6VmFsdWVUeXBlPgoraW5saW5lIFZlY3Rvckluc2VydEl0ZXJhdG9yPFZlY3RvclR5cGUs
IFQ+IHZlY3Rvckluc2VydGVyKFZlY3RvclR5cGUmIHZlY3RvciwgdHlwZW5hbWUgVmVjdG9yVHlw
ZTo6aXRlcmF0b3IgaXRlcikKK3sKKyAgICByZXR1cm4gVmVjdG9ySW5zZXJ0SXRlcmF0b3I8VmVj
dG9yVHlwZSwgVD4odmVjdG9yLCBpdGVyKTsKK30KKworfQorCit1c2luZyBXVEY6OlZlY3RvckJh
Y2tJbnNlcnRJdGVyYXRvcjsKK3VzaW5nIFdURjo6dmVjdG9yQmFja0luc2VydGVyOwordXNpbmcg
V1RGOjpWZWN0b3JJbnNlcnRJdGVyYXRvcjsKK3VzaW5nIFdURjo6dmVjdG9ySW5zZXJ0ZXI7CisK
KyNlbmRpZiAvLyBWZWN0b3JJdGVyYXRvcnNfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239213</attachid>
            <date>2014-10-03 10:51:35 -0700</date>
            <delta_ts>2014-10-03 10:58:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137374-20141003105138.patch</filename>
            <type>text/plain</type>
            <size>11651</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM0ZWNmODZhMGQyNmI1MWMyZTVjNjNj
NDIzODQwNTAyNzJjNGQzYTMuLmJmZWM0MDg4MjFlNGU1ZDA0OGJjODJkOTE4NTg0YmFjYjQ4MWI4
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTQtMTAtMDIgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBpbnNlcnQgaXRlcmF0b3JzIGZvciBWZWN0
b3JzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
Mzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8g
YmUgYWJsZSB0byB1c2Ugc3RkIGFsZ29yaXRobXMgd2hpY2ggcmVxdWlyZSBhbiBpbnNlcnQgaXRl
cmF0b3IsIGFkZCBpbnNlcnQgaXRlcmF0b3JzIGZvcgorICAgICAgICBWZWN0b3Igb2JqZWN0cy4g
QWRkIGNvbnZlbmllbmNlIGNyZWF0aW9uIGZ1bmN0aW9ucyBmb3IgVmVjdG9yQmFja0luc2VydEl0
ZXJhdG9yIGFuZAorICAgICAgICBWZWN0b3JJbnNlcnRJdGVyYXRvciB0byBhbGxvdyB0ZW1wbGF0
ZSB0eXBlIGRlZHVjdGlvbiB0byB3b3JrIHdpdGhvdXQgZXhwbGljaXQgdGVtcGxhdGUKKyAgICAg
ICAgcGFyYW1ldGVycy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHd0Zi9WZWN0b3JJdGVyYXRvcnMuaDogQWRkZWQuCisgICAgICAgIChXVEY6
OlZlY3RvckJhY2tJbnNlcnRJdGVyYXRvcjo6VmVjdG9yQmFja0luc2VydEl0ZXJhdG9yKToKKyAg
ICAgICAgKFdURjo6VmVjdG9yQmFja0luc2VydEl0ZXJhdG9yOjpvcGVyYXRvcj0pOiBJbnNlcnQg
YSB2YWx1ZSBpbnRvIHRoZSBhc3NvY2lhdGVkIHZlY3RvciwgcmVzZXR0aW5nCisgICAgICAgICAg
ICBtX2l0ZXIgYXMgbWVtb3J5IGxheW91dCBtYXkgaGF2ZSBjaGFuZ2VkLgorICAgICAgICAoV1RG
OjpWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3I6Om9wZXJhdG9yKik6IFJldHVybiAqdGhpczsKKyAg
ICAgICAgKFdURjo6VmVjdG9yQmFja0luc2VydEl0ZXJhdG9yOjpvcGVyYXRvcisrKTogTm8tb3Au
CisgICAgICAgIChXVEY6OnZlY3RvckJhY2tJbnNlcnRlcik6IENvbnZlbmllbmNlIGNyZWF0aW9u
IGZ1bmN0aW9uLgorICAgICAgICAoV1RGOjpWZWN0b3JJbnNlcnRJdGVyYXRvcjo6VmVjdG9ySW5z
ZXJ0SXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpWZWN0b3JJbnNlcnRJdGVyYXRvcjo6b3BlcmF0
b3I9KTogQXBwZW5kIGEgdmFsdWUgdG8gdGhlIGFzc29jaWF0ZWQgdmVjdG9yLgorICAgICAgICAo
V1RGOjpWZWN0b3JJbnNlcnRJdGVyYXRvcjo6b3BlcmF0b3IqKTogUmV0dXJuICp0aGlzLgorICAg
ICAgICAoV1RGOjpWZWN0b3JJbnNlcnRJdGVyYXRvcjo6b3BlcmF0b3IrKyk6IE5vLW9wLgorICAg
ICAgICAoV1RGOjp2ZWN0b3JJbnNlcnRlcik6IENvbnZlbmllbmNlIGNyZWF0aW9uIGZ1bmN0aW9u
LgorCiAyMDE0LTEwLTAyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDbGVhbiB1cDogTW92ZSBYUEMgZm9yd2FyZCBkZWNsYXJhdGlvbnMgaW4gSmF2YVNjcmlw
dENvcmUgdG8gV1RGIFNQSSB3cmFwcGVyIGhlYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZDZjYmQ3MTEzOTExYTM5ZTFkYjAxYzVhZGUzY2VkZGFmY2Nj
Njk5OC4uMWVmOWY4ODgyM2UxYjUwZDE2NmMxZDk5Mjk3MGU4M2E3M2MxYTA0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzYsNiArMjc2LDcgQEAKIAkJ
Q0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8q
IE1lZGlhVGltZS5oICovOyB9OwogCQlDRTQ2NTE2RTE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBU
YWJsZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0U0NjUxNkQxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLzsgfTsKIAkJQ0U3
M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQ
SS5oICovOyB9OworCQlDREJFQUVBRjE5REE2OERGMDBCRUJBODggLyogVmVjdG9ySXRlcmF0b3Jz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREJFQUVB
RTE5REE2OERGMDBCRUJBODggLyogVmVjdG9ySXRlcmF0b3JzLmggKi87IH07CiAJCUUxNTU1NkY1
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTU1NkYzMThBMENDMTgwMDZG
NDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLzsgfTsKIAkJRTE1NTU2RjYxOEEw
Q0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTU1NkY0MThBMENDMTgwMDZGNDhGQiAv
KiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi87IH07CiAJCUVCOTVFMUYwMTYxQTcyNDEwMDg5
QTJGNSAvKiBCeXRlT3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEVCOTVFMUVGMTYxQTcyNDEwMDg5QTJGNSAvKiBCeXRlT3JkZXIuaCAqLzsgfTsK
QEAgLTU2OCw2ICs1NjksNyBAQAogCQlDRDU0OTdBQjE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFU
aW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVGltZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTQ2NTE2RDE5REIxRkI0MDAzRUNBMDUgLyogTlNN
YXBUYWJsZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU01hcFRhYmxl
U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNzNFMDI0MTlEQ0I3QUIwMDU4
MEQ1QyAvKiBYUENTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDU1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQkVBRUFFMTlEQTY4REYwMEJFQkE4
OCAvKiBWZWN0b3JJdGVyYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmVjdG9ySXRlcmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkYz
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyog
Q3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUVCOTVFMUVGMTYxQTcyNDEwMDg5QTJGNSAvKiBCeXRlT3JkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnl0ZU9yZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC04ODIsNiArODg0LDcgQEAKIAkJCQlBOEE0NzM1QzE1MUE4MjVCMDA0MTIzRkYgLyogVW5p
b25GaW5kLmggKi8sCiAJCQkJQThBNDczNkYxNTFBODI1QjAwNDEyM0ZGIC8qIFZhbHVlQ2hlY2su
aCAqLywKIAkJCQlBOEE0NzM3MDE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yLmggKi8sCisJCQkJ
Q0RCRUFFQUUxOURBNjhERjAwQkVCQTg4IC8qIFZlY3Rvckl0ZXJhdG9ycy5oICovLAogCQkJCUE4
QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3JUcmFpdHMuaCAqLywKIAkJCQlBOEE0NzM3
MjE1MUE4MjVCMDA0MTIzRkYgLyogVk1UYWdzLmggKi8sCiAJCQkJOTc0Q0ZDOEQxNkE0RjMyNzAw
NkQ1NDA0IC8qIFdlYWtQdHIuaCAqLywKQEAgLTExNDIsNiArMTE0NSw3IEBACiAJCQkJQTg3NkRC
RDgxNTE4MTZFNTAwREFEQjk1IC8qIFBsYXRmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzQwRjE1MUE4MjVCMDA0MTIzRkYgLyogUG9zc2libHlOdWxsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkIxNEUxOTE4MEZBMjE4MDA5QjZCNEQgLyogQmFnLmggaW4gSGVhZGVycyAqLywKKwkJCQlD
REJFQUVBRjE5REE2OERGMDBCRUJBODggLyogVmVjdG9ySXRlcmF0b3JzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjlEMzM2MzE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQzQ0ODgzMTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0M0Y2MTIwMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvckl0ZXJhdG9ycy5o
IGIvU291cmNlL1dURi93dGYvVmVjdG9ySXRlcmF0b3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmIzMTYzZWY1
YTRjOTMzYjg2MzY2MTExY2JkZDI3ZThkOTY3NjFlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1ZlY3Rvckl0ZXJhdG9ycy5oCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXVEZfVmVjdG9ySXRlcmF0b3JzX2gKKyNkZWZpbmUgV1RGX1ZlY3Rvckl0ZXJh
dG9yc19oCisKKyNpbmNsdWRlIDxpdGVyYXRvcj4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFZlY3RvclR5cGUsIHR5cGVuYW1lIFQ+IGNsYXNzIFZlY3RvckJhY2tJbnNl
cnRJdGVyYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGUsIHR5cGVuYW1lIFQ+IGNs
YXNzIFZlY3Rvckluc2VydEl0ZXJhdG9yOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBl
LCB0eXBlbmFtZSBUID0gdHlwZW5hbWUgVmVjdG9yVHlwZTo6VmFsdWVUeXBlPgorY2xhc3MgVmVj
dG9yQmFja0luc2VydEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFQgdmFsdWVfdHlw
ZTsKKyAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CisgICAgdHlwZWRlZiBU
KiBwb2ludGVyOworICAgIHR5cGVkZWYgVCYgcmVmZXJlbmNlOworICAgIHR5cGVkZWYgc3RkOjpv
dXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OworCisgICAgVmVjdG9yQmFja0lu
c2VydEl0ZXJhdG9yKFZlY3RvclR5cGUmIHZlY3RvcikKKyAgICAgICAgOiBtX3ZlY3Rvcih2ZWN0
b3IpCisgICAgeworICAgIH0KKworICAgIFZlY3RvckJhY2tJbnNlcnRJdGVyYXRvciYgb3BlcmF0
b3I9KGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV92ZWN0b3IuYXBwZW5kKHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFZlY3RvckJhY2tJbnNlcnRJ
dGVyYXRvciYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICBWZWN0b3JCYWNrSW5z
ZXJ0SXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQorICAgIFZlY3RvckJh
Y2tJbnNlcnRJdGVyYXRvciYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuICp0aGlzOyB9CisKK3By
aXZhdGU6CisgICAgVmVjdG9yVHlwZSYgbV92ZWN0b3I7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBWZWN0b3JUeXBlLCB0eXBlbmFtZSBUID0gdHlwZW5hbWUgVmVjdG9yVHlwZTo6VmFsdWVUeXBl
PgoraW5saW5lIFZlY3RvckJhY2tJbnNlcnRJdGVyYXRvcjxWZWN0b3JUeXBlLCBUPiB2ZWN0b3JC
YWNrSW5zZXJ0ZXIoVmVjdG9yVHlwZSYgdmVjdG9yKQoreworICAgIHJldHVybiBWZWN0b3JCYWNr
SW5zZXJ0SXRlcmF0b3I8VmVjdG9yVHlwZSwgVD4odmVjdG9yKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUgVCA9IHR5cGVuYW1lIFZlY3RvclR5cGU6OlZhbHVl
VHlwZT4KK2NsYXNzIFZlY3Rvckluc2VydEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IFQgdmFsdWVfdHlwZTsKKyAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Cisg
ICAgdHlwZWRlZiBUKiBwb2ludGVyOworICAgIHR5cGVkZWYgVCYgcmVmZXJlbmNlOworICAgIHR5
cGVkZWYgc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OworCisgICAg
VmVjdG9ySW5zZXJ0SXRlcmF0b3IoVmVjdG9yVHlwZSYgdmVjdG9yLCB0eXBlbmFtZSBWZWN0b3JU
eXBlOjppdGVyYXRvciBpdGVyKQorICAgICAgICA6IG1fdmVjdG9yKCZ2ZWN0b3IpCisgICAgICAg
ICwgbV9pdGVyKGl0ZXIpCisgICAgeworICAgIH0KKworICAgIFZlY3Rvckluc2VydEl0ZXJhdG9y
JiBvcGVyYXRvcj0oY29uc3QgVCYgdmFsdWUpCisgICAgeworICAgICAgICBzaXplX3QgaW5kZXgg
PSBtX2l0ZXIgLSBtX3ZlY3Rvci0+YmVnaW4oKTsKKyAgICAgICAgbV92ZWN0b3ItPmluc2VydChp
bmRleCwgdmFsdWUpOworICAgICAgICBtX2l0ZXIgPSBtX3ZlY3Rvci0+YmVnaW4oKSArIGluZGV4
OworICAgICAgICArK21faXRlcjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAg
IFZlY3Rvckluc2VydEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgVmVjdG9ySW5zZXJ0SXRlcmF0
b3I8VmVjdG9yVHlwZSwgVD4mIG90aGVyKQorICAgIHsKKyAgICAgICAgbV92ZWN0b3IgPSBvdGhl
ci5tX3ZlY3RvcjsKKyAgICAgICAgbV9pdGVyID0gb3RoZXIubV9pdGVyOworICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgfQorCisgICAgVmVjdG9ySW5zZXJ0SXRlcmF0b3ImIG9wZXJhdG9yKigp
IHsgcmV0dXJuICp0aGlzOyB9CisgICAgVmVjdG9ySW5zZXJ0SXRlcmF0b3ImIG9wZXJhdG9yKyso
KSB7IHJldHVybiAqdGhpczsgfQorICAgIFZlY3Rvckluc2VydEl0ZXJhdG9yJiBvcGVyYXRvcisr
KGludCkgeyByZXR1cm4gKnRoaXM7IH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3JUeXBlKiBtX3Zl
Y3RvcjsKKyAgICB0eXBlbmFtZSBWZWN0b3JUeXBlOjppdGVyYXRvciBtX2l0ZXI7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlLCB0eXBlbmFtZSBUID0gdHlwZW5hbWUgVmVjdG9y
VHlwZTo6VmFsdWVUeXBlPgoraW5saW5lIFZlY3Rvckluc2VydEl0ZXJhdG9yPFZlY3RvclR5cGUs
IFQ+IHZlY3Rvckluc2VydGVyKFZlY3RvclR5cGUmIHZlY3RvciwgdHlwZW5hbWUgVmVjdG9yVHlw
ZTo6aXRlcmF0b3IgaXRlcikKK3sKKyAgICByZXR1cm4gVmVjdG9ySW5zZXJ0SXRlcmF0b3I8VmVj
dG9yVHlwZSwgVD4odmVjdG9yLCBpdGVyKTsKK30KKworfQorCit1c2luZyBXVEY6OlZlY3RvckJh
Y2tJbnNlcnRJdGVyYXRvcjsKK3VzaW5nIFdURjo6dmVjdG9yQmFja0luc2VydGVyOwordXNpbmcg
V1RGOjpWZWN0b3JJbnNlcnRJdGVyYXRvcjsKK3VzaW5nIFdURjo6dmVjdG9ySW5zZXJ0ZXI7CisK
KyNlbmRpZiAvLyBWZWN0b3JJdGVyYXRvcnNfaApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk0MTAzYTBhY2IwZDM2YjRmNTczYzAwYzgyOGE0YWI2
YzBjM2ZiYzMuLmQ3OGRkMGViYTFkMTZjZTczMGQ5NTgzNDAwMTU2YWNjNGVjYWRhZjYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxNC0xMC0wMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAg
ICAgICBTdXBwb3J0IGluc2VydCBpdGVyYXRvcnMgZm9yIFZlY3RvcnMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzczNzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIFZlY3RvckJh
Y2tJbnN0ZXJJdGVyYXRvciBhbmQgVmVjdG9ySW5zZXJ0SXRlcmF0b3IuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisKIDIwMTQtMTAtMDIgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgog
CiAgICAgICAgIER1bXBSZW5kZXJUcmVlIGFuZCBXZWJLaXRUZXN0UnVubmVyIHNob3VsZCB1c2Ug
V2ViS2l0eXN0ZW1JbnRlcmZhY2VZb3NlbWl0ZSB3aGVuIGJ1aWxkaW5nIG9uIFlvc2VtaXRlCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAppbmRleCBkMjA3YTBmZTBhNzRk
ZjUxMDM0NjhkNzQ0NmNlYTY2YmIxMGU2YzA5Li4zNTdlY2RhYmMwYjJkNDE4YzU4NGM3Y2U3ZTZi
MjliNzY0MzIwODAzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9W
ZWN0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk1vdmVPbmx5LmgiCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3JJdGVyYXRvcnMuaD4KIAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCkBAIC0xNDIsNiArMTQzLDM5IEBAIFRFU1QoV1RGX1ZlY3Rvciwg
UmV2ZXJzZUl0ZXJhdG9yKQogICAgIEVYUEVDVF9UUlVFKGVuZCA9PSBpdCk7CiB9CiAKK1RFU1Qo
V1RGX1ZlY3RvciwgSW5zZXJ0SXRlcmF0b3IpCit7CisgICAgVmVjdG9yPGludD4gdmVjdG9yID0g
eyAxLCAyLCAzLCA0IH07CisgICAgVmVjdG9yPGludD46Oml0ZXJhdG9yIGl0ID0gdmVjdG9yLmJl
Z2luKCk7CisgICAgaXQrKzsKKworICAgIGF1dG8gaW5zZXJ0SXQgPSB2ZWN0b3JJbnNlcnRlcih2
ZWN0b3IsIGl0KTsKKyAgICBpbnNlcnRJdCA9IDU7CisgICAgaW5zZXJ0SXQgPSA2OworCisgICAg
RVhQRUNUX0VRKDUsIHZlY3RvclsxXSk7CisgICAgRVhQRUNUX0VRKDYsIHZlY3RvclsyXSk7CisK
KyAgICBpbnNlcnRJdCA9IHZlY3Rvckluc2VydGVyKHZlY3RvciwgdmVjdG9yLmVuZCgpKTsKKyAg
ICBpbnNlcnRJdCA9IDc7CisgICAgaW5zZXJ0SXQgPSA4OworCisgICAgRVhQRUNUX0VRKDcsIHZl
Y3Rvcls2XSk7CisgICAgRVhQRUNUX0VRKDgsIHZlY3Rvcls3XSk7Cit9CisKK1RFU1QoV1RGX1Zl
Y3RvciwgQmFja0luc2VydEl0ZXJhdG9yKQoreworICAgIFZlY3RvcjxpbnQ+IHZlY3RvciA9IHsg
MSwgMiwgMywgNCB9OworICAgIAorICAgIGF1dG8gaW5zZXJ0SXQgPSB2ZWN0b3JCYWNrSW5zZXJ0
ZXIodmVjdG9yKTsKKyAgICBpbnNlcnRJdCA9IDU7CisgICAgaW5zZXJ0SXQgPSA2OworCisgICAg
RVhQRUNUX0VRKDUsIHZlY3Rvcls0XSk7CisgICAgRVhQRUNUX0VRKDYsIHZlY3Rvcls1XSk7Cit9
CisKIFRFU1QoV1RGX1ZlY3RvciwgTW92ZU9ubHlfVW5jaGVja2VkQXBwZW5kKQogewogICAgIFZl
Y3RvcjxNb3ZlT25seT4gdmVjdG9yOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239214</attachid>
            <date>2014-10-03 10:59:02 -0700</date>
            <delta_ts>2014-10-03 11:01:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137374-20141003105905.patch</filename>
            <type>text/plain</type>
            <size>10764</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM0ZWNmODZhMGQyNmI1MWMyZTVjNjNj
NDIzODQwNTAyNzJjNGQzYTMuLmJiZWEwNjQzNmFkZDc4MjZiNWQ0ZGZmNDc1NWRlMGI4ZmU5ZjI4
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTQtMTAtMDIgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBpbnNlcnQgaXRlcmF0b3JzIGZvciBWZWN0
b3JzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
Mzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8g
YmUgYWJsZSB0byB1c2Ugc3RkIGFsZ29yaXRobXMgd2hpY2ggcmVxdWlyZSBhbiBpbnNlcnQgaXRl
cmF0b3IsIGFkZCBpbnNlcnQgaXRlcmF0b3JzIGZvcgorICAgICAgICBWZWN0b3Igb2JqZWN0cy4g
QWRkIGNvbnZlbmllbmNlIGNyZWF0aW9uIGZ1bmN0aW9ucyBmb3IgVmVjdG9yQmFja0luc2VydEl0
ZXJhdG9yIGFuZAorICAgICAgICBWZWN0b3JJbnNlcnRJdGVyYXRvciB0byBhbGxvdyB0ZW1wbGF0
ZSB0eXBlIGRlZHVjdGlvbiB0byB3b3JrIHdpdGhvdXQgZXhwbGljaXQgdGVtcGxhdGUKKyAgICAg
ICAgcGFyYW1ldGVycy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdURi52Y3hwcm9qL1dURi52Y3hwcm9qOgorICAgICAgICAqIHd0Zi9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvVmVjdG9ySXRlcmF0b3JzLmg6IEFkZGVkLgorICAg
ICAgICAoV1RGOjpWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3I6OlZlY3RvckJhY2tJbnNlcnRJdGVy
YXRvcik6CisgICAgICAgIChXVEY6OlZlY3RvckJhY2tJbnNlcnRJdGVyYXRvcjo6b3BlcmF0b3I9
KTogSW5zZXJ0IGEgdmFsdWUgaW50byB0aGUgYXNzb2NpYXRlZCB2ZWN0b3IsIHJlc2V0dGluZwor
ICAgICAgICAgICAgbV9pdGVyIGFzIG1lbW9yeSBsYXlvdXQgbWF5IGhhdmUgY2hhbmdlZC4KKyAg
ICAgICAgKFdURjo6VmVjdG9yQmFja0luc2VydEl0ZXJhdG9yOjpvcGVyYXRvciopOiBSZXR1cm4g
KnRoaXM7CisgICAgICAgIChXVEY6OlZlY3RvckJhY2tJbnNlcnRJdGVyYXRvcjo6b3BlcmF0b3Ir
Kyk6IE5vLW9wLgorICAgICAgICAoV1RGOjp2ZWN0b3JCYWNrSW5zZXJ0ZXIpOiBDb252ZW5pZW5j
ZSBjcmVhdGlvbiBmdW5jdGlvbi4KKyAgICAgICAgKFdURjo6VmVjdG9ySW5zZXJ0SXRlcmF0b3I6
OlZlY3Rvckluc2VydEl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6VmVjdG9ySW5zZXJ0SXRlcmF0
b3I6Om9wZXJhdG9yPSk6IEFwcGVuZCBhIHZhbHVlIHRvIHRoZSBhc3NvY2lhdGVkIHZlY3Rvci4K
KyAgICAgICAgKFdURjo6VmVjdG9ySW5zZXJ0SXRlcmF0b3I6Om9wZXJhdG9yKik6IFJldHVybiAq
dGhpcy4KKyAgICAgICAgKFdURjo6VmVjdG9ySW5zZXJ0SXRlcmF0b3I6Om9wZXJhdG9yKyspOiBO
by1vcC4KKyAgICAgICAgKFdURjo6dmVjdG9ySW5zZXJ0ZXIpOiBDb252ZW5pZW5jZSBjcmVhdGlv
biBmdW5jdGlvbi4KKwogMjAxNC0xMC0wMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgQ2xlYW4gdXA6IE1vdmUgWFBDIGZvcndhcmQgZGVjbGFyYXRpb25zIGlu
IEphdmFTY3JpcHRDb3JlIHRvIFdURiBTUEkgd3JhcHBlciBoZWFkZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ogYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9q
L1dURi52Y3hwcm9qCmluZGV4IDhhYjFhNDMzMWE2OGE0NDdlYzQ5ZWVhZjQ1ZTU0YzNhY2M3Mjc4
ODUuLmEyY2EwNWI3NmZiNmQ3ZWU2ODQwYmQzYWY4N2I2NDdmY2MzMWRjMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKKysrIGIvU291cmNlL1dURi9XVEYu
dmN4cHJvai9XVEYudmN4cHJvagpAQCAtMzA1LDYgKzMwNSw3IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3dGZcdW5pY29kZVxVVEY4LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlx3dGZcVmFsdWVDaGVjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3Rm
XFZlY3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFZlY3Rvckl0ZXJh
dG9ycy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFZNVGFncy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHdpblxHRElPYmplY3QuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxXVEZUaHJlYWREYXRhLmgiIC8+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNmNiZDcxMTM5MTFhMzllMWRiMDFj
NWFkZTNjZWRkYWZjY2M2OTk4Li4xZWY5Zjg4ODIzZTFiNTBkMTY2YzFkOTkyOTcwZTgzYTczYzFh
MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3Niw2
ICsyNzYsNyBAQAogCQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQjE1ODU3
RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggKi87IH07CiAJCUNFNDY1MTZFMTlEQjFGQjQwMDNF
Q0EwNSAvKiBOU01hcFRhYmxlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTQ2NTE2RDE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5o
ICovOyB9OwogCQlDRTczRTAyNTE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTczRTAyNDE5RENCN0FCMDA1
ODBENUMgLyogWFBDU1BJLmggKi87IH07CisJCUNEQkVBRUFGMTlEQTY4REYwMEJFQkE4OCAvKiBW
ZWN0b3JJdGVyYXRvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQkVBRUFFMTlEQTY4REYwMEJFQkE4OCAvKiBWZWN0b3JJdGVyYXRvcnMuaCAqLzsg
fTsKIAkJRTE1NTU2RjUxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1NTU2
RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwICovOyB9Owog
CQlFMTU1NTZGNjE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1NTU2RjQxOEEw
Q0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaCAqLzsgfTsKIAkJRUI5NUUx
RjAxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUI5NUUxRUYxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVP
cmRlci5oICovOyB9OwpAQCAtNTY4LDYgKzU2OSw3IEBACiAJCUNENTQ5N0FCMTU4NTdEMDMwMEI1
QkMzMCAvKiBNZWRpYVRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFUaW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDY1MTZEMTlEQjFGQjQw
MDNFQ0EwNSAvKiBOU01hcFRhYmxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5TTWFwVGFibGVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3M0Uw
MjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBYUENTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RCRUFFQUUx
OURBNjhERjAwQkVCQTg4IC8qIFZlY3Rvckl0ZXJhdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWZWN0b3JJdGVyYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvZ3JhcGhpY1V0
aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkY0MThBMEND
MTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRUI5NUUxRUYxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlT3JkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTg4Miw2ICs4ODQsNyBAQAogCQkJCUE4QTQ3MzVDMTUxQTgyNUIw
MDQxMjNGRiAvKiBVbmlvbkZpbmQuaCAqLywKIAkJCQlBOEE0NzM2RjE1MUE4MjVCMDA0MTIzRkYg
LyogVmFsdWVDaGVjay5oICovLAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0
b3IuaCAqLywKKwkJCQlDREJFQUVBRTE5REE2OERGMDBCRUJBODggLyogVmVjdG9ySXRlcmF0b3Jz
LmggKi8sCiAJCQkJQThBNDczNzExNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oICov
LAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCAqLywKIAkJCQk5NzRD
RkM4RDE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovLApAQCAtMTE0Miw2ICsxMTQ1LDcg
QEAKIAkJCQlBODc2REJEODE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3NDBGMTUxQTgyNUIwMDQxMjNGRiAvKiBQb3NzaWJseU51bGwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE0RTE5MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEQkVBRUFGMTlEQTY4REYwMEJFQkE4OCAvKiBWZWN0b3JJdGVyYXRvcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUQzMzYzMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0
cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDNDQ4ODMxNkZFOUZFMTAwODQ0QkU5IC8qIFBy
b2Nlc3NJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQzRjYxMjAxNTY1RjBGOTAwREI1MTRBIC8q
IFJBTVNpemUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBmNTA0MGY5
OGZjNTk1ZWJjYTgxOWZlY2QwMTVhYTAwYjJlYTEwYmU1Li5lZDMwYWMyYWM5MzljZTllZTkyNTYx
ZWZmYWI3YzNkYTVjYzI1ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMTA4LDYgKzEwOCw3
IEBAIHNldChXVEZfSEVBREVSUwogICAgIFZNVGFncy5oCiAgICAgVmFsdWVDaGVjay5oCiAgICAg
VmVjdG9yLmgKKyAgICBWZWN0b3JJdGVyYXRvcnMuaAogICAgIFZlY3RvclRyYWl0cy5oCiAgICAg
V1RGVGhyZWFkRGF0YS5oCiAgICAgV2Vha1B0ci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9WZWN0b3JJdGVyYXRvcnMuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvckl0ZXJhdG9ycy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZiMzE2M2VmNWE0YzkzM2I4NjM2NjExMWNiZGQyN2U4ZDk2NzYxZWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3JJdGVyYXRvcnMuaApAQCAtMCwwICsx
LDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV1RGX1ZlY3Rvckl0ZXJhdG9yc19oCisjZGVm
aW5lIFdURl9WZWN0b3JJdGVyYXRvcnNfaAorCisjaW5jbHVkZSA8aXRlcmF0b3I+CisKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlLCB0eXBlbmFtZSBUPiBj
bGFzcyBWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3I7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JU
eXBlLCB0eXBlbmFtZSBUPiBjbGFzcyBWZWN0b3JJbnNlcnRJdGVyYXRvcjsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUgVCA9IHR5cGVuYW1lIFZlY3RvclR5cGU6OlZh
bHVlVHlwZT4KK2NsYXNzIFZlY3RvckJhY2tJbnNlcnRJdGVyYXRvciB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90
eXBlOworICAgIHR5cGVkZWYgVCogcG9pbnRlcjsKKyAgICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsK
KyAgICB0eXBlZGVmIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsK
KworICAgIFZlY3RvckJhY2tJbnNlcnRJdGVyYXRvcihWZWN0b3JUeXBlJiB2ZWN0b3IpCisgICAg
ICAgIDogbV92ZWN0b3IodmVjdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBWZWN0b3JCYWNrSW5z
ZXJ0SXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBUJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1f
dmVjdG9yLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAg
ICBWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3ImIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9
CisgICAgVmVjdG9yQmFja0luc2VydEl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyByZXR1cm4gKnRo
aXM7IH0KKyAgICBWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3ImIG9wZXJhdG9yKysoaW50KSB7IHJl
dHVybiAqdGhpczsgfQorCitwcml2YXRlOgorICAgIFZlY3RvclR5cGUmIG1fdmVjdG9yOworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUgVCA9IHR5cGVuYW1lIFZl
Y3RvclR5cGU6OlZhbHVlVHlwZT4KK2lubGluZSBWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3I8VmVj
dG9yVHlwZSwgVD4gdmVjdG9yQmFja0luc2VydGVyKFZlY3RvclR5cGUmIHZlY3RvcikKK3sKKyAg
ICByZXR1cm4gVmVjdG9yQmFja0luc2VydEl0ZXJhdG9yPFZlY3RvclR5cGUsIFQ+KHZlY3Rvcik7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGUsIHR5cGVuYW1lIFQgPSB0eXBlbmFt
ZSBWZWN0b3JUeXBlOjpWYWx1ZVR5cGU+CitjbGFzcyBWZWN0b3JJbnNlcnRJdGVyYXRvciB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBwdHJkaWZmX3Qg
ZGlmZmVyZW5jZV90eXBlOworICAgIHR5cGVkZWYgVCogcG9pbnRlcjsKKyAgICB0eXBlZGVmIFQm
IHJlZmVyZW5jZTsKKyAgICB0eXBlZGVmIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRv
cl9jYXRlZ29yeTsKKworICAgIFZlY3Rvckluc2VydEl0ZXJhdG9yKFZlY3RvclR5cGUmIHZlY3Rv
ciwgdHlwZW5hbWUgVmVjdG9yVHlwZTo6aXRlcmF0b3IgaXRlcikKKyAgICAgICAgOiBtX3ZlY3Rv
cigmdmVjdG9yKQorICAgICAgICAsIG1faXRlcihpdGVyKQorICAgIHsKKyAgICB9CisKKyAgICBW
ZWN0b3JJbnNlcnRJdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgc2l6ZV90IGluZGV4ID0gbV9pdGVyIC0gbV92ZWN0b3ItPmJlZ2luKCk7CisgICAgICAg
IG1fdmVjdG9yLT5pbnNlcnQoaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgbV9pdGVyID0gbV92ZWN0
b3ItPmJlZ2luKCkgKyBpbmRleDsKKyAgICAgICAgKyttX2l0ZXI7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICBWZWN0b3JJbnNlcnRJdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0
IFZlY3Rvckluc2VydEl0ZXJhdG9yPFZlY3RvclR5cGUsIFQ+JiBvdGhlcikKKyAgICB7CisgICAg
ICAgIG1fdmVjdG9yID0gb3RoZXIubV92ZWN0b3I7CisgICAgICAgIG1faXRlciA9IG90aGVyLm1f
aXRlcjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFZlY3Rvckluc2VydEl0
ZXJhdG9yJiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQorICAgIFZlY3Rvckluc2VydEl0
ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICBWZWN0b3JJbnNlcnRJ
dGVyYXRvciYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuICp0aGlzOyB9CisKK3ByaXZhdGU6Cisg
ICAgVmVjdG9yVHlwZSogbV92ZWN0b3I7CisgICAgdHlwZW5hbWUgVmVjdG9yVHlwZTo6aXRlcmF0
b3IgbV9pdGVyOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUg
VCA9IHR5cGVuYW1lIFZlY3RvclR5cGU6OlZhbHVlVHlwZT4KK2lubGluZSBWZWN0b3JJbnNlcnRJ
dGVyYXRvcjxWZWN0b3JUeXBlLCBUPiB2ZWN0b3JJbnNlcnRlcihWZWN0b3JUeXBlJiB2ZWN0b3Is
IHR5cGVuYW1lIFZlY3RvclR5cGU6Oml0ZXJhdG9yIGl0ZXIpCit7CisgICAgcmV0dXJuIFZlY3Rv
ckluc2VydEl0ZXJhdG9yPFZlY3RvclR5cGUsIFQ+KHZlY3RvciwgaXRlcik7Cit9CisKK30KKwor
dXNpbmcgV1RGOjpWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3I7Cit1c2luZyBXVEY6OnZlY3RvckJh
Y2tJbnNlcnRlcjsKK3VzaW5nIFdURjo6VmVjdG9ySW5zZXJ0SXRlcmF0b3I7Cit1c2luZyBXVEY6
OnZlY3Rvckluc2VydGVyOworCisjZW5kaWYgLy8gVmVjdG9ySXRlcmF0b3JzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239215</attachid>
            <date>2014-10-03 11:01:52 -0700</date>
            <delta_ts>2014-10-03 22:08:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137374-20141003110154.patch</filename>
            <type>text/plain</type>
            <size>12753</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM0ZWNmODZhMGQyNmI1MWMyZTVjNjNj
NDIzODQwNTAyNzJjNGQzYTMuLmJiZWEwNjQzNmFkZDc4MjZiNWQ0ZGZmNDc1NWRlMGI4ZmU5ZjI4
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTQtMTAtMDIgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBpbnNlcnQgaXRlcmF0b3JzIGZvciBWZWN0
b3JzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
Mzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8g
YmUgYWJsZSB0byB1c2Ugc3RkIGFsZ29yaXRobXMgd2hpY2ggcmVxdWlyZSBhbiBpbnNlcnQgaXRl
cmF0b3IsIGFkZCBpbnNlcnQgaXRlcmF0b3JzIGZvcgorICAgICAgICBWZWN0b3Igb2JqZWN0cy4g
QWRkIGNvbnZlbmllbmNlIGNyZWF0aW9uIGZ1bmN0aW9ucyBmb3IgVmVjdG9yQmFja0luc2VydEl0
ZXJhdG9yIGFuZAorICAgICAgICBWZWN0b3JJbnNlcnRJdGVyYXRvciB0byBhbGxvdyB0ZW1wbGF0
ZSB0eXBlIGRlZHVjdGlvbiB0byB3b3JrIHdpdGhvdXQgZXhwbGljaXQgdGVtcGxhdGUKKyAgICAg
ICAgcGFyYW1ldGVycy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdURi52Y3hwcm9qL1dURi52Y3hwcm9qOgorICAgICAgICAqIHd0Zi9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvVmVjdG9ySXRlcmF0b3JzLmg6IEFkZGVkLgorICAg
ICAgICAoV1RGOjpWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3I6OlZlY3RvckJhY2tJbnNlcnRJdGVy
YXRvcik6CisgICAgICAgIChXVEY6OlZlY3RvckJhY2tJbnNlcnRJdGVyYXRvcjo6b3BlcmF0b3I9
KTogSW5zZXJ0IGEgdmFsdWUgaW50byB0aGUgYXNzb2NpYXRlZCB2ZWN0b3IsIHJlc2V0dGluZwor
ICAgICAgICAgICAgbV9pdGVyIGFzIG1lbW9yeSBsYXlvdXQgbWF5IGhhdmUgY2hhbmdlZC4KKyAg
ICAgICAgKFdURjo6VmVjdG9yQmFja0luc2VydEl0ZXJhdG9yOjpvcGVyYXRvciopOiBSZXR1cm4g
KnRoaXM7CisgICAgICAgIChXVEY6OlZlY3RvckJhY2tJbnNlcnRJdGVyYXRvcjo6b3BlcmF0b3Ir
Kyk6IE5vLW9wLgorICAgICAgICAoV1RGOjp2ZWN0b3JCYWNrSW5zZXJ0ZXIpOiBDb252ZW5pZW5j
ZSBjcmVhdGlvbiBmdW5jdGlvbi4KKyAgICAgICAgKFdURjo6VmVjdG9ySW5zZXJ0SXRlcmF0b3I6
OlZlY3Rvckluc2VydEl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6VmVjdG9ySW5zZXJ0SXRlcmF0
b3I6Om9wZXJhdG9yPSk6IEFwcGVuZCBhIHZhbHVlIHRvIHRoZSBhc3NvY2lhdGVkIHZlY3Rvci4K
KyAgICAgICAgKFdURjo6VmVjdG9ySW5zZXJ0SXRlcmF0b3I6Om9wZXJhdG9yKik6IFJldHVybiAq
dGhpcy4KKyAgICAgICAgKFdURjo6VmVjdG9ySW5zZXJ0SXRlcmF0b3I6Om9wZXJhdG9yKyspOiBO
by1vcC4KKyAgICAgICAgKFdURjo6dmVjdG9ySW5zZXJ0ZXIpOiBDb252ZW5pZW5jZSBjcmVhdGlv
biBmdW5jdGlvbi4KKwogMjAxNC0xMC0wMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgQ2xlYW4gdXA6IE1vdmUgWFBDIGZvcndhcmQgZGVjbGFyYXRpb25zIGlu
IEphdmFTY3JpcHRDb3JlIHRvIFdURiBTUEkgd3JhcHBlciBoZWFkZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ogYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9q
L1dURi52Y3hwcm9qCmluZGV4IDhhYjFhNDMzMWE2OGE0NDdlYzQ5ZWVhZjQ1ZTU0YzNhY2M3Mjc4
ODUuLmEyY2EwNWI3NmZiNmQ3ZWU2ODQwYmQzYWY4N2I2NDdmY2MzMWRjMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKKysrIGIvU291cmNlL1dURi9XVEYu
dmN4cHJvai9XVEYudmN4cHJvagpAQCAtMzA1LDYgKzMwNSw3IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3dGZcdW5pY29kZVxVVEY4LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlx3dGZcVmFsdWVDaGVjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3Rm
XFZlY3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFZlY3Rvckl0ZXJh
dG9ycy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFZNVGFncy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHdpblxHRElPYmplY3QuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxXVEZUaHJlYWREYXRhLmgiIC8+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNmNiZDcxMTM5MTFhMzllMWRiMDFj
NWFkZTNjZWRkYWZjY2M2OTk4Li4xZWY5Zjg4ODIzZTFiNTBkMTY2YzFkOTkyOTcwZTgzYTczYzFh
MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3Niw2
ICsyNzYsNyBAQAogCQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQjE1ODU3
RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggKi87IH07CiAJCUNFNDY1MTZFMTlEQjFGQjQwMDNF
Q0EwNSAvKiBOU01hcFRhYmxlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTQ2NTE2RDE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5o
ICovOyB9OwogCQlDRTczRTAyNTE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTczRTAyNDE5RENCN0FCMDA1
ODBENUMgLyogWFBDU1BJLmggKi87IH07CisJCUNEQkVBRUFGMTlEQTY4REYwMEJFQkE4OCAvKiBW
ZWN0b3JJdGVyYXRvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQkVBRUFFMTlEQTY4REYwMEJFQkE4OCAvKiBWZWN0b3JJdGVyYXRvcnMuaCAqLzsg
fTsKIAkJRTE1NTU2RjUxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1NTU2
RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwICovOyB9Owog
CQlFMTU1NTZGNjE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1NTU2RjQxOEEw
Q0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaCAqLzsgfTsKIAkJRUI5NUUx
RjAxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUI5NUUxRUYxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVP
cmRlci5oICovOyB9OwpAQCAtNTY4LDYgKzU2OSw3IEBACiAJCUNENTQ5N0FCMTU4NTdEMDMwMEI1
QkMzMCAvKiBNZWRpYVRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFUaW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDY1MTZEMTlEQjFGQjQw
MDNFQ0EwNSAvKiBOU01hcFRhYmxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5TTWFwVGFibGVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3M0Uw
MjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBYUENTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RCRUFFQUUx
OURBNjhERjAwQkVCQTg4IC8qIFZlY3Rvckl0ZXJhdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWZWN0b3JJdGVyYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvZ3JhcGhpY1V0
aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkY0MThBMEND
MTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRUI5NUUxRUYxNjFBNzI0MTAwODlBMkY1IC8qIEJ5dGVPcmRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlT3JkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTg4Miw2ICs4ODQsNyBAQAogCQkJCUE4QTQ3MzVDMTUxQTgyNUIw
MDQxMjNGRiAvKiBVbmlvbkZpbmQuaCAqLywKIAkJCQlBOEE0NzM2RjE1MUE4MjVCMDA0MTIzRkYg
LyogVmFsdWVDaGVjay5oICovLAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0
b3IuaCAqLywKKwkJCQlDREJFQUVBRTE5REE2OERGMDBCRUJBODggLyogVmVjdG9ySXRlcmF0b3Jz
LmggKi8sCiAJCQkJQThBNDczNzExNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oICov
LAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCAqLywKIAkJCQk5NzRD
RkM4RDE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovLApAQCAtMTE0Miw2ICsxMTQ1LDcg
QEAKIAkJCQlBODc2REJEODE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3NDBGMTUxQTgyNUIwMDQxMjNGRiAvKiBQb3NzaWJseU51bGwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE0RTE5MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEQkVBRUFGMTlEQTY4REYwMEJFQkE4OCAvKiBWZWN0b3JJdGVyYXRvcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUQzMzYzMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0
cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDNDQ4ODMxNkZFOUZFMTAwODQ0QkU5IC8qIFBy
b2Nlc3NJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQzRjYxMjAxNTY1RjBGOTAwREI1MTRBIC8q
IFJBTVNpemUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBmNTA0MGY5
OGZjNTk1ZWJjYTgxOWZlY2QwMTVhYTAwYjJlYTEwYmU1Li5lZDMwYWMyYWM5MzljZTllZTkyNTYx
ZWZmYWI3YzNkYTVjYzI1ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMTA4LDYgKzEwOCw3
IEBAIHNldChXVEZfSEVBREVSUwogICAgIFZNVGFncy5oCiAgICAgVmFsdWVDaGVjay5oCiAgICAg
VmVjdG9yLmgKKyAgICBWZWN0b3JJdGVyYXRvcnMuaAogICAgIFZlY3RvclRyYWl0cy5oCiAgICAg
V1RGVGhyZWFkRGF0YS5oCiAgICAgV2Vha1B0ci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9WZWN0b3JJdGVyYXRvcnMuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvckl0ZXJhdG9ycy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZiMzE2M2VmNWE0YzkzM2I4NjM2NjExMWNiZGQyN2U4ZDk2NzYxZWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3JJdGVyYXRvcnMuaApAQCAtMCwwICsx
LDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV1RGX1ZlY3Rvckl0ZXJhdG9yc19oCisjZGVm
aW5lIFdURl9WZWN0b3JJdGVyYXRvcnNfaAorCisjaW5jbHVkZSA8aXRlcmF0b3I+CisKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlLCB0eXBlbmFtZSBUPiBj
bGFzcyBWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3I7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JU
eXBlLCB0eXBlbmFtZSBUPiBjbGFzcyBWZWN0b3JJbnNlcnRJdGVyYXRvcjsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUgVCA9IHR5cGVuYW1lIFZlY3RvclR5cGU6OlZh
bHVlVHlwZT4KK2NsYXNzIFZlY3RvckJhY2tJbnNlcnRJdGVyYXRvciB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90
eXBlOworICAgIHR5cGVkZWYgVCogcG9pbnRlcjsKKyAgICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsK
KyAgICB0eXBlZGVmIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsK
KworICAgIFZlY3RvckJhY2tJbnNlcnRJdGVyYXRvcihWZWN0b3JUeXBlJiB2ZWN0b3IpCisgICAg
ICAgIDogbV92ZWN0b3IodmVjdG9yKQorICAgIHsKKyAgICB9CisKKyAgICBWZWN0b3JCYWNrSW5z
ZXJ0SXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBUJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1f
dmVjdG9yLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAg
ICBWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3ImIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9
CisgICAgVmVjdG9yQmFja0luc2VydEl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyByZXR1cm4gKnRo
aXM7IH0KKyAgICBWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3ImIG9wZXJhdG9yKysoaW50KSB7IHJl
dHVybiAqdGhpczsgfQorCitwcml2YXRlOgorICAgIFZlY3RvclR5cGUmIG1fdmVjdG9yOworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUgVCA9IHR5cGVuYW1lIFZl
Y3RvclR5cGU6OlZhbHVlVHlwZT4KK2lubGluZSBWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3I8VmVj
dG9yVHlwZSwgVD4gdmVjdG9yQmFja0luc2VydGVyKFZlY3RvclR5cGUmIHZlY3RvcikKK3sKKyAg
ICByZXR1cm4gVmVjdG9yQmFja0luc2VydEl0ZXJhdG9yPFZlY3RvclR5cGUsIFQ+KHZlY3Rvcik7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGUsIHR5cGVuYW1lIFQgPSB0eXBlbmFt
ZSBWZWN0b3JUeXBlOjpWYWx1ZVR5cGU+CitjbGFzcyBWZWN0b3JJbnNlcnRJdGVyYXRvciB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBwdHJkaWZmX3Qg
ZGlmZmVyZW5jZV90eXBlOworICAgIHR5cGVkZWYgVCogcG9pbnRlcjsKKyAgICB0eXBlZGVmIFQm
IHJlZmVyZW5jZTsKKyAgICB0eXBlZGVmIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRv
cl9jYXRlZ29yeTsKKworICAgIFZlY3Rvckluc2VydEl0ZXJhdG9yKFZlY3RvclR5cGUmIHZlY3Rv
ciwgdHlwZW5hbWUgVmVjdG9yVHlwZTo6aXRlcmF0b3IgaXRlcikKKyAgICAgICAgOiBtX3ZlY3Rv
cigmdmVjdG9yKQorICAgICAgICAsIG1faXRlcihpdGVyKQorICAgIHsKKyAgICB9CisKKyAgICBW
ZWN0b3JJbnNlcnRJdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgc2l6ZV90IGluZGV4ID0gbV9pdGVyIC0gbV92ZWN0b3ItPmJlZ2luKCk7CisgICAgICAg
IG1fdmVjdG9yLT5pbnNlcnQoaW5kZXgsIHZhbHVlKTsKKyAgICAgICAgbV9pdGVyID0gbV92ZWN0
b3ItPmJlZ2luKCkgKyBpbmRleDsKKyAgICAgICAgKyttX2l0ZXI7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICBWZWN0b3JJbnNlcnRJdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0
IFZlY3Rvckluc2VydEl0ZXJhdG9yPFZlY3RvclR5cGUsIFQ+JiBvdGhlcikKKyAgICB7CisgICAg
ICAgIG1fdmVjdG9yID0gb3RoZXIubV92ZWN0b3I7CisgICAgICAgIG1faXRlciA9IG90aGVyLm1f
aXRlcjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFZlY3Rvckluc2VydEl0
ZXJhdG9yJiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQorICAgIFZlY3Rvckluc2VydEl0
ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyByZXR1cm4gKnRoaXM7IH0KKyAgICBWZWN0b3JJbnNlcnRJ
dGVyYXRvciYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuICp0aGlzOyB9CisKK3ByaXZhdGU6Cisg
ICAgVmVjdG9yVHlwZSogbV92ZWN0b3I7CisgICAgdHlwZW5hbWUgVmVjdG9yVHlwZTo6aXRlcmF0
b3IgbV9pdGVyOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUg
VCA9IHR5cGVuYW1lIFZlY3RvclR5cGU6OlZhbHVlVHlwZT4KK2lubGluZSBWZWN0b3JJbnNlcnRJ
dGVyYXRvcjxWZWN0b3JUeXBlLCBUPiB2ZWN0b3JJbnNlcnRlcihWZWN0b3JUeXBlJiB2ZWN0b3Is
IHR5cGVuYW1lIFZlY3RvclR5cGU6Oml0ZXJhdG9yIGl0ZXIpCit7CisgICAgcmV0dXJuIFZlY3Rv
ckluc2VydEl0ZXJhdG9yPFZlY3RvclR5cGUsIFQ+KHZlY3RvciwgaXRlcik7Cit9CisKK30KKwor
dXNpbmcgV1RGOjpWZWN0b3JCYWNrSW5zZXJ0SXRlcmF0b3I7Cit1c2luZyBXVEY6OnZlY3RvckJh
Y2tJbnNlcnRlcjsKK3VzaW5nIFdURjo6VmVjdG9ySW5zZXJ0SXRlcmF0b3I7Cit1c2luZyBXVEY6
OnZlY3Rvckluc2VydGVyOworCisjZW5kaWYgLy8gVmVjdG9ySXRlcmF0b3JzX2gKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NDEwM2EwYWNiMGQz
NmI0ZjU3M2MwMGM4MjhhNGFiNmMwYzNmYmMzLi5kNzhkZDBlYmExZDE2Y2U3MzBkOTU4MzQwMDE1
NmFjYzRlY2FkYWY2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMTAtMDIgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBpbnNlcnQgaXRlcmF0b3JzIGZvciBWZWN0
b3JzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
Mzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IHRlc3RzIGZvciBWZWN0b3JCYWNrSW5zdGVySXRlcmF0b3IgYW5kIFZlY3Rvckluc2VydEl0ZXJh
dG9yLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE0LTEwLTAyICBKZWZmIE1pbGxlciAg
PGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBEdW1wUmVuZGVyVHJlZSBhbmQgV2ViS2l0VGVz
dFJ1bm5lciBzaG91bGQgdXNlIFdlYktpdHlzdGVtSW50ZXJmYWNlWW9zZW1pdGUgd2hlbiBidWls
ZGluZyBvbiBZb3NlbWl0ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVmVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAK
aW5kZXggZDIwN2EwZmUwYTc0ZGY1MTAzNDY4ZDc0NDZjZWE2NmJiMTBlNmMwOS4uMzU3ZWNkYWJj
MGIyZDQxOGM1ODRjN2NlN2U2YjI5Yjc2NDMyMDgwMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9WZWN0b3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJNb3ZlT25s
eS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9ySXRlcmF0
b3JzLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtMTQyLDYgKzE0MywzOSBA
QCBURVNUKFdURl9WZWN0b3IsIFJldmVyc2VJdGVyYXRvcikKICAgICBFWFBFQ1RfVFJVRShlbmQg
PT0gaXQpOwogfQogCitURVNUKFdURl9WZWN0b3IsIEluc2VydEl0ZXJhdG9yKQoreworICAgIFZl
Y3RvcjxpbnQ+IHZlY3RvciA9IHsgMSwgMiwgMywgNCB9OworICAgIFZlY3RvcjxpbnQ+OjppdGVy
YXRvciBpdCA9IHZlY3Rvci5iZWdpbigpOworICAgIGl0Kys7CisKKyAgICBhdXRvIGluc2VydEl0
ID0gdmVjdG9ySW5zZXJ0ZXIodmVjdG9yLCBpdCk7CisgICAgaW5zZXJ0SXQgPSA1OworICAgIGlu
c2VydEl0ID0gNjsKKworICAgIEVYUEVDVF9FUSg1LCB2ZWN0b3JbMV0pOworICAgIEVYUEVDVF9F
USg2LCB2ZWN0b3JbMl0pOworCisgICAgaW5zZXJ0SXQgPSB2ZWN0b3JJbnNlcnRlcih2ZWN0b3Is
IHZlY3Rvci5lbmQoKSk7CisgICAgaW5zZXJ0SXQgPSA3OworICAgIGluc2VydEl0ID0gODsKKwor
ICAgIEVYUEVDVF9FUSg3LCB2ZWN0b3JbNl0pOworICAgIEVYUEVDVF9FUSg4LCB2ZWN0b3JbN10p
OworfQorCitURVNUKFdURl9WZWN0b3IsIEJhY2tJbnNlcnRJdGVyYXRvcikKK3sKKyAgICBWZWN0
b3I8aW50PiB2ZWN0b3IgPSB7IDEsIDIsIDMsIDQgfTsKKyAgICAKKyAgICBhdXRvIGluc2VydEl0
ID0gdmVjdG9yQmFja0luc2VydGVyKHZlY3Rvcik7CisgICAgaW5zZXJ0SXQgPSA1OworICAgIGlu
c2VydEl0ID0gNjsKKworICAgIEVYUEVDVF9FUSg1LCB2ZWN0b3JbNF0pOworICAgIEVYUEVDVF9F
USg2LCB2ZWN0b3JbNV0pOworfQorCiBURVNUKFdURl9WZWN0b3IsIE1vdmVPbmx5X1VuY2hlY2tl
ZEFwcGVuZCkKIHsKICAgICBWZWN0b3I8TW92ZU9ubHk+IHZlY3RvcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239267</attachid>
            <date>2014-10-03 22:54:37 -0700</date>
            <delta_ts>2016-09-17 07:05:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137374-20141003225440.patch</filename>
            <type>text/plain</type>
            <size>46002</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZjgyMWQ0OTU3MjI5YTAzNWZjMTQ1OWZkOTQyMzhhZmUwNmNmMTJmLi5iNDIwMDc2Y2ZkNDBhNmQ0
NWUyMzg3MTkwZWU1N2Y1ODEzMWI5YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNC0xMC0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBTdXBwb3J0IGluc2VydCBpdGVyYXRvcnMgZm9yIFZlY3RvcnMuIFtQYXJ0IDFd
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzczNzQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUg
V1RGOjpWZWN0b3I6Omluc2VydCgpIC0+IGluc2VydEF0KCkuCisKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEFyZ3VtZW50czo6Q2Fs
bEFyZ3VtZW50cyk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y2FsbFN0YWNrbWFwKToKKyAgICAgICAgKiB5
YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6Q2hhcmFjdGVyQ2xhc3ND
b25zdHJ1Y3Rvcjo6YWRkU29ydGVkKToKKyAgICAgICAgKEpTQzo6WWFycjo6Q2hhcmFjdGVyQ2xh
c3NDb25zdHJ1Y3Rvcjo6YWRkU29ydGVkUmFuZ2UpOgorCiAyMDE0LTEwLTAyICBEYW5pZWwgQmF0
ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cDogTW92ZSBYUEMgZm9y
d2FyZCBkZWNsYXJhdGlvbnMgaW4gSmF2YVNjcmlwdENvcmUgdG8gV1RGIFNQSSB3cmFwcGVyIGhl
YWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwppbmRleCBjNGVjZjg2YTBkMjZiNTFjMmU1YzYzYzQyMzg0MDUwMjcyYzRkM2EzLi4xOWQ0
ZjBmYzJiNzdkZTlkNzlmN2RmMWUzOGYxNmEyMDdmOTUxMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDE0LTEwLTAzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAg
IFN1cHBvcnQgaW5zZXJ0IGl0ZXJhdG9ycyBmb3IgVmVjdG9ycy4gW1BhcnQgMV0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzM3NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBWZWN0b3I6Omlu
c2VydCgpIHRvIFZlY3Rvcjo6aW5zZXJ0QXQoKSwgYW5kIGFkZCBhIGZvcndhcmRpbmcgbWV0aG9k
IG5hbWVkCisgICAgICAgIGluc2VydCB3aGljaCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUg
cGF0Y2gsIG9uY2UgYWxsIFdURiBjbGllbnRzIGhhdmUgbW92ZWQKKyAgICAgICAgb3ZlciB0byB0
aGUgbmV3IG1ldGhvZCBuYW1lLgorCisgICAgICAgICogd3RmL1ZlY3Rvci5oOgorICAgICAgICAo
V1RGOjpWZWN0b3I6Omluc2VydCk6IEZvcndhcmRzIHRvIGluc2VydEF0KCkuCisgICAgICAgIChX
VEY6OlZlY3Rvcjo6aW5zZXJ0QXQpOiBSZW5hbWVkIGZyb20gKHRoZSBwcmV2aW91cykgaW5zZXJ0
KCkuCisgICAgICAgIChXVEY6OlZlY3Rvcjo6aW5zZXJ0VmVjdG9yKTogVXNlIGluc2VydEF0KCku
CisKIDIwMTQtMTAtMDIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIENsZWFuIHVwOiBNb3ZlIFhQQyBmb3J3YXJkIGRlY2xhcmF0aW9ucyBpbiBKYXZhU2NyaXB0
Q29yZSB0byBXVEYgU1BJIHdyYXBwZXIgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDUxM2ZiNTQ3YjIx
MmM0NDM5NjMyNjkzOGE2ZmM3ZDgzNmRiYWM0OC4uMjI2NjcwYTViZTg5ZmVhYzQ2MWUzN2ZkODll
YjI5MzU0MGJjMWRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE0LTEwLTAzICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW5zZXJ0
IGl0ZXJhdG9ycyBmb3IgVmVjdG9ycy4gW1BhcnQgMV0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzM3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBXVEY6OlZlY3Rvcjo6aW5zZXJ0KCkgLT4g
aW5zZXJ0QXQoKS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW1UaW1lbGluZTo6aW5zZXJ0RXZl
bnQpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKToKKyAgICAgICAgKiBjc3MvQ1NTR3JvdXBp
bmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVsZTo6aW5zZXJ0UnVs
ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJWYWx1ZUxpc3Q6Omluc2VydFZhbHVlQXQpOgorICAgICAgICAqIGNzcy9DU1NT
dHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6Omluc2VydFJ1
bGUpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ZhbHVlTGlzdDo6cHJlcGVuZCk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVHcm91cDo6d3JhcHBlckluc2VydFJ1bGUpOgorICAgICAg
ICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVT
aGVldENvbnRlbnRzOjp3cmFwcGVySW5zZXJ0UnVsZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50
TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI6OmFkZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI6OnJlbW92ZU1hcmtlcnMpOgorICAgICAgICAqIGhpc3RvcnkvQmFja0ZvcndhcmRM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbSk6Cisg
ICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1FbGVtZW50OjpyZWdpc3RlckZvcm1FbGVtZW50KToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtYXR0aW5nRWxlbWVudExpc3Q6OnN3YXBUbyk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRp
b1RyYWNrTGlzdC5jcHA6CisgICAgICAgIChBdWRpb1RyYWNrTGlzdDo6YXBwZW5kKToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlTGlzdDo6YWRkKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0xp
c3QuY3BwOgorICAgICAgICAoVGV4dFRyYWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFZpZGVvVHJhY2tMaXN0OjphcHBl
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjphZGRJbnNwZWN0ZWRPYmplY3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVUZXh0RWRpdG9yOjpkaXNhYmxlUHJvcGVydHkpOgorICAg
ICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwcmVmZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSk6
CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tM
aXN0Rm9yTWVudSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2ls
bEVuZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dEN1cnJlbnRTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0OjppbnNlcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBdEluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQmVsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtVGltZVJhbmdlczo6YWRkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TVkdHbHlw
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJzV2l0aEFyYWJpY0Zvcm0pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHZW9t
ZXRyeU1hcDo6cHVzaFZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVs
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVz
dWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGU6OnNwbGl0Q29sdW1uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlv
bjo6c3BsaXRDb2x1bW4pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVMaXN0OjppbnNlcnQpOgorICAgICAgICAq
IHJlcGxheS9SZXBsYXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheVNlc3Np
b246Omluc2VydFNlZ21lbnQpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9w
ZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5OjppbnNlcnRJdGVtQmVm
b3JlVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6aW5zZXJ0SXRl
bUJlZm9yZVZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKiB4bWwvWFBhdGhQYXRoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpMb2NhdGlvblBhdGg6OnByZXBlbmRTdGVwKToKKwog
MjAxNC0wOS0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWVkaWFdW01hY10gQnVmZmVyZWQgcmFuZ2Ugc2xpZGVzIGFyb3VuZCBhcyB5b3UgcmVzaXplIGEg
d2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNGIxMDlhYjQ1MzE3MmE5ZDc5OGIxNDY4YjRkYzEz
ZmYyMmFiNTNhZi4uOGVjZTRhMTY2YmFkNTVlZTlkZDIyZGY3MTA0MzI1ZTllOTc0NTBjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE0LTEwLTAzICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW5zZXJ0IGl0ZXJhdG9ycyBm
b3IgVmVjdG9ycy4gW1BhcnQgMV0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNzM3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbmFtZSBXVEY6OlZlY3Rvcjo6aW5zZXJ0KCkgLT4gaW5zZXJ0QXQoKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAo
cmVnRXhwRm9yTGFiZWxzKToKKwogMjAxNC0xMC0wMSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUu
Y29tPgogCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzczMDg+IFdlYktpdCBzaG91
bGQgYnVpbGQgb24gT1MgWCBZb3NlbWl0ZSBmb3IgZXh0ZXJuYWwgdXNlcnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA1ZGMxMzJlMDI3MjYyNWZlOWQ3ZmRjMGMxOGI2MTViYmU5YWRjODlkLi42YjY1MjEwZDkyYWU3
ZTgxZjRkZTllNWY3YWM3NjFlNjRjZGUwZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTQtMTAtMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAg
U3VwcG9ydCBpbnNlcnQgaXRlcmF0b3JzIGZvciBWZWN0b3JzLiBbUGFydCAxXQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3Mzc0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFdURjo6VmVjdG9y
OjppbnNlcnQoKSAtPiBpbnNlcnRBdCgpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tG
b3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YWRk
SXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OmxlYXN0Q29tbW9uQW5jZXN0b3JMYXllcik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6Omluc2VydFN1YmxheWVyKToKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZXBsYWNlU3VibGF5ZXIpOgor
CiAyMDE0LTEwLTAyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDbGVhbiB1cDogTW92ZSBYUEMgZm9yd2FyZCBkZWNsYXJhdGlvbnMgaW4gSmF2YVNjcmlwdENv
cmUgdG8gV1RGIFNQSSB3cmFwcGVyIGhlYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDgxODdlOThkZjYxZDczNjUy
OTIzYWRjMmEwODBiNmIxM2JhZDYyYTIuLmVmMjBkMWY2YTZjZDg1NjMzZTRkNTYxYzE4ZGY0NzAy
MDIwYjZmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKQEAgLTQ2OSw3ICs0NjksNyBAQCBDYWxsQXJndW1lbnRzOjpDYWxs
QXJndW1lbnRzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIEFyZ3VtZW50c05vZGUqIGFy
Z3VtZQogICAgIH0KICAgICAKICAgICB3aGlsZSAoc3RhY2tPZmZzZXQoKSAlIHN0YWNrQWxpZ25t
ZW50UmVnaXN0ZXJzKCkpIHsKLSAgICAgICAgbV9hcmd2Lmluc2VydCgwLCBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCkpOworICAgICAgICBtX2FyZ3YuaW5zZXJ0QXQoMCwgZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpKTsKICAgICAgICAgbV9wYWRkaW5nKys7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAppbmRleCA2NjNiMzM3Njg2
MzI5ZTlkZTM2MGI4NWI3OWU1MzlmMmU4YjEwODZkLi43ZjllMjdhZGUxZjM1NDUyN2UxMDQ1ODNk
NzdmMTczM2Y4MDk5YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcApAQCAtNjU4NSw5ICs2NTg1LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNhbGxTdGFja21hcChPU1JFeGl0JiBleGl0LCBFeGl0QXJndW1lbnRMaXN0JiBhcmd1bWVudHMp
CiAgICAgewogICAgICAgICBleGl0Lm1fc3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMrKzsKLSAg
ICAgICAgYXJndW1lbnRzLmluc2VydCgwLCBtX291dC5jb25zdEludDMyKE1hY3JvQXNzZW1ibGVy
OjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpKTsKLSAgICAgICAgYXJndW1lbnRzLmluc2VydCgw
LCBtX291dC5jb25zdEludDY0KGV4aXQubV9zdGFja21hcElEKSk7Ci0gICAgICAgIAorICAgICAg
ICBhcmd1bWVudHMuaW5zZXJ0QXQoMCwgbV9vdXQuY29uc3RJbnQzMihNYWNyb0Fzc2VtYmxlcjo6
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKSk7CisgICAgICAgIGFyZ3VtZW50cy5pbnNlcnRBdCgw
LCBtX291dC5jb25zdEludDY0KGV4aXQubV9zdGFja21hcElEKSk7CisKICAgICAgICAgbV9vdXQu
Y2FsbChtX291dC5zdGFja21hcEludHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAgIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCBiZTczMjdk
MWNjNTYzYjE1NjljYWIyZWI4NmQ3MmM5N2NkOGZhM2I2Li4yYzkwOTI3YzBjZGI3MDM0MDljMWU0
N2JlOThmZGVkYzUxODEzOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJyUGF0dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHBvcyA9
PSBtYXRjaGVzLnNpemUoKSkKICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKGNoKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbWF0Y2hlcy5pbnNlcnQocG9zLCBjaCk7CisgICAgICAgICAg
ICBtYXRjaGVzLmluc2VydEF0KHBvcywgY2gpOwogICAgIH0KIAogICAgIHZvaWQgYWRkU29ydGVk
UmFuZ2UoVmVjdG9yPENoYXJhY3RlclJhbmdlPiYgcmFuZ2VzLCBVQ2hhciBsbywgVUNoYXIgaGkp
CkBAIC0yMjgsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmFuZ2Vz
W2ldLmJlZ2luID0gbG87CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgcmFuZ2VzLmluc2VydChpLCBDaGFyYWN0ZXJSYW5nZShs
bywgaGkpKTsKKyAgICAgICAgICAgICAgICByYW5nZXMuaW5zZXJ0QXQoaSwgQ2hhcmFjdGVyUmFu
Z2UobG8sIGhpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgLy8gT2theSwgc2luY2Ugd2UgZGlkbid0IGhpdCB0aGUgbGFzdCBjYXNlLCB0aGUg
ZW5kIG9mIHRoZSBuZXcgcmFuZ2UgaXMgZGVmaW5pdGVseSBhdCBvciBhZnRlciB0aGUgYmVnaW5p
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYv
VmVjdG9yLmgKaW5kZXggZjMxMzI5ZTM0YjM3YjM4OWNiODk2MDkwZjM1MDI5OWE0MWRjOWI0MC4u
OWZjZmI0N2Q2MDdjNTIwODE1OTdiZTIxZDVlYWE1NTg3M2NiNjAyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKQEAgLTY4
OCw4ICs2ODgsMTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBv
dGhlckNhcGFjaXR5PiB2b2lkIGFwcGVuZFZlY3Rvcihjb25zdCBWZWN0b3I8VSwgb3RoZXJDYXBh
Y2l0eT4mKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHRyeUFwcGVuZChjb25zdCBV
Kiwgc2l6ZV90KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgaW5zZXJ0KHNpemVf
dCBwb3NpdGlvbiwgY29uc3QgVSosIHNpemVfdCk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
dm9pZCBpbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBVJiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHZvaWQgaW5zZXJ0QXQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiwgc2l6ZV90KTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIGluc2VydEF0KHNpemVfdCBwb3NpdGlvbiwgVSYm
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIGluc2VydChzaXplX3QgcG9zaXRpb24s
IGNvbnN0IFUqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkgeyBpbnNlcnRBdChwb3NpdGlvbiwgZGF0
YSwgZGF0YVNpemUpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBpbnNlcnQoc2l6
ZV90IHBvc2l0aW9uLCBVJiYgdmFsdWUpIHsgaW5zZXJ0QXQocG9zaXRpb24sIHN0ZDo6Zm9yd2Fy
ZDxVPih2YWx1ZSkpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGM+IHZvaWQg
aW5zZXJ0VmVjdG9yKHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVmVjdG9yPFUsIGM+Jik7CiAKICAg
ICB2b2lkIHJlbW92ZShzaXplX3QgcG9zaXRpb24pOwpAQCAtMTEwMSw3ICsxMTAzLDcgQEAgaW5s
aW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjphcHBl
bmRWZWN0b3IoY29uc3QgVmVjdG8KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+IHRlbXBsYXRlPHR5cGVuYW1l
IFU+Ci12b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6aW5z
ZXJ0KHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVSogZGF0YSwgc2l6ZV90IGRhdGFTaXplKQordm9p
ZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj46Omluc2VydEF0KHNp
emVfdCBwb3NpdGlvbiwgY29uc3QgVSogZGF0YSwgc2l6ZV90IGRhdGFTaXplKQogewogICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHBvc2l0aW9uIDw9IHNpemUoKSk7CiAgICAg
c2l6ZV90IG5ld1NpemUgPSBtX3NpemUgKyBkYXRhU2l6ZTsKQEAgLTExMTgsNyArMTEyMCw3IEBA
IHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjppbnNlcnQo
c2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVCiB9CiAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVtcGxhdGU8dHlw
ZW5hbWUgVT4KLWlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyPjo6aW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgVSYmIHZhbHVlKQoraW5saW5lIHZvaWQg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjppbnNlcnRBdChzaXpl
X3QgcG9zaXRpb24sIFUmJiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihwb3NpdGlvbiA8PSBzaXplKCkpOwogCkBAIC0xMTM3LDcgKzExMzksNyBAQCBpbmxp
bmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj46Omluc2Vy
dChzaXplX3QgcG9zaXRpb24sCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6
ZV90IGM+CiBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlcj46Omluc2VydFZlY3RvcihzaXplX3QgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxVLCBjPiYg
dmFsKQogewotICAgIGluc2VydChwb3NpdGlvbiwgdmFsLmJlZ2luKCksIHZhbC5zaXplKCkpOwor
ICAgIGluc2VydEF0KHBvc2l0aW9uLCB2YWwuYmVnaW4oKSwgdmFsLnNpemUoKSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZs
b3dIYW5kbGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtVGltZWxpbmUuY3BwCmluZGV4IDFjN2U0ZTVmOGJlOTNkYjA5NzIxODIxNDNmNjZj
NzA2ODYyOWJiYTcuLjJhNjlhNDkyODFhYmNjNjBiMmIyNTg4ZWRjYmMzNTFkYWI2MGI5M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1U
aW1lbGluZS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBBdWRpb1BhcmFtVGltZWxpbmU6Omlu
c2VydEV2ZW50KGNvbnN0IFBhcmFtRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCi0gICAgbV9ldmVudHMuaW5zZXJ0KGksIGV2ZW50KTsKKyAgICBtX2V2ZW50cy5pbnNl
cnRBdChpLCBldmVudCk7CiB9CiAKIHZvaWQgQXVkaW9QYXJhbVRpbWVsaW5lOjpjYW5jZWxTY2hl
ZHVsZWRWYWx1ZXMoZmxvYXQgc3RhcnRUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuY3BwCmluZGV4IGVhM2FmZDdkODE0NmRjYTQ2MzI1MWY5MzMwYWMzMGM5YThhMDE5Yzku
LjE5MmQ1ZjVhNDViOGUwZmMyMmE2MjE0MzYwNmJkNDM1YjM0NjVlZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIENTU0dy
YWRpZW50VmFsdWU6OmFkZFN0b3BzKEdyYWRpZW50JiBncmFkaWVudCwgY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRAogICAgICAgICB9CiAKICAgICAgICAgc3RvcHMucmVtb3ZlKHgpOwotICAg
ICAgICBzdG9wcy5pbnNlcnQoeCwgbmV3U3RvcHMsIDkpOworICAgICAgICBzdG9wcy5pbnNlcnRB
dCh4LCBuZXdTdG9wcywgOSk7CiAgICAgICAgIHggKz0gOTsKICAgICB9CiAKQEAgLTM5MCw3ICsz
OTAsNyBAQCB2b2lkIENTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKEdyYWRpZW50JiBncmFkaWVu
dCwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRAogICAgICAgICAgICAgICAgIHdoaWxlICh0
cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEdyYWRpZW50U3RvcCBuZXdTdG9wID0gc3RvcHNb
b3JpZ2luYWxGaXJzdFN0b3BJbmRleCArIHNyY1N0b3BPcmRpbmFsXTsKICAgICAgICAgICAgICAg
ICAgICAgbmV3U3RvcC5vZmZzZXQgPSBjdXJyT2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBz
dG9wcy5pbnNlcnQoMCwgbmV3U3RvcCk7CisgICAgICAgICAgICAgICAgICAgIHN0b3BzLmluc2Vy
dEF0KDAsIG5ld1N0b3ApOwogICAgICAgICAgICAgICAgICAgICArK29yaWdpbmFsRmlyc3RTdG9w
SW5kZXg7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyT2Zmc2V0IDwgMCkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyb3VwaW5nUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNw
cAppbmRleCA2NDhmYzIyOGQ3MmRmNzQ2YWJiNjlmYzZlYzg2NTA2MWQ0ZjI5MDU5Li5iYjdmMzlk
NWM0NzA4ODkxNDc0NjNkNmFhZDU4ODNiODYyMzlkMWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JvdXBpbmdSdWxlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB1bnNpZ25lZCBDU1NHcm91cGluZ1J1
bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwg
RQogCiAgICAgbV9ncm91cFJ1bGUtPndyYXBwZXJJbnNlcnRSdWxlKGluZGV4LCBuZXdSdWxlLnJl
bGVhc2VOb25OdWxsKCkpOwogCi0gICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLmluc2VydChp
bmRleCwgUmVmUHRyPENTU1J1bGU+KCkpOworICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5p
bnNlcnRBdChpbmRleCwgUmVmUHRyPENTU1J1bGU+KCkpOwogICAgIHJldHVybiBpbmRleDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAppbmRleCA3Mjg4ODY1NThlZjBh
MGU3ZWM3NDAyYjhlZDY4ZGNhZTRjNTczYThlLi44NTI0Y2JiYjg0OTgyMzUwMDI0ZTRjMGFiNDZl
OTgzZmM3M2Q0YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFs
dWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcApAQCAt
NTIsNyArNTIsNyBAQCB2b2lkIENTU1BhcnNlclZhbHVlTGlzdDo6YWRkVmFsdWUoY29uc3QgQ1NT
UGFyc2VyVmFsdWUmIHYpCiAKIHZvaWQgQ1NTUGFyc2VyVmFsdWVMaXN0OjppbnNlcnRWYWx1ZUF0
KHVuc2lnbmVkIGksIGNvbnN0IENTU1BhcnNlclZhbHVlJiB2KQogewotICAgIG1fdmFsdWVzLmlu
c2VydChpLCB2KTsKKyAgICBtX3ZhbHVlcy5pbnNlcnRBdChpLCB2KTsKIH0KIAogdm9pZCBDU1NQ
YXJzZXJWYWx1ZUxpc3Q6OmRlbGV0ZVZhbHVlQXQodW5zaWduZWQgaSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcAppbmRleCBhYWQ2ZTU4OWZmMTUxY2I2MjY2NmQ2OWU0YmVmMzdjNGQ2
NDM0YzVlLi4zZDc5Y2MzYWY2YzlkM2MxNjJiYzc1MjlhZWFmYTExOTg4MDkyYWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgdW5zaWduZWQg
Q1NTU3R5bGVTaGVldDo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2ln
bmVkIGluZGV4LCBFeGMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfSAgICAgICAgCiAgICAgaWYg
KCFtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuaXNFbXB0eSgpKQotICAgICAgICBtX2NoaWxkUnVs
ZUNTU09NV3JhcHBlcnMuaW5zZXJ0KGluZGV4LCBSZWZQdHI8Q1NTUnVsZT4oKSk7CisgICAgICAg
IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5pbnNlcnRBdChpbmRleCwgUmVmUHRyPENTU1J1bGU+
KCkpOwogCiAgICAgcmV0dXJuIGluZGV4OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCmlu
ZGV4IDAxMjc5MjRiZTRmMWRiZWQ3MjFjZTg2MGFhMjI2ZjQ2ZWRlYzFkZmMuLmU2OWUwMmNmOThi
ODU2NDFkODczODBjNGVhNzVkZmM0NWUzMWVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0
LmgKQEAgLTkwLDcgKzkwLDcgQEAgaW5saW5lIHZvaWQgQ1NTVmFsdWVMaXN0OjphcHBlbmQoUGFz
c1JlZjxDU1NWYWx1ZT4gdmFsdWUpCiAKIGlubGluZSB2b2lkIENTU1ZhbHVlTGlzdDo6cHJlcGVu
ZChQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZSkKIHsKLSAgICBtX3ZhbHVlcy5pbnNlcnQoMCwgV1RG
Ojptb3ZlKHZhbHVlKSk7CisgICAgbV92YWx1ZXMuaW5zZXJ0QXQoMCwgV1RGOjptb3ZlKHZhbHVl
KSk7CiB9CiAKIC8vIE9iamVjdHMgb2YgdGhpcyBjbGFzcyBhcmUgaW50ZW5kZWQgdG8gYmUgc3Rh
Y2stYWxsb2NhdGVkIGFuZCBzY29wZWQgdG8gYSBzaW5nbGUgZnVuY3Rpb24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuY3BwCmluZGV4IDgzNzQxYTczZWNhNzJjOWVlNzc3NjMxOWRkYjk3OGQwNDNiMTQy
ODQuLjBjMzhlNTk5NzM3ZjA5NzZkNmI5M2JjMTY2ODM2MDY2NzIzNzI5NDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGUuY3BwCkBAIC0zMjYsNyArMzI2LDcgQEAgU3R5bGVSdWxlR3JvdXA6OlN0eWxl
UnVsZUdyb3VwKGNvbnN0IFN0eWxlUnVsZUdyb3VwJiBvKQogCiB2b2lkIFN0eWxlUnVsZUdyb3Vw
Ojp3cmFwcGVySW5zZXJ0UnVsZSh1bnNpZ25lZCBpbmRleCwgUGFzc1JlZjxTdHlsZVJ1bGVCYXNl
PiBydWxlKQogewotICAgIG1fY2hpbGRSdWxlcy5pbnNlcnQoaW5kZXgsIFdURjo6bW92ZShydWxl
KSk7CisgICAgbV9jaGlsZFJ1bGVzLmluc2VydEF0KGluZGV4LCBXVEY6Om1vdmUocnVsZSkpOwog
fQogICAgIAogdm9pZCBTdHlsZVJ1bGVHcm91cDo6d3JhcHBlclJlbW92ZVJ1bGUodW5zaWduZWQg
aW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCmluZGV4IGQw
NThlNmRlYTQwN2I3Yzk3ZDRjM2VjNzgyYjAzNDMxZTNkNmYzNmEuLmYxZjZhNGRmYTQ0N2RmZTNh
MDAyZDNhZjIwMjcyNDlmMDRmYjQ2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0Q29udGVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0
Q29udGVudHMuY3BwCkBAIC0yMjMsNyArMjIzLDcgQEAgYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6
OndyYXBwZXJJbnNlcnRSdWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gcnVsZSwgdW5zaWcK
ICAgICAgICAgLy8gSW5zZXJ0aW5nIG5vbi1pbXBvcnQgcnVsZSBiZWZvcmUgQGltcG9ydCBpcyBu
b3QgYWxsb3dlZC4KICAgICAgICAgaWYgKCFydWxlLT5pc0ltcG9ydFJ1bGUoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9pbXBvcnRSdWxlcy5pbnNlcnQoY2hpbGRWZWN0
b3JJbmRleCwgc3RhdGljX2Nhc3Q8U3R5bGVSdWxlSW1wb3J0Kj4ocnVsZS5nZXQoKSkpOworICAg
ICAgICBtX2ltcG9ydFJ1bGVzLmluc2VydEF0KGNoaWxkVmVjdG9ySW5kZXgsIHN0YXRpY19jYXN0
PFN0eWxlUnVsZUltcG9ydCo+KHJ1bGUuZ2V0KCkpKTsKICAgICAgICAgbV9pbXBvcnRSdWxlc1tj
aGlsZFZlY3RvckluZGV4XS0+c2V0UGFyZW50U3R5bGVTaGVldCh0aGlzKTsKICAgICAgICAgbV9p
bXBvcnRSdWxlc1tjaGlsZFZlY3RvckluZGV4XS0+cmVxdWVzdFN0eWxlU2hlZXQoKTsKICAgICAg
ICAgLy8gRklYTUU6IFN0eWxlc2hlZXQgZG9lc24ndCBhY3R1YWxseSBjaGFuZ2UgbWVhbmluZ2Z1
bGx5IGJlZm9yZSB0aGUgaW1wb3J0ZWQgc2hlZXRzIGFyZSBsb2FkZWQuCkBAIC0yMzQsNyArMjM0
LDcgQEAgYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6OndyYXBwZXJJbnNlcnRSdWxlKFBhc3NSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4gcnVsZSwgdW5zaWcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGNoaWxkVmVjdG9ySW5kZXggLT0gbV9pbXBvcnRSdWxlcy5zaXplKCk7CiAgCi0gICAgbV9jaGls
ZFJ1bGVzLmluc2VydChjaGlsZFZlY3RvckluZGV4LCBydWxlKTsKKyAgICBtX2NoaWxkUnVsZXMu
aW5zZXJ0QXQoY2hpbGRWZWN0b3JJbmRleCwgcnVsZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5k
ZXggNDc0ODE2NTI2NzJiNTdmMDlmMDkzZTNjMmE0NjEyNGEwOTIzZjUwNy4uOTg3ZjZlMjNhM2Ji
NGI1ODBkMGU0MDc4ZTI2YmVmZmFjMzllNTJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKE5vZGUqIG5vZGUsIGNvbnN0IERvY3Vt
ZW50TWFya2VyJiBuZXdNYQogICAgICAgICAgICAgICAgIGorKzsKICAgICAgICAgfQogICAgICAg
ICAvLyBBdCB0aGlzIHBvaW50IGkgcG9pbnRzIHRvIHRoZSBub2RlIGJlZm9yZSB3aGljaCB3ZSB3
YW50IHRvIGluc2VydC4KLSAgICAgICAgbGlzdC0+aW5zZXJ0KGksIFJlbmRlcmVkRG9jdW1lbnRN
YXJrZXIodG9JbnNlcnQpKTsKKyAgICAgICAgbGlzdC0+aW5zZXJ0QXQoaSwgUmVuZGVyZWREb2N1
bWVudE1hcmtlcih0b0luc2VydCkpOwogICAgIH0KIAogICAgIC8vIHJlcGFpbnQgdGhlIGFmZmVj
dGVkIG5vZGUKQEAgLTMyNSwxNCArMzI1LDE0IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyOjpyZW1vdmVNYXJrZXJzKE5vZGUqIG5vZGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpCiAg
ICAgICAgIGlmIChzdGFydE9mZnNldCA+IG1hcmtlci5zdGFydE9mZnNldCgpKSB7CiAgICAgICAg
ICAgICBEb2N1bWVudE1hcmtlciBuZXdMZWZ0ID0gbWFya2VyOwogICAgICAgICAgICAgbmV3TGVm
dC5zZXRFbmRPZmZzZXQoc3RhcnRPZmZzZXQpOwotICAgICAgICAgICAgbGlzdC0+aW5zZXJ0KGks
IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIobmV3TGVmdCkpOworICAgICAgICAgICAgbGlzdC0+aW5z
ZXJ0QXQoaSwgUmVuZGVyZWREb2N1bWVudE1hcmtlcihuZXdMZWZ0KSk7CiAgICAgICAgICAgICAv
LyBpIG5vdyBwb2ludHMgdG8gdGhlIG5ld2x5LWluc2VydGVkIG5vZGUsIGJ1dCB3ZSB3YW50IHRv
IHNraXAgdGhhdCBvbmUKICAgICAgICAgICAgIGkrKzsKICAgICAgICAgfQogICAgICAgICBpZiAo
bWFya2VyLmVuZE9mZnNldCgpID4gZW5kT2Zmc2V0KSB7CiAgICAgICAgICAgICBEb2N1bWVudE1h
cmtlciBuZXdSaWdodCA9IG1hcmtlcjsKICAgICAgICAgICAgIG5ld1JpZ2h0LnNldFN0YXJ0T2Zm
c2V0KGVuZE9mZnNldCk7Ci0gICAgICAgICAgICBsaXN0LT5pbnNlcnQoaSwgUmVuZGVyZWREb2N1
bWVudE1hcmtlcihuZXdSaWdodCkpOworICAgICAgICAgICAgbGlzdC0+aW5zZXJ0QXQoaSwgUmVu
ZGVyZWREb2N1bWVudE1hcmtlcihuZXdSaWdodCkpOwogICAgICAgICAgICAgLy8gaSBub3cgcG9p
bnRzIHRvIHRoZSBuZXdseS1pbnNlcnRlZCBub2RlLCBidXQgd2Ugd2FudCB0byBza2lwIHRoYXQg
b25lCiAgICAgICAgICAgICBpKys7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
QmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCAxZTVlNzc0ZTdjOTQ0MTNiYTk2ZTE5ZmNjZWIwNTIz
OThjMGU3MmZiLi5iYTg5ZmVmNjAyY2FkMWJiMWVhYWYwMjYxMDEyZTZkMTk5NzJjMTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwCkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+
IHBycEl0ZW0pCiAgICAgfQogCiAgICAgbV9lbnRyeUhhc2guYWRkKHBycEl0ZW0uZ2V0KCkpOwot
ICAgIG1fZW50cmllcy5pbnNlcnQobV9jdXJyZW50ICsgMSwgcHJwSXRlbSk7CisgICAgbV9lbnRy
aWVzLmluc2VydEF0KG1fY3VycmVudCArIDEsIHBycEl0ZW0pOwogICAgIG1fY3VycmVudCsrOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggYjljMzdlMDVi
MGE4NGUzY2U0NTliZGI0ZjE5ZjIzZTBmMWQyMTNmZS4uNGE1ZDYwNzgyZThmN2I4NGM3MTMzNTUw
NWQwNmMzNjljYjdlMjU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cApAQCAtNjAzLDcgKzYwMyw3IEBAIHVuc2lnbmVkIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1l
bnRJbmRleChGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGFzc29jaWF0ZWRFbGVtCiAKIHZvaWQgSFRN
TEZvcm1FbGVtZW50OjpyZWdpc3RlckZvcm1FbGVtZW50KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCog
ZSkKIHsKLSAgICBtX2Fzc29jaWF0ZWRFbGVtZW50cy5pbnNlcnQoZm9ybUVsZW1lbnRJbmRleChl
KSwgZSk7CisgICAgbV9hc3NvY2lhdGVkRWxlbWVudHMuaW5zZXJ0QXQoZm9ybUVsZW1lbnRJbmRl
eChlKSwgZSk7CiB9CiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZW1vdmVGb3JtRWxlbWVudChG
b3JtQXNzb2NpYXRlZEVsZW1lbnQqIGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCmluZGV4IGJkMDdhYjFlMGQ2
YTMyYWM2ZTVmMzNlNDgwNjE0NzNlZDQzNTVlMzUuLjAwOTU5MTdhNTdjMWUwNTlkNzFiNDVhOWI4
MTBkZDY2ZjBiMDY3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQg
SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6c3dhcFRvKEVsZW1lbnQqIG9sZEVsZW1lbnQsIFBh
c3NSZWZQdHI8SFRNTFN0YWNrCiAgICAgfQogICAgIHNpemVfdCBpbmRleCA9IGJvb2ttYXJrLm1h
cmsoKSAtIGZpcnN0KCk7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5k
ZXggPCBzaXplKCkpOwotICAgIG1fZW50cmllcy5pbnNlcnQoaW5kZXggKyAxLCBuZXdJdGVtKTsK
KyAgICBtX2VudHJpZXMuaW5zZXJ0QXQoaW5kZXggKyAxLCBuZXdJdGVtKTsKICAgICByZW1vdmUo
b2xkRWxlbWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5jcHAKaW5kZXggNWVkYWQ4ZWFhMGE2OWY5MDA1MmZiMGM2MjczNDA0ZTU5ZDFhYjRiZS4u
Nzg5NzA1OGI0YmIyN2IzZmU4M2M5MmExMTExOTdjZDBhOTA1MWNhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9p
ZCBBdWRpb1RyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8QXVkaW9UcmFjaz4gcHJwVHJhY2sp
CiAgICAgICAgIGlmIChvdGhlclRyYWNrLT5pbmJhbmRUcmFja0luZGV4KCkgPiBpbmRleCkKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBtX2luYmFuZFRyYWNrcy5pbnNlcnQoaW5zZXJ0
aW9uSW5kZXgsIHRyYWNrKTsKKyAgICBtX2luYmFuZFRyYWNrcy5pbnNlcnRBdChpbnNlcnRpb25J
bmRleCwgdHJhY2spOwogCiAKICAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0
cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbWVkaWFFbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5jcHAKaW5kZXggZTg1NjZjMjU5N2VmODg5
YTBmYmIyN2U5ZTIzNGY5MjIzNjA5YzY1Yy4uYmVlMzUyMjYyMzBlNTBlNWU1OTdmZTAyNjllNmE0
MTcyMzRmNDY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZUxpc3QuY3BwCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgVGV4dFRyYWNrQ3VlTGlzdDo6YWRkKFBh
c3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBwcnBDdWUsIHNpemVfdCBzdGFydCwgc2l6ZV90CiAgICAg
ICAgIGlmICghbV9saXN0LmlzRW1wdHkoKSAmJiAoc3RhcnQgPiAwKSAmJiAobV9saXN0W3N0YXJ0
IC0gMV0uZ2V0KCkgPT0gY3VlLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBtX2xpc3QuaW5zZXJ0KHN0YXJ0LCBjdWUpOworICAgICAgICBtX2xpc3QuaW5zZXJ0
QXQoc3RhcnQsIGN1ZSk7CiAgICAgICAgIGludmFsaWRhdGVDdWVJbmRleGVzKHN0YXJ0KTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5jcHAKaW5kZXggZDExY2YzY2M2NjBmZDA5NGFmMDUzZDRmZjVmMjY1OGI5OWQ1
NjRjNi4uOWVhNjgwYjkyMTM1ZjIxYjIwMzBjNzFmOTczZDViMzk5ZTlkMTZhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCkBAIC0xNzksMTEgKzE3OSwx
MSBAQCB2b2lkIFRleHRUcmFja0xpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPFRleHRUcmFjaz4gcHJw
VHJhY2spCiAgICAgZWxzZSBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJh
Y2tFbGVtZW50KSB7CiAgICAgICAgIC8vIEluc2VydCB0cmFja3MgYWRkZWQgZm9yIDx0cmFjaz4g
ZWxlbWVudCBpbiB0cmVlIG9yZGVyLgogICAgICAgICBzaXplX3QgaW5kZXggPSBzdGF0aWNfY2Fz
dDxMb2FkYWJsZVRleHRUcmFjayo+KHRyYWNrLmdldCgpKS0+dHJhY2tFbGVtZW50SW5kZXgoKTsK
LSAgICAgICAgbV9lbGVtZW50VHJhY2tzLmluc2VydChpbmRleCwgdHJhY2spOworICAgICAgICBt
X2VsZW1lbnRUcmFja3MuaW5zZXJ0QXQoaW5kZXgsIHRyYWNrKTsKICAgICB9IGVsc2UgaWYgKHRy
YWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkgewogICAgICAgICAvLyBJbnNl
cnQgdHJhY2tzIGFkZGVkIGZvciBpbi1iYW5kIGluIHRoZSBtZWRpYSBmaWxlIG9yZGVyLgogICAg
ICAgICBzaXplX3QgaW5kZXggPSBzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2sqPih0cmFjay5n
ZXQoKSktPmluYmFuZFRyYWNrSW5kZXgoKTsKLSAgICAgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0
KGluZGV4LCB0cmFjayk7CisgICAgICAgIG1faW5iYW5kVHJhY2tzLmluc2VydEF0KGluZGV4LCB0
cmFjayk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCmluZGV4IDM3ZGVlY2Y4
OWMyMzAwOTdhZDczMjAwMjY3Mzk2N2VhYjNiOGRjMzIuLjhjYjY4Mzk5MWNkZGFkNGQ1ZTc4ZDNj
OWMzYzJmYzgyYmUxYzgxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFja0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFja0xpc3QuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgVmlkZW9UcmFja0xpc3Q6OmFwcGVu
ZChQYXNzUmVmUHRyPFZpZGVvVHJhY2s+IHBycFRyYWNrKQogCiAgICAgLy8gSW5zZXJ0IHRyYWNr
cyBpbiB0aGUgbWVkaWEgZmlsZSBvcmRlci4KICAgICBzaXplX3QgaW5kZXggPSB0cmFjay0+aW5i
YW5kVHJhY2tJbmRleCgpOwotICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChpbmRleCwgdHJhY2sp
OworICAgIG1faW5iYW5kVHJhY2tzLmluc2VydEF0KGluZGV4LCB0cmFjayk7CiAKICAgICBBU1NF
UlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbWVk
aWFFbGVtZW50KCkpOwogICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApp
bmRleCA5NDZhOTFmYWNmZjkxODVhZTFkMDg1ZDY4Y2EwMmM4MzgwY2I1MWJmLi5hNTM3ODZhYmVh
OWNiNDczMzU2N2MzZjkwMGI0ZjMyYmNiNTE3MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIENvbW1hbmRMaW5lQVBJSG9zdDo6SW5zcGVjdGFibGVPYmplY3Q6
OmdldChKU0M6OkV4ZWNTdGF0CiAKIHZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjphZGRJbnNwZWN0
ZWRPYmplY3Qoc3RkOjp1bmlxdWVfcHRyPENvbW1hbmRMaW5lQVBJSG9zdDo6SW5zcGVjdGFibGVP
YmplY3Q+IG9iamVjdCkKIHsKLSAgICBtX2luc3BlY3RlZE9iamVjdHMuaW5zZXJ0KDAsIFdURjo6
bW92ZShvYmplY3QpKTsKKyAgICBtX2luc3BlY3RlZE9iamVjdHMuaW5zZXJ0QXQoMCwgV1RGOjpt
b3ZlKG9iamVjdCkpOwogICAgIHdoaWxlIChtX2luc3BlY3RlZE9iamVjdHMuc2l6ZSgpID4gNSkK
ICAgICAgICAgbV9pbnNwZWN0ZWRPYmplY3RzLnJlbW92ZUxhc3QoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAKaW5k
ZXggNTEzZGE4MzM2ZTRhMThlYWU4OGIxNzliMjc3NzJjNWY0ODAyOWQ0Ni4uMDEzYmNjMTc4OTJi
Y2NkNTJlMjJmZDk1ZmE1NWNjM2M3YzRkN2EyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlVGV4dEVkaXRvci5jcHAKQEAgLTE5NCw3ICsxOTQs
NyBAQCB2b2lkIEluc3BlY3RvclN0eWxlVGV4dEVkaXRvcjo6ZGlzYWJsZVByb3BlcnR5KHVuc2ln
bmVkIGluZGV4KQogICAgIGlmIChpbnNlcnRpb25JbmRleCA9PSBVSU5UX01BWCkKICAgICAgICAg
bV9kaXNhYmxlZFByb3BlcnRpZXMtPmFwcGVuZChkaXNhYmxlZFByb3BlcnR5KTsKICAgICBlbHNl
IHsKLSAgICAgICAgbV9kaXNhYmxlZFByb3BlcnRpZXMtPmluc2VydChpbnNlcnRpb25JbmRleCwg
ZGlzYWJsZWRQcm9wZXJ0eSk7CisgICAgICAgIG1fZGlzYWJsZWRQcm9wZXJ0aWVzLT5pbnNlcnRB
dChpbnNlcnRpb25JbmRleCwgZGlzYWJsZWRQcm9wZXJ0eSk7CiAgICAgICAgIGxvbmcgc3R5bGVM
ZW5ndGhEZWx0YSA9IC0oc3RhdGljX2Nhc3Q8bG9uZz4ocmVtb3ZlZFJhbmdlLmxlbmd0aCgpKSk7
CiAgICAgICAgIHNoaWZ0RGlzYWJsZWRQcm9wZXJ0aWVzKGluc2VydGlvbkluZGV4ICsgMSwgc3R5
bGVMZW5ndGhEZWx0YSk7IC8vIFByb3BlcnR5IHJlbW92ZWQgZnJvbSB0ZXh0IC0gc2hpZnQgdGhl
c2UgYmFjay4KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzLmNwcAppbmRleCAzMDU3NWQ1Y2UyMzgxY2M3MmU1ZjliM2M5MzI5ODFmOWQyYjZiYzUw
Li4zODFjZTNmYzQ3ZjAyYTRjOTYyNmI3MjIwYWY4YjE2ZWQ3ZTNiYmRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKQEAgLTE0NSw3ICsxNDUs
NyBAQCBWZWN0b3I8U3RyaW5nPiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwcmVmZXJyZWRMYW5n
dWFnZXMoKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcyA9IHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKTsKICAgICBpZiAobV90ZXN0aW5nTW9kZSAmJiAhbV91c2VyUHJlZmVy
cmVkTGFuZ3VhZ2UuaXNFbXB0eSgpKQotICAgICAgICBsYW5ndWFnZXMuaW5zZXJ0KDAsIG1fdXNl
clByZWZlcnJlZExhbmd1YWdlKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmluc2VydEF0KDAsIG1fdXNl
clByZWZlcnJlZExhbmd1YWdlKTsKIAogICAgIHJldHVybiBsYW5ndWFnZXM7CiB9CkBAIC0xOTIs
OCArMTkyLDggQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KFRleHRUcmEKICAgICAgICAgcmV0dXJuIGNvZGVQ
b2ludENvbXBhcmUodHJhY2tEaXNwbGF5TmFtZShhLmdldCgpKSwgdHJhY2tEaXNwbGF5TmFtZShi
LmdldCgpKSkgPCAwOwogICAgIH0pOwogCi0gICAgdHJhY2tzRm9yTWVudS5pbnNlcnQoMCwgVGV4
dFRyYWNrOjpjYXB0aW9uTWVudU9mZkl0ZW0oKSk7Ci0gICAgdHJhY2tzRm9yTWVudS5pbnNlcnQo
MSwgVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKSk7CisgICAgdHJhY2tzRm9y
TWVudS5pbnNlcnRBdCgwLCBUZXh0VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSgpKTsKKyAgICB0
cmFja3NGb3JNZW51Lmluc2VydEF0KDEsIFRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJ
dGVtKCkpOwogCiAgICAgcmV0dXJuIHRyYWNrc0Zvck1lbnU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCmluZGV4IDdl
ZjU3YjRlMWQ3ZjcyMzNlNWZjZTNmMzE4OGI2ZWMwZmY3YTY4ZTUuLjI2MmIzY2U3YWZkMmExZTlm
ZDhjODZhZTgzYjBkNjJmZTMwMTkyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC04NTAsOCArODUwLDggQEAg
VmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6
c29ydGVkVHJhY2tMaXN0Rm9yTWVudSgKIAogICAgIHN0ZDo6c29ydCh0cmFja3NGb3JNZW51LmJl
Z2luKCksIHRyYWNrc0Zvck1lbnUuZW5kKCksIHRleHRUcmFja0NvbXBhcmUpOwogCi0gICAgdHJh
Y2tzRm9yTWVudS5pbnNlcnQoMCwgVGV4dFRyYWNrOjpjYXB0aW9uTWVudU9mZkl0ZW0oKSk7Ci0g
ICAgdHJhY2tzRm9yTWVudS5pbnNlcnQoMSwgVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRp
Y0l0ZW0oKSk7CisgICAgdHJhY2tzRm9yTWVudS5pbnNlcnRBdCgwLCBUZXh0VHJhY2s6OmNhcHRp
b25NZW51T2ZmSXRlbSgpKTsKKyAgICB0cmFja3NGb3JNZW51Lmluc2VydEF0KDEsIFRleHRUcmFj
azo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkpOwogCiAgICAgcmV0dXJuIHRyYWNrc0Zvck1l
bnU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwCmluZGV4IDcxYmQ0ZDU5Y2JiN2IwZGZkNWM1OWMxM2RhZDZhNDlkMzg0
MDJjNmEuLjRhOWM0MDE3YWJhNzMyZGQ0ZDQ3OTExNzk1MDI4MjZmZjUzNGZjNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9u
V2lsbEVuZFBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIG1fc2Vzc2lvbnMucmVtb3ZlKHBhdXNpbmdTZXNzaW9uSW5kZXgpOwotICAgIG1f
c2Vzc2lvbnMuaW5zZXJ0KGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4LCAmc2Vzc2lvbik7CisgICAg
bV9zZXNzaW9ucy5pbnNlcnRBdChsYXN0UGxheWluZ1Nlc3Npb25JbmRleCwgJnNlc3Npb24pOwog
ICAgIAogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsRW5k
UGxheWJhY2sgLSBzZXNzaW9uIG1vdmVkIGZyb20gaW5kZXggJXp1IHRvICV6dSIsIHBhdXNpbmdT
ZXNzaW9uSW5kZXgsIGxhc3RQbGF5aW5nU2Vzc2lvbkluZGV4KTsKIH0KQEAgLTIzOCw3ICsyMzgs
NyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uKE1lZGlhU2Vz
c2lvbiYgc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zZXNzaW9ucy5yZW1vdmUo
aW5kZXgpOwotICAgIG1fc2Vzc2lvbnMuaW5zZXJ0KDAsICZzZXNzaW9uKTsKKyAgICBtX3Nlc3Np
b25zLmluc2VydEF0KDAsICZzZXNzaW9uKTsKICAgICAKICAgICBMT0coTWVkaWEsICJNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzZXRDdXJyZW50U2Vzc2lvbiAtIHNlc3Npb24gbW92ZWQgZnJvbSBpbmRl
eCAlenUgdG8gMCIsIGluZGV4KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNmM2MTQ2ZDA2ZGFlNDMxYzUxZGNiNTQz
M2M5NmJhMTM2NGQzMDBmNi4uZGMyM2U3ZTM2ZmI1MmEwNmU5OTMxZmE3YTk5YTE4Mjk1ZjQzYmZk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHAKQEAgLTU4LDEyICs1OCwxMiBAQCB2b2lkIEtleWZyYW1lVmFsdWVMaXN0OjppbnNl
cnQoUGFzc093blB0cjxjb25zdCBBbmltYXRpb25WYWx1ZT4gdmFsdWUpCiAgICAgICAgIGlmIChj
dXJWYWx1ZS0+a2V5VGltZSgpID09IHZhbHVlLT5rZXlUaW1lKCkpIHsKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgLy8gaW5zZXJ0IGFmdGVyCi0gICAgICAg
ICAgICBtX3ZhbHVlcy5pbnNlcnQoaSArIDEsIHZhbHVlKTsKKyAgICAgICAgICAgIG1fdmFsdWVz
Lmluc2VydEF0KGkgKyAxLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGN1clZhbHVlLT5rZXlUaW1lKCkgPiB2YWx1ZS0+a2V5VGltZSgpKSB7CiAg
ICAgICAgICAgICAvLyBpbnNlcnQgYmVmb3JlCi0gICAgICAgICAgICBtX3ZhbHVlcy5pbnNlcnQo
aSwgdmFsdWUpOworICAgICAgICAgICAgbV92YWx1ZXMuaW5zZXJ0QXQoaSwgdmFsdWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5
ZXIsIGludCBpbmRleCkKICAgICAgICAgY2hpbGRMYXllci0+cmVtb3ZlRnJvbVBhcmVudCgpOwog
CiAgICAgY2hpbGRMYXllci0+c2V0UGFyZW50KHRoaXMpOwotICAgIG1fY2hpbGRyZW4uaW5zZXJ0
KGluZGV4LCBjaGlsZExheWVyKTsKKyAgICBtX2NoaWxkcmVuLmluc2VydEF0KGluZGV4LCBjaGls
ZExheWVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KEdyYXBoaWNz
TGF5ZXIqIGNoaWxkTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCkBAIC0xODgsNyArMTg4
LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KEdyYXBoaWNzTGF5ZXIqIGNo
aWxkTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmwKICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyBpKyspIHsKICAg
ICAgICAgaWYgKHNpYmxpbmcgPT0gbV9jaGlsZHJlbltpXSkgewotICAgICAgICAgICAgbV9jaGls
ZHJlbi5pbnNlcnQoaSwgY2hpbGRMYXllcik7CisgICAgICAgICAgICBtX2NoaWxkcmVuLmluc2Vy
dEF0KGksIGNoaWxkTGF5ZXIpOwogICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXI6OmFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwgR3JhcGhpY3NMYXll
ciogc2libAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7IGkrKykgewogICAgICAgICBpZiAoc2libGluZyA9PSBt
X2NoaWxkcmVuW2ldKSB7Ci0gICAgICAgICAgICBtX2NoaWxkcmVuLmluc2VydChpKzEsIGNoaWxk
TGF5ZXIpOworICAgICAgICAgICAgbV9jaGlsZHJlbi5pbnNlcnRBdChpKzEsIGNoaWxkTGF5ZXIp
OwogICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
VGltZVJhbmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bVRpbWVSYW5nZXMuY3BwCmluZGV4IDNjMDFiMmE1NDhjOTA1YmRiNGNiNGE2NmQ3MzQ0YjcxNGZi
ZGY2NTcuLjcyOWUyNmRhYzgyMmQxMjRkMDkzYzRkN2U2NjhmMThiMjY2MTg5Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFu
Z2VzLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgUGxhdGZvcm1UaW1lUmFuZ2VzOjphZGQo
Y29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQpCiAgICAgfQogCiAg
ICAgLy8gTm93IHRoYXQgd2UgYXJlIHN1cmUgd2UgZG9uJ3Qgb3ZlcmxhcCB3aXRoIGFueSByYW5n
ZSwganVzdCBhZGQgaXQuCi0gICAgbV9yYW5nZXMuaW5zZXJ0KG92ZXJsYXBwaW5nQXJjSW5kZXgs
IGFkZGVkUmFuZ2UpOworICAgIG1fcmFuZ2VzLmluc2VydEF0KG92ZXJsYXBwaW5nQXJjSW5kZXgs
IGFkZGVkUmFuZ2UpOwogfQogCiBib29sIFBsYXRmb3JtVGltZVJhbmdlczo6Y29udGFpbihjb25z
dCBNZWRpYVRpbWUmIHRpbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TVkdHbHlwaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TVkdHbHlwaC5jcHAKaW5kZXggOWU2MWFiNTc0MDJhMTFjMzY1N2ZiNzdlNjc3NDA0Y2Qx
ODY0MmUzZi4uYTU1ZGQxNDA4N2I1YjExYzU1MjE0MzlhYmE0YmQ1OTRjZmFhYWNiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU1ZHR2x5cGguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NWR0dseXBoLmNwcApAQCAtOTcsNyAr
OTcsNyBAQCBWZWN0b3I8U1ZHR2x5cGg6OkFyYWJpY0Zvcm0+IGNoYXJhY3RlcnNXaXRoQXJhYmlj
Rm9ybShjb25zdCBTdHJpbmcmIGlucHV0LCBib29sCiAgICAgLy8gU3RhcnQgaWRlbnRpZnlpbmcg
YXJhYmljIGZvcm1zCiAgICAgaWYgKHJ0bCkgewogICAgICAgICBmb3IgKGludCBpID0gbGVuZ3Ro
IC0gMTsgaSA+PSAwOyAtLWkpCi0gICAgICAgICAgICBmb3Jtcy5pbnNlcnQoMCwgcHJvY2Vzc0Fy
YWJpY0Zvcm1EZXRlY3Rpb24oaW5wdXRbaV0sIGxhc3RDaGFyU2hhcGVzUmlnaHQsIGZvcm1zLmlz
RW1wdHkoKSA/IDAgOiAmZm9ybXMuZmlyc3QoKSkpOworICAgICAgICAgICAgZm9ybXMuaW5zZXJ0
QXQoMCwgcHJvY2Vzc0FyYWJpY0Zvcm1EZXRlY3Rpb24oaW5wdXRbaV0sIGxhc3RDaGFyU2hhcGVz
UmlnaHQsIGZvcm1zLmlzRW1wdHkoKSA/IDAgOiAmZm9ybXMuZmlyc3QoKSkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAg
ICAgICAgIGZvcm1zLmFwcGVuZChwcm9jZXNzQXJhYmljRm9ybURldGVjdGlvbihpbnB1dFtpXSwg
bGFzdENoYXJTaGFwZXNSaWdodCwgZm9ybXMuaXNFbXB0eSgpID8gMCA6ICZmb3Jtcy5sYXN0KCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1h
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmlu
ZGV4IDYxMWIzNWE3YWRmMmVlNTI5OTQzODEyNTM4OGEwOWYzYzdmMGY1YWUuLmJjM2E5NzAxYThk
ZmVjZDU3YmQzMDM3Yjc4MjYzYWUyOWNkZGI0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgUmVu
ZGVyR2VvbWV0cnlNYXA6OnB1c2goY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3Qg
TGF5b3V0U2l6ZSYgb2ZmCiB7CiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9zaXRpb24gIT0gbm90
Rm91bmQpOwogCi0gICAgbV9tYXBwaW5nLmluc2VydChtX2luc2VydGlvblBvc2l0aW9uLCBSZW5k
ZXJHZW9tZXRyeU1hcFN0ZXAocmVuZGVyZXIsIGFjY3VtdWxhdGluZ1RyYW5zZm9ybSwgaXNOb25V
bmlmb3JtLCBpc0ZpeGVkUG9zaXRpb24sIGhhc1RyYW5zZm9ybSkpOworICAgIG1fbWFwcGluZy5p
bnNlcnRBdChtX2luc2VydGlvblBvc2l0aW9uLCBSZW5kZXJHZW9tZXRyeU1hcFN0ZXAocmVuZGVy
ZXIsIGFjY3VtdWxhdGluZ1RyYW5zZm9ybSwgaXNOb25Vbmlmb3JtLCBpc0ZpeGVkUG9zaXRpb24s
IGhhc1RyYW5zZm9ybSkpOwogCiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9t
YXBwaW5nW21faW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIHN0ZXAubV9vZmZzZXQgPSBvZmZzZXRG
cm9tQ29udGFpbmVyOwpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6
OnB1c2goY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25N
CiB7CiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9zaXRpb24gIT0gbm90Rm91bmQpOwogCi0gICAg
bV9tYXBwaW5nLmluc2VydChtX2luc2VydGlvblBvc2l0aW9uLCBSZW5kZXJHZW9tZXRyeU1hcFN0
ZXAocmVuZGVyZXIsIGFjY3VtdWxhdGluZ1RyYW5zZm9ybSwgaXNOb25Vbmlmb3JtLCBpc0ZpeGVk
UG9zaXRpb24sIGhhc1RyYW5zZm9ybSkpOworICAgIG1fbWFwcGluZy5pbnNlcnRBdChtX2luc2Vy
dGlvblBvc2l0aW9uLCBSZW5kZXJHZW9tZXRyeU1hcFN0ZXAocmVuZGVyZXIsIGFjY3VtdWxhdGlu
Z1RyYW5zZm9ybSwgaXNOb25Vbmlmb3JtLCBpc0ZpeGVkUG9zaXRpb24sIGhhc1RyYW5zZm9ybSkp
OwogICAgIAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGluZ1ttX2lu
c2VydGlvblBvc2l0aW9uXTsKICAgICBpZiAoIXQuaXNJbnRlZ2VyVHJhbnNsYXRpb24oKSkKQEAg
LTIzMiw3ICsyMzIsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyhjb25zdCBS
ZW5kZXJWaWV3KiB2aWV3LCBjb25zdCBMYXlvdXRTaXplJiBzY3JvbAogICAgIEFTU0VSVChtX2lu
c2VydGlvblBvc2l0aW9uICE9IG5vdEZvdW5kKTsKICAgICBBU1NFUlQoIW1faW5zZXJ0aW9uUG9z
aXRpb24pOyAvLyBUaGUgdmlldyBzaG91bGQgYWx3YXlzIGJlIHRoZSBmaXJzdCBzdGVwLgogCi0g
ICAgbV9tYXBwaW5nLmluc2VydChtX2luc2VydGlvblBvc2l0aW9uLCBSZW5kZXJHZW9tZXRyeU1h
cFN0ZXAodmlldywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdCkpOworICAgIG1fbWFwcGluZy5pbnNl
cnRBdChtX2luc2VydGlvblBvc2l0aW9uLCBSZW5kZXJHZW9tZXRyeU1hcFN0ZXAodmlldywgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdCkpOwogICAgIAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYg
c3RlcCA9IG1fbWFwcGluZ1ttX2luc2VydGlvblBvc2l0aW9uXTsKICAgICBzdGVwLm1fb2Zmc2V0
ID0gc2Nyb2xsT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFy
Y2hGaWVsZC5jcHAKaW5kZXggZDgyNDg2NTBhOWM1NGEwYzMxNDEwYTRhNGExYWFiNDYwZDRjMDVi
YS4uZGVhOGQwYWQyMTJlZGNkNTc2NTM1NjdmZGM0ZjIwOWZlNzI5NDA2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCkBAIC05NCw3ICs5NCw3
IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJjaFJlc3VsdCgpCiAgICAgICAgICAg
ICBtX3JlY2VudFNlYXJjaGVzLnJlbW92ZShpKTsKICAgICB9CiAKLSAgICBtX3JlY2VudFNlYXJj
aGVzLmluc2VydCgwLCB2YWx1ZSk7CisgICAgbV9yZWNlbnRTZWFyY2hlcy5pbnNlcnRBdCgwLCB2
YWx1ZSk7CiAgICAgd2hpbGUgKHN0YXRpY19jYXN0PGludD4obV9yZWNlbnRTZWFyY2hlcy5zaXpl
KCkpID4gaW5wdXRFbGVtZW50KCkubWF4UmVzdWx0cygpKQogICAgICAgICBtX3JlY2VudFNlYXJj
aGVzLnJlbW92ZUxhc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAKaW5kZXggNTk3MTc3YWFkMWY3ODI4OWU4MjA4NTk5N2E3ZDMyYjM5ZWI5NjE1YS4uMDJiYjI5
NTg1MTkzYTc0N2ZmMjI0ZDIzNDI3YzI0ZTAwNjIxZWZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC04MTIsNyArODEyLDcgQEAgdm9pZCBSZW5kZXJUYWJs
ZTo6c3BsaXRDb2x1bW4odW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGZpcnN0U3BhbikKIHsK
ICAgICAvLyBXZSBzcGxpdCB0aGUgY29sdW1uIGF0ICJwb3NpdGlvbiIsIHRha2luZyAiZmlyc3RT
cGFuIiBjZWxscyBmcm9tIHRoZSBzcGFuLgogICAgIEFTU0VSVChtX2NvbHVtbnNbcG9zaXRpb25d
LnNwYW4gPiBmaXJzdFNwYW4pOwotICAgIG1fY29sdW1ucy5pbnNlcnQocG9zaXRpb24sIENvbHVt
blN0cnVjdChmaXJzdFNwYW4pKTsKKyAgICBtX2NvbHVtbnMuaW5zZXJ0QXQocG9zaXRpb24sIENv
bHVtblN0cnVjdChmaXJzdFNwYW4pKTsKICAgICBtX2NvbHVtbnNbcG9zaXRpb24gKyAxXS5zcGFu
IC09IGZpcnN0U3BhbjsKIAogICAgIC8vIFByb3BhZ2F0ZSB0aGUgY2hhbmdlIGluIG91ciBjb2x1
bW5zIHJlcHJlc2VudGF0aW9uIHRvIHRoZSBzZWN0aW9ucyB0aGF0IGRvbid0IG5lZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggYWY4
NDdkNjQ5OTdiOWZmODE5NDBmMGZkN2NkYWU0MWQzOTA5ODBlOS4uZjM2MDExZGVkYzU3OWY1OGVk
MWZlN2U5MDc3M2QzM2Y1MWNhYTIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTE0NzEsNyArMTQ3MSw3IEBAIHZvaWQgUmVuZGVy
VGFibGVTZWN0aW9uOjpzcGxpdENvbHVtbih1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGZpcnN0KQog
ICAgICAgICBtX2NDb2wrKzsKICAgICBmb3IgKHVuc2lnbmVkIHJvdyA9IDA7IHJvdyA8IG1fZ3Jp
ZC5zaXplKCk7ICsrcm93KSB7CiAgICAgICAgIFJvdyYgciA9IG1fZ3JpZFtyb3ddLnJvdzsKLSAg
ICAgICAgci5pbnNlcnQocG9zICsgMSwgQ2VsbFN0cnVjdCgpKTsKKyAgICAgICAgci5pbnNlcnRB
dChwb3MgKyAxLCBDZWxsU3RydWN0KCkpOwogICAgICAgICBpZiAocltwb3NdLmhhc0NlbGxzKCkp
IHsKICAgICAgICAgICAgIHJbcG9zICsgMV0uY2VsbHMuYXBwZW5kVmVjdG9yKHJbcG9zXS5jZWxs
cyk7CiAgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSByW3Bvc10ucHJpbWFyeUNl
bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFt
ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5j
cHAKaW5kZXggNTQ1YmNhMjNhYzhmMTUzZGI5YjZlYWIzMjZmZDU4YzQwOTRmZjEwZC4uYzBjZjkw
YjA1MmFiOWQ3ZWZjNzM0NzY1OWMzZDZjM2RhNzdhNDYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9p
ZCBLZXlmcmFtZUxpc3Q6Omluc2VydChjb25zdCBLZXlmcmFtZVZhbHVlJiBrZXlmcmFtZSkKIAog
ICAgICAgICBpZiAobV9rZXlmcmFtZXNbaV0ua2V5KCkgPiBrZXlmcmFtZS5rZXkoKSkgewogICAg
ICAgICAgICAgLy8gaW5zZXJ0IGJlZm9yZQotICAgICAgICAgICAgbV9rZXlmcmFtZXMuaW5zZXJ0
KGksIGtleWZyYW1lKTsKKyAgICAgICAgICAgIG1fa2V5ZnJhbWVzLmluc2VydEF0KGksIGtleWZy
YW1lKTsKICAgICAgICAgICAgIGluc2VydGVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5U2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5U2Vzc2lvbi5jcHAKaW5kZXggZDQ0
OGIxOWI0ZTJmODNkZGY0ZGRlZDQ5NmQ2NTUyNjc2ZDE2MDllZS4uZTQ2MDM5NDgwZjcwOTBhMDc1
OWQ2N2VkMTBkMWIxNzE0YWIyY2I3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5
L1JlcGxheVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlTZXNz
aW9uLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFJlcGxheVNlc3Npb246OmFwcGVuZFNlZ21l
bnQoUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gcHJwU2VnbWVudCkKIHZvaWQgUmVw
bGF5U2Vzc2lvbjo6aW5zZXJ0U2VnbWVudChzaXplX3QgcG9zaXRpb24sIFBhc3NSZWZQdHI8UmVw
bGF5U2Vzc2lvblNlZ21lbnQ+IHNlZ21lbnQpCiB7CiAgICAgQVNTRVJUKHBvc2l0aW9uIDwgbV9z
ZWdtZW50cy5zaXplKCkpOwotICAgIG1fc2VnbWVudHMuaW5zZXJ0KHBvc2l0aW9uLCBzZWdtZW50
KTsKKyAgICBtX3NlZ21lbnRzLmluc2VydEF0KHBvc2l0aW9uLCBzZWdtZW50KTsKIH0KIAogdm9p
ZCBSZXBsYXlTZXNzaW9uOjpyZW1vdmVTZWdtZW50KHNpemVfdCBwb3NpdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5LmgKaW5kZXggMTg1NTcw
ZWMzYmNhYTMwNGViMTRlNDcwNDVjM2VlYWZhMjY2NmFiNC4uOTZkYjkxMDVjNDkwMWUzOTc5YTQ1
ZmYwNjU3NDdlZjBiMWFlODdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHTGlzdFByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHTGlzdFByb3BlcnR5LmgKQEAgLTIyNiw3ICsyMjYsNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgLy8gU3BlYzogSW5zZXJ0cyBhIG5ldyBpdGVtIGludG8gdGhlIGxpc3QgYXQgdGhlIHNwZWNp
ZmllZCBwb3NpdGlvbi4gVGhlIGluZGV4IG9mIHRoZSBpdGVtIGJlZm9yZSB3aGljaCB0aGUgbmV3
IGl0ZW0gaXMgdG8gYmUKICAgICAgICAgLy8gaW5zZXJ0ZWQuIFRoZSBmaXJzdCBpdGVtIGlzIG51
bWJlciAwLiBJZiB0aGUgaW5kZXggaXMgZXF1YWwgdG8gMCwgdGhlbiB0aGUgbmV3IGl0ZW0gaXMg
aW5zZXJ0ZWQgYXQgdGhlIGZyb250IG9mIHRoZSBsaXN0LgotICAgICAgICBtX3ZhbHVlcy0+aW5z
ZXJ0KGluZGV4LCBuZXdJdGVtKTsKKyAgICAgICAgbV92YWx1ZXMtPmluc2VydEF0KGluZGV4LCBu
ZXdJdGVtKTsKIAogICAgICAgICBjb21taXRDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJuIG5ld0l0
ZW07CkBAIC0yNTcsMTAgKzI1NywxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gU3BlYzogSW5z
ZXJ0cyBhIG5ldyBpdGVtIGludG8gdGhlIGxpc3QgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4g
VGhlIGluZGV4IG9mIHRoZSBpdGVtIGJlZm9yZSB3aGljaCB0aGUgbmV3IGl0ZW0gaXMgdG8gYmUK
ICAgICAgICAgLy8gaW5zZXJ0ZWQuIFRoZSBmaXJzdCBpdGVtIGlzIG51bWJlciAwLiBJZiB0aGUg
aW5kZXggaXMgZXF1YWwgdG8gMCwgdGhlbiB0aGUgbmV3IGl0ZW0gaXMgaW5zZXJ0ZWQgYXQgdGhl
IGZyb250IG9mIHRoZSBsaXN0LgotICAgICAgICBtX3ZhbHVlcy0+aW5zZXJ0KGluZGV4LCBuZXdJ
dGVtLT5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKKyAgICAgICAgbV92YWx1ZXMtPmluc2VydEF0KGlu
ZGV4LCBuZXdJdGVtLT5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKIAogICAgICAgICAvLyBTdG9yZSBu
ZXcgd3JhcHBlciBhdCBwb3NpdGlvbiAnaW5kZXgnLCBjaGFuZ2UgaXRzIHVuZGVybHlpbmcgdmFs
dWUsIHNvIG11dGF0aW9ucyBvZiBuZXdJdGVtLCBkaXJlY3RseSBhZmZlY3QgdGhlIGl0ZW0gaW4g
dGhlIGxpc3QuCi0gICAgICAgIG1fd3JhcHBlcnMtPmluc2VydChpbmRleCwgbmV3SXRlbSk7Cisg
ICAgICAgIG1fd3JhcHBlcnMtPmluc2VydEF0KGluZGV4LCBuZXdJdGVtKTsKIAogICAgICAgICBj
b21taXRDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJuIG5ld0l0ZW0ucmVsZWFzZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhQYXRoLmNwcAppbmRleCA3NzJlZWQ5ZGNiMzdlYzdjM2VjNGZlZWIzYmE1YTU2ODM2
OWVmZTI1Li5kZjM2ZGZjODdkMWUyNDE4NDBlMDc4NzYyYTY4Njk3MDEwYzYyZDAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhQYXRoLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgTG9jYXRpb25QYXRo
OjpwcmVwZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4gc3RlcCkKICAgICAgICAgfQogICAg
IH0KICAgICBzdGVwLT5vcHRpbWl6ZSgpOwotICAgIG1fc3RlcHMuaW5zZXJ0KDAsIFdURjo6bW92
ZShzdGVwKSk7CisgICAgbV9zdGVwcy5pbnNlcnRBdCgwLCBXVEY6Om1vdmUoc3RlcCkpOwogfQog
CiBQYXRoOjpQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBmaWx0ZXIsIHN0ZDo6dW5p
cXVlX3B0cjxMb2NhdGlvblBhdGg+IHBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDg0ZDM1MzE3M2JlOWVkZjBjNzM4
MmJkMmQ0Y2I2YWY5YmRhZjk5NDQuLjdhNTlkNjRjNDc5YWIxN2U1MGJhNDk4NWUxZWQyMmQ4ZTk3
Y2VmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tCkBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGljIFJlZ3VsYXJFeHByZXNzaW9u
KiByZWdFeHBGb3JMYWJlbHMoTlNBcnJheSAqbGFiZWxzKQogICAgICAgICB9CiAgICAgICAgIC8v
IGFkZCB0byBzdGFydAogICAgICAgICBbcmVnRXhwTGFiZWxzIGluc2VydE9iamVjdDpsYWJlbHMg
YXRJbmRleDowXTsKLSAgICAgICAgcmVnRXhwcy5pbnNlcnQoMCwgcmVzdWx0KTsKKyAgICAgICAg
cmVnRXhwcy5pbnNlcnRBdCgwLCByZXN1bHQpOwogICAgICAgICAvLyB0cmltIGlmIHRvbyBiaWcK
ICAgICAgICAgaWYgKFtyZWdFeHBMYWJlbHMgY291bnRdID4gcmVnRXhwQ2FjaGVTaXplKSB7CiAg
ICAgICAgICAgICBbcmVnRXhwTGFiZWxzIHJlbW92ZU9iamVjdEF0SW5kZXg6cmVnRXhwQ2FjaGVT
aXplXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2Fy
ZExpc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5j
cHAKaW5kZXggNjZjZjA3ZDhiZGJmZTMxMTdjZWFmOTU5NDUyZmQ1MGNkY2M0ZjAzZS4uMjdiZTQy
MDQ2ZGQxMjhiYTMzNGJlYWU5MDMyNDE1OGU4NGNmNWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2
b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBu
ZXdJdGVtKQogICAgICAgICBBU1NFUlQobV9jdXJyZW50SW5kZXggPD0gbV9lbnRyaWVzLnNpemUo
KSk7CiAKICAgICAgICAgaWYgKG1fY3VycmVudEluZGV4IDw9IG1fZW50cmllcy5zaXplKCkpCi0g
ICAgICAgICAgICBtX2VudHJpZXMuaW5zZXJ0KG1fY3VycmVudEluZGV4LCBuZXdJdGVtKTsKKyAg
ICAgICAgICAgIG1fZW50cmllcy5pbnNlcnRBdChtX2N1cnJlbnRJbmRleCwgbmV3SXRlbSk7CiAg
ICAgfQogCiAgICAgbV9wYWdlLT5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QobmV3SXRlbSwgV1RG
Ojptb3ZlKHJlbW92ZWRJdGVtcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQppbmRleCBhYjNiN2QzYzc2NWY2
YTljZDJkZWY5NjY5OTdiZjE2ZGE5ZDI1N2JhLi45MGIyMjZjNDA5Zjc3ZTYwZDA1ZGY2OWJiMzQx
ZGIyOTUwMjk2YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQpAQCAtNDQwLDcgKzQ0MCw3IEBAIHN0YXRp
YyBDQUxheWVyICpsZWFzdENvbW1vbkFuY2VzdG9yTGF5ZXIoY29uc3QgVmVjdG9yPFJldGFpblB0
cjxDQUxheWVyPj4mIGxheWVyCiAgICAgZm9yIChzaXplX3QgbGF5ZXJJbmRleCA9IDA7IGxheWVy
SW5kZXggPCBsYXllcnMuc2l6ZSgpOyBsYXllckluZGV4KyspIHsKICAgICAgICAgQ0FMYXllciAq
cGFyZW50ID0gW2xheWVyc1tsYXllckluZGV4XSBzdXBlcmxheWVyXTsKICAgICAgICAgd2hpbGUg
KHBhcmVudCkgewotICAgICAgICAgICAgbGl2ZUxheWVyUGF0aHNGcm9tUm9vdFtsYXllckluZGV4
XS5pbnNlcnQoMCwgcGFyZW50KTsKKyAgICAgICAgICAgIGxpdmVMYXllclBhdGhzRnJvbVJvb3Rb
bGF5ZXJJbmRleF0uaW5zZXJ0QXQoMCwgcGFyZW50KTsKICAgICAgICAgICAgIHNob3J0ZXN0UGF0
aExlbmd0aCA9IHN0ZDo6bWluKHNob3J0ZXN0UGF0aExlbmd0aCwgbGl2ZUxheWVyUGF0aHNGcm9t
Um9vdFtsYXllckluZGV4XS5zaXplKCkpOwogICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LnN1
cGVybGF5ZXI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA1
NTgzMWYzMDE3MjhjMjJlZmZhYmI0MmI2MzkwYTJiNDdjZDJmMjA1Li5mMWMyZDE3NTg0MTIxMzQ4
MTJjNDk4NDI2NTBkMTI3MDBlOGZkNjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3Bw
CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6Omluc2VydFN1
YmxheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIsIHNpemVfdCBpbmRleCkKICAgICBSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBsYXllclByb3RlY3RvcihsYXllcik7CiAKICAgICBsYXllci0+cmVt
b3ZlRnJvbVN1cGVybGF5ZXIoKTsKLSAgICBtX2NoaWxkcmVuLmluc2VydChpbmRleCwgbGF5ZXIp
OworICAgIG1fY2hpbGRyZW4uaW5zZXJ0QXQoaW5kZXgsIGxheWVyKTsKICAgICB0b1BsYXRmb3Jt
Q0FMYXllclJlbW90ZShsYXllciktPm1fc3VwZXJsYXllciA9IHRoaXM7CiAgICAgbV9wcm9wZXJ0
aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Q2hp
bGRyZW5DaGFuZ2VkKTsKIH0KQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6cmVwbGFjZVN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciogcmVmZXJlbmNlLCBQbGF0
Zm9ybQogICAgIHNpemVfdCByZWZlcmVuY2VJbmRleCA9IG1fY2hpbGRyZW4uZmluZChyZWZlcmVu
Y2UpOwogICAgIGlmIChyZWZlcmVuY2VJbmRleCAhPSBub3RGb3VuZCkgewogICAgICAgICBtX2No
aWxkcmVuW3JlZmVyZW5jZUluZGV4XS0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKLSAgICAgICAg
bV9jaGlsZHJlbi5pbnNlcnQocmVmZXJlbmNlSW5kZXgsIGxheWVyKTsKKyAgICAgICAgbV9jaGls
ZHJlbi5pbnNlcnRBdChyZWZlcmVuY2VJbmRleCwgbGF5ZXIpOwogICAgICAgICB0b1BsYXRmb3Jt
Q0FMYXllclJlbW90ZShsYXllciktPm1fc3VwZXJsYXllciA9IHRoaXM7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTQxMDNhMGFj
YjBkMzZiNGY1NzNjMDBjODI4YTRhYjZjMGMzZmJjMy4uNGQ0OTdjNWQ2MDFjYzM1MWFlYzI1Mzc2
ODAxZDYxOThmZTMzODk3OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE0LTEwLTAzICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgaW5zZXJ0IGl0ZXJhdG9ycyBmb3Ig
VmVjdG9ycy4gW1BhcnQgMV0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNzM3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbmFtZSBXVEY6OlZlY3Rvcjo6aW5zZXJ0KCkgLT4gaW5zZXJ0QXQoKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNC0xMC0wMiAgSmVmZiBNaWxsZXIgIDxqZWZmbUBh
cHBsZS5jb20+CiAKICAgICAgICAgRHVtcFJlbmRlclRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIg
c2hvdWxkIHVzZSBXZWJLaXR5c3RlbUludGVyZmFjZVlvc2VtaXRlIHdoZW4gYnVpbGRpbmcgb24g
WW9zZW1pdGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rv
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCmluZGV4IGQy
MDdhMGZlMGE3NGRmNTEwMzQ2OGQ3NDQ2Y2VhNjZiYjEwZTZjMDkuLjQzYmY3OGU5NDUwZTUxMDQ5
NWYwNjJhMGQyZGNiNjdiMTMyYjc3YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1ZlY3Rvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VmVjdG9yLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIFRFU1QoV1RGX1ZlY3RvciwgTW92ZU9ubHlf
SW5zZXJ0KQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDA7ICsraSkgewogICAgICAg
ICBNb3ZlT25seSBtb3ZlT25seShpKTsKLSAgICAgICAgdmVjdG9yLmluc2VydCgwLCBXVEY6Om1v
dmUobW92ZU9ubHkpKTsKKyAgICAgICAgdmVjdG9yLmluc2VydEF0KDAsIFdURjo6bW92ZShtb3Zl
T25seSkpOwogICAgICAgICBFWFBFQ1RfRVEoMFUsIG1vdmVPbmx5LnZhbHVlKCkpOwogICAgIH0K
IApAQCAtMjAzLDcgKzIwMyw3IEBAIFRFU1QoV1RGX1ZlY3RvciwgTW92ZU9ubHlfSW5zZXJ0KQog
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyMDA7IGkgKz0gMikgewogICAgICAgICBNb3Zl
T25seSBtb3ZlT25seSgxMDAwICsgaSk7Ci0gICAgICAgIHZlY3Rvci5pbnNlcnQoaSwgV1RGOjpt
b3ZlKG1vdmVPbmx5KSk7CisgICAgICAgIHZlY3Rvci5pbnNlcnRBdChpLCBXVEY6Om1vdmUobW92
ZU9ubHkpKTsKICAgICAgICAgRVhQRUNUX0VRKDBVLCBtb3ZlT25seS52YWx1ZSgpKTsKICAgICB9
CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>