<?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>169454</bug_id>
          
          <creation_ts>2017-03-09 16:15:32 -0800</creation_ts>
          <short_desc>Implement a StackTrace utility object that can capture stack traces for debugging.</short_desc>
          <delta_ts>2017-03-10 11:02:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1285662</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-09 16:15:32 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285669</commentid>
    <comment_count>1</comment_count>
      <attachid>304007</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-09 16:28:28 -0800</bug_when>
    <thetext>Created attachment 304007
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285670</commentid>
    <comment_count>2</comment_count>
      <attachid>304007</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-09 16:29:31 -0800</bug_when>
    <thetext>Comment on attachment 304007
proposed patch.

Need to add file to CMakeLists.txt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285672</commentid>
    <comment_count>3</comment_count>
      <attachid>304009</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-09 16:31:28 -0800</bug_when>
    <thetext>Created attachment 304009
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285687</commentid>
    <comment_count>4</comment_count>
      <attachid>304009</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-03-09 16:45:45 -0800</bug_when>
    <thetext>Comment on attachment 304009
proposed patch.

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

r-
Please address the sizeof issue in StackTrace::instanceSize()

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        In addition, not printing stack traces all the time also allows us to pollute
&gt; +        stdout with tons of stack traces that may be irrelevant.

I don&apos;t understand &quot;not printing&quot; with the rest of the sentence.

&gt; Source/JavaScriptCore/ChangeLog:31
&gt; +            // Capture a stack trace of the top 10 frames.
&gt; +            StackTrace* trace = StackTrace::captureStackTrace(10);
&gt; +            // Print the trace.
&gt; +            dataLog(*trace);
&gt; +            // Release the trace.
&gt; +            delete trace;

Could we change to a model where we ref count the StackTrace?

&gt; Source/JavaScriptCore/tools/StackTrace.cpp:52
&gt; +    return sizeof(StackTrace) + (capacity - 1);

sizeof() returns the size in bytes.  Don&apos;t you need the sizeof(void*) * (capacity - 1)?  It would probably be even better to have a StackTraceFrame typedef that is used for storing the type and computing the size needed per frame.

&gt; Source/JavaScriptCore/tools/StackTrace.h:58
&gt; +    // We structure the top fields this way because the underlying stack capture
&gt; +    // facility will capture from the top of the stack, and we&apos;ll need to skip the
&gt; +    // top 2 frame which is of no interest. Setting up the fields layout this way
&gt; +    // allows us to capture the stack in place and minimize space wastage.
&gt; +    union {
&gt; +        struct {
&gt; +            int m_size { 0 };
&gt; +            int m_capacity;
&gt; +        };
&gt; +        struct {
&gt; +            void* m_skippedFrame0;
&gt; +            void* m_skippedFrame1;
&gt; +        };

This seems a little overkill for saving the size of two ints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285696</commentid>
    <comment_count>5</comment_count>
      <attachid>304009</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-09 16:55:06 -0800</bug_when>
    <thetext>Comment on attachment 304009
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:19
&gt;&gt; +        stdout with tons of stack traces that may be irrelevant.
&gt; 
&gt; I don&apos;t understand &quot;not printing&quot; with the rest of the sentence.

I had a typo there.  I meant to say: &quot;not printing stack traces all the time also allows us to avoid polluting stdout with tons of stack traces that may be irrelevant.&quot;

&gt;&gt; Source/JavaScriptCore/ChangeLog:31
&gt;&gt; +            delete trace;
&gt; 
&gt; Could we change to a model where we ref count the StackTrace?

We can but I think that is not meaningful.  One example use case I&apos;m trying to satisfy (elaborating on what I described above) is that I would like to capture a stack trace at every allocation point and stash the trace away with the allocated object.  If I see a corruption related to that object later, I can dump its stack trace to know where it came from.  As a result, I would want the allocation and capturing of the stack trace to be as fast as possible, as well as take as little memory as possible.

Ref counting does not help my use case, and can actually hurt.  What do you have in mind for a use case that would necessitate ref counting it?

&gt;&gt; Source/JavaScriptCore/tools/StackTrace.cpp:52
&gt;&gt; +    return sizeof(StackTrace) + (capacity - 1);
&gt; 
&gt; sizeof() returns the size in bytes.  Don&apos;t you need the sizeof(void*) * (capacity - 1)?  It would probably be even better to have a StackTraceFrame typedef that is used for storing the type and computing the size needed per frame.

Eeek, you&apos;re right.  Will fix.

&gt;&gt; Source/JavaScriptCore/tools/StackTrace.h:58
&gt;&gt; +        };
&gt; 
&gt; This seems a little overkill for saving the size of two ints.

In my use case, I may be allocating one of the stack traces for every object (or every Nth object) ever allocated.  In that use case, every byte counts and this.  I&apos;d like to keep this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285699</commentid>
    <comment_count>6</comment_count>
      <attachid>304012</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-09 16:58:01 -0800</bug_when>
    <thetext>Created attachment 304012
proposed patch: fixed size calculation and ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285701</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-03-09 17:04:43 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 304009 [details]

&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:31
&gt; &gt;&gt; +            delete trace;
&gt; &gt; 
&gt; &gt; Could we change to a model where we ref count the StackTrace?
&gt; 
&gt; We can but I think that is not meaningful.  One example use case I&apos;m trying
&gt; to satisfy (elaborating on what I described above) is that I would like to
&gt; capture a stack trace at every allocation point and stash the trace away
&gt; with the allocated object.  If I see a corruption related to that object
&gt; later, I can dump its stack trace to know where it came from.  As a result,
&gt; I would want the allocation and capturing of the stack trace to be as fast
&gt; as possible, as well as take as little memory as possible.
&gt; 
&gt; Ref counting does not help my use case, and can actually hurt.  What do you
&gt; have in mind for a use case that would necessitate ref counting it?

I think stashing a stack trace with every allocated object makes my case.  With a raw pointer, you need to add a delete when the object is destroyed.  With a ref ptr, the stack trace will be cleaned up automatically for C++ allocated objects.

Ref ptrs are not that expensive relative to actually doing the stack trace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285702</commentid>
    <comment_count>8</comment_count>
      <attachid>304012</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-03-09 17:05:57 -0800</bug_when>
    <thetext>Comment on attachment 304012
proposed patch: fixed size calculation and ChangeLog.

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

r=me

&gt; Source/JavaScriptCore/tools/StackTrace.cpp:52
&gt; +    return sizeof(StackTrace) + (capacity - 1) * sizeof(void*);

I still prefer a typedef instead of void*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285703</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-09 17:06:47 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; Comment on attachment 304009 [details]
&gt; 
&gt; &gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:31
&gt; &gt; &gt;&gt; +            delete trace;
&gt; &gt; &gt; 
&gt; &gt; &gt; Could we change to a model where we ref count the StackTrace?
&gt; &gt; 
&gt; &gt; We can but I think that is not meaningful.  One example use case I&apos;m trying
&gt; &gt; to satisfy (elaborating on what I described above) is that I would like to
&gt; &gt; capture a stack trace at every allocation point and stash the trace away
&gt; &gt; with the allocated object.  If I see a corruption related to that object
&gt; &gt; later, I can dump its stack trace to know where it came from.  As a result,
&gt; &gt; I would want the allocation and capturing of the stack trace to be as fast
&gt; &gt; as possible, as well as take as little memory as possible.
&gt; &gt; 
&gt; &gt; Ref counting does not help my use case, and can actually hurt.  What do you
&gt; &gt; have in mind for a use case that would necessitate ref counting it?
&gt; 
&gt; I think stashing a stack trace with every allocated object makes my case. 
&gt; With a raw pointer, you need to add a delete when the object is destroyed. 
&gt; With a ref ptr, the stack trace will be cleaned up automatically for C++
&gt; allocated objects.
&gt; 
&gt; Ref ptrs are not that expensive relative to actually doing the stack trace.

Don&apos;t need a RefPtr for that.  The owner can use a std::unique_ptr which addresses what you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285708</commentid>
    <comment_count>10</comment_count>
      <attachid>304014</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-09 17:25:01 -0800</bug_when>
    <thetext>Created attachment 304014
Patch for landing.

Thanks for the review.

Not a big deal, but I stuck with the void* because that&apos;s what WTFGetBacktrace() wants.  Per our offline discussion, I also moved the capacity fixup from StackTrace::instanceSize() to StackTrace::captureStackTrace() so that the value stored in m_capacity reflects the fixed up capacity.  Instead, in StackTrace::instanceSize(), I assert that the capacity is sane.  I also changed the ChangeLog to use std::unique_ptr to suggest the better idiom for holding a StackTrace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285709</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-09 17:28:13 -0800</bug_when>
    <thetext>Landed in r213695: &lt;http://trac.webkit.org/r213695&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285729</commentid>
    <comment_count>12</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-03-09 19:25:11 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Landed in r213695: &lt;http://trac.webkit.org/r213695&gt;.

This change broke the Windows build:

https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/84680/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285765</commentid>
    <comment_count>13</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-03-09 21:18:36 -0800</bug_when>
    <thetext>Reverted r213695 for reason:

This change broke the Windows build.

Committed r213702: &lt;http://trac.webkit.org/changeset/213702&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285845</commentid>
    <comment_count>14</comment_count>
      <attachid>304053</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-10 10:39:44 -0800</bug_when>
    <thetext>Created attachment 304053
Patch for re-landing.

Let&apos;s see how the windows EWS likes this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285854</commentid>
    <comment_count>15</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-10 11:02:43 -0800</bug_when>
    <thetext>The win EWS bot is happy.  Re-landed in r213718: &lt;http://trac.webkit.org/r213718&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304007</attachid>
            <date>2017-03-09 16:28:28 -0800</date>
            <delta_ts>2017-03-09 16:31:28 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-169454.patch</filename>
            <type>text/plain</type>
            <size>13031</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNjg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE3LTAzLTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgYSBTdGFja1RyYWNlIHV0aWxpdHkgb2JqZWN0IHRoYXQgY2FuIGNhcHR1cmUgc3Rh
Y2sgdHJhY2VzIGZvciBkZWJ1Z2dpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjk0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBpcyBob2lzdGVk
IHJpZ2h0IG91dCBvZiBBc3NlcnRpb25zLmNwcCBmcm9tIHRoZQorICAgICAgICBpbXBsZW1lbnRh
dGlvbnMgb2YgV1RGUHJpbnRCYWNrdHJhY2UoKS4KKworICAgICAgICBUaGUgcmVhc29uIHdlIG5l
ZWQgdGhpcyBTdGFja1RyYWNlIG9iamVjdCBpcyBiZWNhdXNlIGR1cmluZyBoZWFwIGRlYnVnZ2lu
Zywgd2UKKyAgICAgICAgc29tZXRpbWVzIHdhbnQgdG8gY2FwdHVyZSB0aGUgc3RhY2sgdHJhY2Ug
dGhhdCBhbGxvY2F0ZWQgdGhlIG9iamVjdHMgb2YgaW50ZXJlc3QuCisgICAgICAgIER1bXBpbmcg
dGhlIHN0YWNrIHRyYWNlIGRpcmVjdGx5IHRvIHN0ZG91dCAodXNpbmcgV1RGUmVwb3J0QmFja3Ry
YWNlKCkpIG1heQorICAgICAgICBwZXJ0dXJiIHRoZSBleGVjdXRpb24gcHJvZmlsZSBzdWZmaWNp
ZW50bHkgdGhhdCBhbiBpc3N1ZSBtYXkgbm90IHJlcHJvZHVjZSwKKyAgICAgICAgd2hpbGUgYWx0
ZXJuYXRpdmVseSwganVzdCBjYXB0dXJpbmcgdGhlIHN0YWNrIHRyYWNlIGFuZCBkZWZlcnJpbmcg
cHJpbnRpbmcgaXQKKyAgICAgICAgdGlsbCB3ZSBhY3R1YWxseSBuZWVkIGl0IGxhdGVyIHBlcnR1
cmJzIHRoZSBleGVjdXRpb24gcHJvZmlsZSBsZXNzLgorCisgICAgICAgIEluIGFkZGl0aW9uLCBu
b3QgcHJpbnRpbmcgc3RhY2sgdHJhY2VzIGFsbCB0aGUgdGltZSBhbHNvIGFsbG93cyB1cyB0byBw
b2xsdXRlCisgICAgICAgIHN0ZG91dCB3aXRoIHRvbnMgb2Ygc3RhY2sgdHJhY2VzIHRoYXQgbWF5
IGJlIGlycmVsZXZhbnQuCisKKyAgICAgICAgRm9yIG5vdywgd2Ugb25seSBjYXB0dXJlIHRoZSBu
YXRpdmUgc3RhY2sgdHJhY2UuICBXZSdsbCBsZWF2ZSBjYXB0dXJpbmcgYW5kCisgICAgICAgIGlu
dGVncmF0aW5nIHRoZSBKUyBzdGFjayB0cmFjZSBhcyBhbiBleGVyY2lzZSBmb3IgdGhlIGZ1dHVy
ZSBpZiB3ZSBuZWVkIGl0IHRoZW4uCisKKyAgICAgICAgSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93
IHRvIHVzZSB0aGlzIFN0YWNrVHJhY2UgdXRpbGl0eToKKworICAgICAgICAgICAgLy8gQ2FwdHVy
ZSBhIHN0YWNrIHRyYWNlIG9mIHRoZSB0b3AgMTAgZnJhbWVzLgorICAgICAgICAgICAgU3RhY2tU
cmFjZSogdHJhY2UgPSBTdGFja1RyYWNlOjpjYXB0dXJlU3RhY2tUcmFjZSgxMCk7CisgICAgICAg
ICAgICAvLyBQcmludCB0aGUgdHJhY2UuCisgICAgICAgICAgICBkYXRhTG9nKCp0cmFjZSk7Cisg
ICAgICAgICAgICAvLyBSZWxlYXNlIHRoZSB0cmFjZS4KKyAgICAgICAgICAgIGRlbGV0ZSB0cmFj
ZTsKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogdG9vbHMvU3RhY2tUcmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpT
dGFja1RyYWNlOjppbnN0YW5jZVNpemUpOgorICAgICAgICAoSlNDOjpTdGFja1RyYWNlOjpjYXB0
dXJlU3RhY2tUcmFjZSk6CisgICAgICAgIChKU0M6OlN0YWNrVHJhY2U6OmR1bXApOgorICAgICAg
ICAqIHRvb2xzL1N0YWNrVHJhY2UuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlN0YWNrVHJhY2U6
OlN0YWNrVHJhY2UpOgorICAgICAgICAoSlNDOjpTdGFja1RyYWNlOjpzaXplKToKKwogMjAxNy0w
My0wOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFNob3cgSFRUUCBwcm90b2NvbCB2ZXJzaW9uIGFuZCBvdGhlciBOZXR3b3Jr
IExvYWQgTWV0cmljcyAoSVAgQWRkcmVzcywgUHJpb3JpdHksIENvbm5lY3Rpb24gSUQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEzNjgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNjUsNiArMjM2NSw4IEBACiAJCUZFMUJEMDIxMUU3MjAyNzkw
MDEzNEJDOSAvKiBDZWxsUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkUxQkQwMjAxRTcyMDI3MDAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmgg
Ki87IH07CiAJCUZFMUJEMDI0MUU3MjA1MzgwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQkQwMjIxRTcy
MDUyRjAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5jcHAgKi87IH07CiAJCUZFMUJEMDI1MUU3MjA1
MzgwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUJEMDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZp
ZXIuaCAqLzsgfTsKKwkJRkUxQkQwMkIxRTcyMUI0QzAwMTM0QkM5IC8qIFN0YWNrVHJhY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUJEMDJBMUU3
MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmggKi87IH07CisJCUZFMUJEMDJDMUU3MjFCNTEw
MDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNw
cCAqLzsgfTsKIAkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkMxQjE5M0U5
ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUZFMUMwRkZGMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBG
RkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi87IH07CiAJCUZFMjBDRTlEMTVG
MDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENM
b29wLmNwcCAqLzsgfTsKQEAgLTQ5NDUsNiArNDk0Nyw4IEBACiAJCUZFMUJEMDIwMUU3MjAyNzAw
MDEzNEJDOSAvKiBDZWxsUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDZWxsUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFCRDAyMjFF
NzIwNTJGMDAxMzRCQzkgLyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEhlYXBWZXJpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFMUJEMDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcFZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrVHJhY2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTFCRDAyQTFFNzIxQjM3MDAxMzRCQzkgLyog
U3RhY2tUcmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1RyYWNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZD
QSAvKiBFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZFMUIxOTRGRDEwMEI1
M0ZDQSAvKiBFeGNlcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUIx
NUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTExJbnRDTG9vcC5jcHA7IHBhdGggPSBsbGludC9MTEludENMb29wLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5MzgsNiArNjk0Miw4IEBACiAJCQkJ
ODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovLAogCQkJCUZF
MzAyMkQwMUUzRDczOTYwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVyLmNwcCAqLywKIAkJ
CQlGRTMwMjJEMTFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oICovLAor
CQkJCUZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAqLywKKwkJCQlG
RTFCRDAyQTFFNzIxQjM3MDAxMzRCQzkgLyogU3RhY2tUcmFjZS5oICovLAogCQkJCTg2QjU4MjZB
MTREMzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLywKIAkJCQlGRTMwMjJENDFF
NDI4NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuY3BwICovLAogCQkJCUZFMzAyMkQ1MUU0Mjg1
NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovLApAQCAtODczOCw2ICs4NzQ0LDcgQEAKIAkJ
CQlGRTE4N0EwRDFDMDMwRDVDMDAzOEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMUYxODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTFCRDAyQjFFNzIxQjRDMDAxMzRC
QzkgLyogU3RhY2tUcmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDQzg1QTEwRUU3OUE0NzAw
Mjg4NjgyIC8qIEpJVElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFM0EwNkJFMUMxMTA0
MTIwMDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTc5MjMzQzJCMUQzNDcxNTcwMEM1QTgzNCAvKiBKSVRNYXRoSUMuaCBpbiBIZWFkZXJzICovLApA
QCAtMTAxNzgsNiArMTAxODUsNyBAQAogCQkJCTBGQzk3RjQxMTgyMDIxMTkwMDJDOUIyNiAvKiBE
RkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGREIy
Q0U3MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdXb3JrbGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkUwNTAxNzFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUZFMUJEMDJDMUU3MjFCNTEwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRTA1MDE1MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1
bWVudHNPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRUJCQUIxREVERjk1MDAwOTkw
MzY5IC8qIERpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzODZB
NzQxREQ2OTg5NTAwODY1MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TdGFja1RyYWNlLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU3RhY2tUcmFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U3RhY2tUcmFjZS5oIgorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworI2lmIE9TKERB
UldJTikgfHwgKE9TKExJTlVYKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX19V
Q0xJQkNfXykpCisjaW5jbHVkZSA8Y3h4YWJpLmg+CisjaW5jbHVkZSA8ZGxmY24uaD4KKyNpbmNs
dWRlIDxleGVjaW5mby5oPgorI2VuZGlmCisKKyNpZiBPUyhEQVJXSU4pIHx8IE9TKExJTlVYKQor
IyAgaWYgUExBVEZPUk0oR1RLKQorIyAgICBpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmlu
ZWQoX19VQ0xJQkNfXykKKyMgICAgICBkZWZpbmUgVVNFX0JBQ0tUUkFDRV9TWU1CT0xTIDEKKyMg
ICAgZW5kaWYKKyMgIGVsc2UKKyMgICAgZGVmaW5lIFVTRV9ETEFERFIgMQorIyAgZW5kaWYKKyNl
bmRpZgorCituYW1lc3BhY2UgSlNDIHsKKworQUxXQVlTX0lOTElORSBzaXplX3QgU3RhY2tUcmFj
ZTo6aW5zdGFuY2VTaXplKGludCBjYXBhY2l0eSkKK3sKKyAgICBjYXBhY2l0eSA9IHN0ZDo6bWF4
KDEsIGNhcGFjaXR5KTsKKyAgICByZXR1cm4gc2l6ZW9mKFN0YWNrVHJhY2UpICsgKGNhcGFjaXR5
IC0gMSk7Cit9CisKK1N0YWNrVHJhY2UqIFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1RyYWNlKGlu
dCBtYXhGcmFtZXMpCit7CisgICAgc2l6ZV90IHNpemVUb0FsbG9jYXRlID0gaW5zdGFuY2VTaXpl
KG1heEZyYW1lcyk7CisgICAgU3RhY2tUcmFjZSogdHJhY2UgPSBuZXcgKE5vdE51bGwsIGZhc3RN
YWxsb2Moc2l6ZVRvQWxsb2NhdGUpKSBTdGFja1RyYWNlKCk7CisKKyAgICBzdGF0aWMgY29uc3Qg
aW50IGZyYW1lc1RvU2tpcCA9IDI7CisgICAgaW50IG51bWJlck9mRnJhbWVzID0gbWF4RnJhbWVz
ICsgZnJhbWVzVG9Ta2lwOworICAgIAorICAgIFdURkdldEJhY2t0cmFjZSgmdHJhY2UtPm1fc2tp
cHBlZEZyYW1lMCwgJm51bWJlck9mRnJhbWVzKTsKKyAgICBBU1NFUlQobnVtYmVyT2ZGcmFtZXMg
PiBmcmFtZXNUb1NraXApOworICAgIHRyYWNlLT5tX3NpemUgPSBudW1iZXJPZkZyYW1lcyAtIGZy
YW1lc1RvU2tpcDsKKyAgICB0cmFjZS0+bV9jYXBhY2l0eSA9IG1heEZyYW1lczsKKworICAgIHJl
dHVybiB0cmFjZTsKK30KKwordm9pZCBTdGFja1RyYWNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit7CisjaWYgVVNFKEJBQ0tUUkFDRV9TWU1CT0xTKQorICAgIGNoYXIqKiBzeW1ib2xz
ID0gYmFja3RyYWNlX3N5bWJvbHMobV9zdGFjaywgbV9zaXplKTsKKyAgICBpZiAoIXN5bWJvbHMp
CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorICAgIAorICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bV9zaXplOyArK2kpIHsKKyAgICAgICAgY29uc3QgY2hhciogbWFuZ2xlZE5hbWUgPSAwOworICAg
ICAgICBjaGFyKiBjeGFEZW1hbmdsZWQgPSAwOworI2lmIFVTRShCQUNLVFJBQ0VfU1lNQk9MUykK
KyAgICAgICAgbWFuZ2xlZE5hbWUgPSBzeW1ib2xzW2ldOworI2VsaWYgVVNFKERMQUREUikKKyAg
ICAgICAgRGxfaW5mbyBpbmZvOworICAgICAgICBpZiAoZGxhZGRyKG1fc3RhY2tbaV0sICZpbmZv
KSAmJiBpbmZvLmRsaV9zbmFtZSkKKyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gaW5mby5kbGlf
c25hbWU7CisgICAgICAgIGlmIChtYW5nbGVkTmFtZSkKKyAgICAgICAgICAgIGN4YURlbWFuZ2xl
ZCA9IGFiaTo6X19jeGFfZGVtYW5nbGUobWFuZ2xlZE5hbWUsIDAsIDAsIDApOworI2VuZGlmCisg
ICAgICAgIGNvbnN0IGludCBmcmFtZU51bWJlciA9IGkgKyAxOworICAgICAgICBpZiAobWFuZ2xl
ZE5hbWUgfHwgY3hhRGVtYW5nbGVkKQorICAgICAgICAgICAgb3V0LnByaW50ZigiJS0zZCAlcCAl
c1xuIiwgZnJhbWVOdW1iZXIsIG1fc3RhY2tbaV0sIGN4YURlbWFuZ2xlZCA/IGN4YURlbWFuZ2xl
ZCA6IG1hbmdsZWROYW1lKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0LnByaW50Zigi
JS0zZCAlcFxuIiwgZnJhbWVOdW1iZXIsIG1fc3RhY2tbaV0pOworICAgICAgICBmcmVlKGN4YURl
bWFuZ2xlZCk7CisgICAgfQorICAgIAorI2lmIFVTRShCQUNLVFJBQ0VfU1lNQk9MUykKKyAgICBm
cmVlKHN5bWJvbHMpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU3RhY2tUcmFjZS5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TdGFja1RyYWNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBTdGFja1RyYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RhY2tUcmFjZSogY2FwdHVyZVN0YWNrVHJhY2Uo
aW50IG1heEZyYW1lcyk7CisKKyAgICBpbnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
aW5saW5lIHN0YXRpYyBzaXplX3QgaW5zdGFuY2VTaXplKGludCBjYXBhY2l0eSk7CisKKyAgICBT
dGFja1RyYWNlKCkgeyB9CisKKyAgICAvLyBXZSBzdHJ1Y3R1cmUgdGhlIHRvcCBmaWVsZHMgdGhp
cyB3YXkgYmVjYXVzZSB0aGUgdW5kZXJseWluZyBzdGFjayBjYXB0dXJlCisgICAgLy8gZmFjaWxp
dHkgd2lsbCBjYXB0dXJlIGZyb20gdGhlIHRvcCBvZiB0aGUgc3RhY2ssIGFuZCB3ZSdsbCBuZWVk
IHRvIHNraXAgdGhlCisgICAgLy8gdG9wIDIgZnJhbWUgd2hpY2ggaXMgb2Ygbm8gaW50ZXJlc3Qu
IFNldHRpbmcgdXAgdGhlIGZpZWxkcyBsYXlvdXQgdGhpcyB3YXkKKyAgICAvLyBhbGxvd3MgdXMg
dG8gY2FwdHVyZSB0aGUgc3RhY2sgaW4gcGxhY2UgYW5kIG1pbmltaXplIHNwYWNlIHdhc3RhZ2Uu
CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgaW50IG1fc2l6ZSB7
IDAgfTsKKyAgICAgICAgICAgIGludCBtX2NhcGFjaXR5OworICAgICAgICB9OworICAgICAgICBz
dHJ1Y3QgeworICAgICAgICAgICAgdm9pZCogbV9za2lwcGVkRnJhbWUwOworICAgICAgICAgICAg
dm9pZCogbV9za2lwcGVkRnJhbWUxOworICAgICAgICB9OworICAgIH07CisgICAgdm9pZCogbV9z
dGFja1sxXTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwo=
</data>
<flag name="review"
          id="325601"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304009</attachid>
            <date>2017-03-09 16:31:28 -0800</date>
            <delta_ts>2017-03-09 16:58:01 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-169454.patch</filename>
            <type>text/plain</type>
            <size>13511</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNjg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE3LTAzLTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgYSBTdGFja1RyYWNlIHV0aWxpdHkgb2JqZWN0IHRoYXQgY2FuIGNhcHR1cmUgc3Rh
Y2sgdHJhY2VzIGZvciBkZWJ1Z2dpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjk0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBpcyBob2lzdGVk
IHJpZ2h0IG91dCBvZiBBc3NlcnRpb25zLmNwcCBmcm9tIHRoZQorICAgICAgICBpbXBsZW1lbnRh
dGlvbnMgb2YgV1RGUHJpbnRCYWNrdHJhY2UoKS4KKworICAgICAgICBUaGUgcmVhc29uIHdlIG5l
ZWQgdGhpcyBTdGFja1RyYWNlIG9iamVjdCBpcyBiZWNhdXNlIGR1cmluZyBoZWFwIGRlYnVnZ2lu
Zywgd2UKKyAgICAgICAgc29tZXRpbWVzIHdhbnQgdG8gY2FwdHVyZSB0aGUgc3RhY2sgdHJhY2Ug
dGhhdCBhbGxvY2F0ZWQgdGhlIG9iamVjdHMgb2YgaW50ZXJlc3QuCisgICAgICAgIER1bXBpbmcg
dGhlIHN0YWNrIHRyYWNlIGRpcmVjdGx5IHRvIHN0ZG91dCAodXNpbmcgV1RGUmVwb3J0QmFja3Ry
YWNlKCkpIG1heQorICAgICAgICBwZXJ0dXJiIHRoZSBleGVjdXRpb24gcHJvZmlsZSBzdWZmaWNp
ZW50bHkgdGhhdCBhbiBpc3N1ZSBtYXkgbm90IHJlcHJvZHVjZSwKKyAgICAgICAgd2hpbGUgYWx0
ZXJuYXRpdmVseSwganVzdCBjYXB0dXJpbmcgdGhlIHN0YWNrIHRyYWNlIGFuZCBkZWZlcnJpbmcg
cHJpbnRpbmcgaXQKKyAgICAgICAgdGlsbCB3ZSBhY3R1YWxseSBuZWVkIGl0IGxhdGVyIHBlcnR1
cmJzIHRoZSBleGVjdXRpb24gcHJvZmlsZSBsZXNzLgorCisgICAgICAgIEluIGFkZGl0aW9uLCBu
b3QgcHJpbnRpbmcgc3RhY2sgdHJhY2VzIGFsbCB0aGUgdGltZSBhbHNvIGFsbG93cyB1cyB0byBw
b2xsdXRlCisgICAgICAgIHN0ZG91dCB3aXRoIHRvbnMgb2Ygc3RhY2sgdHJhY2VzIHRoYXQgbWF5
IGJlIGlycmVsZXZhbnQuCisKKyAgICAgICAgRm9yIG5vdywgd2Ugb25seSBjYXB0dXJlIHRoZSBu
YXRpdmUgc3RhY2sgdHJhY2UuICBXZSdsbCBsZWF2ZSBjYXB0dXJpbmcgYW5kCisgICAgICAgIGlu
dGVncmF0aW5nIHRoZSBKUyBzdGFjayB0cmFjZSBhcyBhbiBleGVyY2lzZSBmb3IgdGhlIGZ1dHVy
ZSBpZiB3ZSBuZWVkIGl0IHRoZW4uCisKKyAgICAgICAgSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93
IHRvIHVzZSB0aGlzIFN0YWNrVHJhY2UgdXRpbGl0eToKKworICAgICAgICAgICAgLy8gQ2FwdHVy
ZSBhIHN0YWNrIHRyYWNlIG9mIHRoZSB0b3AgMTAgZnJhbWVzLgorICAgICAgICAgICAgU3RhY2tU
cmFjZSogdHJhY2UgPSBTdGFja1RyYWNlOjpjYXB0dXJlU3RhY2tUcmFjZSgxMCk7CisgICAgICAg
ICAgICAvLyBQcmludCB0aGUgdHJhY2UuCisgICAgICAgICAgICBkYXRhTG9nKCp0cmFjZSk7Cisg
ICAgICAgICAgICAvLyBSZWxlYXNlIHRoZSB0cmFjZS4KKyAgICAgICAgICAgIGRlbGV0ZSB0cmFj
ZTsKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogdG9vbHMvU3RhY2tUcmFjZS5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdGFja1RyYWNlOjppbnN0YW5jZVNpemUpOgorICAg
ICAgICAoSlNDOjpTdGFja1RyYWNlOjpjYXB0dXJlU3RhY2tUcmFjZSk6CisgICAgICAgIChKU0M6
OlN0YWNrVHJhY2U6OmR1bXApOgorICAgICAgICAqIHRvb2xzL1N0YWNrVHJhY2UuaDogQWRkZWQu
CisgICAgICAgIChKU0M6OlN0YWNrVHJhY2U6OlN0YWNrVHJhY2UpOgorICAgICAgICAoSlNDOjpT
dGFja1RyYWNlOjpzaXplKToKKwogMjAxNy0wMy0wOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3cgSFRUUCBwcm90b2Nv
bCB2ZXJzaW9uIGFuZCBvdGhlciBOZXR3b3JrIExvYWQgTWV0cmljcyAoSVAgQWRkcmVzcywgUHJp
b3JpdHksIENvbm5lY3Rpb24gSUQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAyMTM2ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTkyMiw2ICs5MjIsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIHRvb2xzL0pTRG9sbGFyVk0uY3BwCiAgICAgdG9vbHMvSlNEb2xsYXJW
TVByb3RvdHlwZS5jcHAKICAgICB0b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAorICAgIHRv
b2xzL1N0YWNrVHJhY2UuY3BwCiAgICAgdG9vbHMvVk1JbnNwZWN0b3IuY3BwCiAKICAgICB3YXNt
L0pTV2ViQXNzZW1ibHkuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjEzNjgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIzNjUsNiArMjM2NSw4
IEBACiAJCUZFMUJEMDIxMUU3MjAyNzkwMDEzNEJDOSAvKiBDZWxsUHJvZmlsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQkQwMjAxRTcyMDI3MDAw
MTM0QkM5IC8qIENlbGxQcm9maWxlLmggKi87IH07CiAJCUZFMUJEMDI0MUU3MjA1MzgwMDEzNEJD
OSAvKiBIZWFwVmVyaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUxQkQwMjIxRTcyMDUyRjAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5jcHAg
Ki87IH07CiAJCUZFMUJEMDI1MUU3MjA1MzgwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUJEMDIzMUU3MjA1
MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCAqLzsgfTsKKwkJRkUxQkQwMkIxRTcyMUI0QzAw
MTM0QkM5IC8qIFN0YWNrVHJhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMUJEMDJBMUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmggKi87
IH07CisJCUZFMUJEMDJDMUU3MjFCNTEwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUJEMDI5MUU3MjFCMzcw
MDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAqLzsgfTsKIAkJRkUxQzBGRkQxQjE5M0U5ODAwQjUz
RkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUxQzBGRkMxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMUMwRkZGMUIxOTRG
RDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5j
cHAgKi87IH07CiAJCUZFMjBDRTlEMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlCMTVG
MDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLzsgfTsKQEAgLTQ5NDUsNiArNDk0Nyw4
IEBACiAJCUZFMUJEMDIwMUU3MjAyNzAwMDEzNEJDOSAvKiBDZWxsUHJvZmlsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDZWxsUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTFCRDAyMjFFNzIwNTJGMDAxMzRCQzkgLyogSGVhcFZlcmlmaWVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBWZXJpZmllci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUJEMDIzMUU3MjA1MkYwMDEzNEJDOSAv
KiBIZWFwVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcFZl
cmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMUJEMDI5MUU3MjFCMzcw
MDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0YWNrVHJhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTFC
RDAyQTFFNzIxQjM3MDAxMzRCQzkgLyogU3RhY2tUcmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdGFja1RyYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRDTG9vcC5jcHA7IHBh
dGggPSBsbGludC9MTEludENMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTY5MzgsNiArNjk0Miw4IEBACiAJCQkJODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2Zp
bGVUcmVlTm9kZS5oICovLAogCQkJCUZFMzAyMkQwMUUzRDczOTYwMEJBQzQ5MyAvKiBTaWdpbGxD
cmFzaEFuYWx5emVyLmNwcCAqLywKIAkJCQlGRTMwMjJEMTFFM0Q3Mzk2MDBCQUM0OTMgLyogU2ln
aWxsQ3Jhc2hBbmFseXplci5oICovLAorCQkJCUZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBT
dGFja1RyYWNlLmNwcCAqLywKKwkJCQlGRTFCRDAyQTFFNzIxQjM3MDAxMzRCQzkgLyogU3RhY2tU
cmFjZS5oICovLAogCQkJCTg2QjU4MjZBMTREMzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJy
YXkuaCAqLywKIAkJCQlGRTMwMjJENDFFNDI4NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuY3Bw
ICovLAogCQkJCUZFMzAyMkQ1MUU0Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovLApA
QCAtODczOCw2ICs4NzQ0LDcgQEAKIAkJCQlGRTE4N0EwRDFDMDMwRDVDMDAzOEJCQ0EgLyogSklU
RGl2R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMUYxODEyNEFD
RTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGRTFCRDAyQjFFNzIxQjRDMDAxMzRCQzkgLyogU3RhY2tUcmFjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODZDQzg1QTEwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFM0EwNkJFMUMxMTA0MTIwMDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5MjMzQzJCMUQzNDcxNTcwMEM1QTgzNCAvKiBKSVRN
YXRoSUMuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxNzgsNiArMTAxODUsNyBAQAogCQkJCTBGQzk3
RjQxMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGREIyQ0U3MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdXb3JrbGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAxNzFBQTkwOTExMDBEMzNCMzMgLyogRGly
ZWN0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMUJEMDJDMUU3MjFCNTEwMDEz
NEJDOSAvKiBTdGFja1RyYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDE1MUFBOTA5
MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHNPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyRUJCQUIxREVERjk1MDAwOTkwMzY5IC8qIERpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQzODZBNzQxREQ2OTg5NTAwODY1MkM0IC8qIERpcmVjdEV2YWxF
eGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL1N0YWNrVHJhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9TdGFja1RyYWNlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvU3RhY2tUcmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RhY2tUcmFjZS5oIgorCisjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKworI2lmIE9TKERBUldJTikgfHwgKE9TKExJTlVYKSAmJiBkZWZpbmVkKF9f
R0xJQkNfXykgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykpCisjaW5jbHVkZSA8Y3h4YWJpLmg+Cisj
aW5jbHVkZSA8ZGxmY24uaD4KKyNpbmNsdWRlIDxleGVjaW5mby5oPgorI2VuZGlmCisKKyNpZiBP
UyhEQVJXSU4pIHx8IE9TKExJTlVYKQorIyAgaWYgUExBVEZPUk0oR1RLKQorIyAgICBpZiBkZWZp
bmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykKKyMgICAgICBkZWZpbmUgVVNF
X0JBQ0tUUkFDRV9TWU1CT0xTIDEKKyMgICAgZW5kaWYKKyMgIGVsc2UKKyMgICAgZGVmaW5lIFVT
RV9ETEFERFIgMQorIyAgZW5kaWYKKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKKworQUxXQVlT
X0lOTElORSBzaXplX3QgU3RhY2tUcmFjZTo6aW5zdGFuY2VTaXplKGludCBjYXBhY2l0eSkKK3sK
KyAgICBjYXBhY2l0eSA9IHN0ZDo6bWF4KDEsIGNhcGFjaXR5KTsKKyAgICByZXR1cm4gc2l6ZW9m
KFN0YWNrVHJhY2UpICsgKGNhcGFjaXR5IC0gMSk7Cit9CisKK1N0YWNrVHJhY2UqIFN0YWNrVHJh
Y2U6OmNhcHR1cmVTdGFja1RyYWNlKGludCBtYXhGcmFtZXMpCit7CisgICAgc2l6ZV90IHNpemVU
b0FsbG9jYXRlID0gaW5zdGFuY2VTaXplKG1heEZyYW1lcyk7CisgICAgU3RhY2tUcmFjZSogdHJh
Y2UgPSBuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2Moc2l6ZVRvQWxsb2NhdGUpKSBTdGFja1RyYWNl
KCk7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IGZyYW1lc1RvU2tpcCA9IDI7CisgICAgaW50IG51
bWJlck9mRnJhbWVzID0gbWF4RnJhbWVzICsgZnJhbWVzVG9Ta2lwOworICAgIAorICAgIFdURkdl
dEJhY2t0cmFjZSgmdHJhY2UtPm1fc2tpcHBlZEZyYW1lMCwgJm51bWJlck9mRnJhbWVzKTsKKyAg
ICBBU1NFUlQobnVtYmVyT2ZGcmFtZXMgPiBmcmFtZXNUb1NraXApOworICAgIHRyYWNlLT5tX3Np
emUgPSBudW1iZXJPZkZyYW1lcyAtIGZyYW1lc1RvU2tpcDsKKyAgICB0cmFjZS0+bV9jYXBhY2l0
eSA9IG1heEZyYW1lczsKKworICAgIHJldHVybiB0cmFjZTsKK30KKwordm9pZCBTdGFja1RyYWNl
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisjaWYgVVNFKEJBQ0tUUkFDRV9TWU1C
T0xTKQorICAgIGNoYXIqKiBzeW1ib2xzID0gYmFja3RyYWNlX3N5bWJvbHMobV9zdGFjaywgbV9z
aXplKTsKKyAgICBpZiAoIXN5bWJvbHMpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorICAgIAor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpIHsKKyAgICAgICAgY29uc3QgY2hh
ciogbWFuZ2xlZE5hbWUgPSAwOworICAgICAgICBjaGFyKiBjeGFEZW1hbmdsZWQgPSAwOworI2lm
IFVTRShCQUNLVFJBQ0VfU1lNQk9MUykKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBzeW1ib2xzW2ld
OworI2VsaWYgVVNFKERMQUREUikKKyAgICAgICAgRGxfaW5mbyBpbmZvOworICAgICAgICBpZiAo
ZGxhZGRyKG1fc3RhY2tbaV0sICZpbmZvKSAmJiBpbmZvLmRsaV9zbmFtZSkKKyAgICAgICAgICAg
IG1hbmdsZWROYW1lID0gaW5mby5kbGlfc25hbWU7CisgICAgICAgIGlmIChtYW5nbGVkTmFtZSkK
KyAgICAgICAgICAgIGN4YURlbWFuZ2xlZCA9IGFiaTo6X19jeGFfZGVtYW5nbGUobWFuZ2xlZE5h
bWUsIDAsIDAsIDApOworI2VuZGlmCisgICAgICAgIGNvbnN0IGludCBmcmFtZU51bWJlciA9IGkg
KyAxOworICAgICAgICBpZiAobWFuZ2xlZE5hbWUgfHwgY3hhRGVtYW5nbGVkKQorICAgICAgICAg
ICAgb3V0LnByaW50ZigiJS0zZCAlcCAlc1xuIiwgZnJhbWVOdW1iZXIsIG1fc3RhY2tbaV0sIGN4
YURlbWFuZ2xlZCA/IGN4YURlbWFuZ2xlZCA6IG1hbmdsZWROYW1lKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgb3V0LnByaW50ZigiJS0zZCAlcFxuIiwgZnJhbWVOdW1iZXIsIG1fc3RhY2tb
aV0pOworICAgICAgICBmcmVlKGN4YURlbWFuZ2xlZCk7CisgICAgfQorICAgIAorI2lmIFVTRShC
QUNLVFJBQ0VfU1lNQk9MUykKKyAgICBmcmVlKHN5bWJvbHMpOworI2VuZGlmCit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJh
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU3RhY2tUcmFj
ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TdGFja1Ry
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTdGFja1RyYWNlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RhY2tU
cmFjZSogY2FwdHVyZVN0YWNrVHJhY2UoaW50IG1heEZyYW1lcyk7CisKKyAgICBpbnQgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgaW5saW5lIHN0YXRpYyBzaXplX3QgaW5zdGFuY2VTaXpl
KGludCBjYXBhY2l0eSk7CisKKyAgICBTdGFja1RyYWNlKCkgeyB9CisKKyAgICAvLyBXZSBzdHJ1
Y3R1cmUgdGhlIHRvcCBmaWVsZHMgdGhpcyB3YXkgYmVjYXVzZSB0aGUgdW5kZXJseWluZyBzdGFj
ayBjYXB0dXJlCisgICAgLy8gZmFjaWxpdHkgd2lsbCBjYXB0dXJlIGZyb20gdGhlIHRvcCBvZiB0
aGUgc3RhY2ssIGFuZCB3ZSdsbCBuZWVkIHRvIHNraXAgdGhlCisgICAgLy8gdG9wIDIgZnJhbWUg
d2hpY2ggaXMgb2Ygbm8gaW50ZXJlc3QuIFNldHRpbmcgdXAgdGhlIGZpZWxkcyBsYXlvdXQgdGhp
cyB3YXkKKyAgICAvLyBhbGxvd3MgdXMgdG8gY2FwdHVyZSB0aGUgc3RhY2sgaW4gcGxhY2UgYW5k
IG1pbmltaXplIHNwYWNlIHdhc3RhZ2UuCisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3Qgewor
ICAgICAgICAgICAgaW50IG1fc2l6ZSB7IDAgfTsKKyAgICAgICAgICAgIGludCBtX2NhcGFjaXR5
OworICAgICAgICB9OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdm9pZCogbV9za2lw
cGVkRnJhbWUwOworICAgICAgICAgICAgdm9pZCogbV9za2lwcGVkRnJhbWUxOworICAgICAgICB9
OworICAgIH07CisgICAgdm9pZCogbV9zdGFja1sxXTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
Qwo=
</data>
<flag name="review"
          id="325604"
          type_id="1"
          status="-"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304012</attachid>
            <date>2017-03-09 16:58:01 -0800</date>
            <delta_ts>2017-03-09 17:25:01 -0800</delta_ts>
            <desc>proposed patch: fixed size calculation and ChangeLog.</desc>
            <filename>bug-169454.patch</filename>
            <type>text/plain</type>
            <size>13592</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNjg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE3LTAzLTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgYSBTdGFja1RyYWNlIHV0aWxpdHkgb2JqZWN0IHRoYXQgY2FuIGNhcHR1cmUgc3Rh
Y2sgdHJhY2VzIGZvciBkZWJ1Z2dpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjk0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBpcyBob2lzdGVk
IHJpZ2h0IG91dCBvZiBBc3NlcnRpb25zLmNwcCBmcm9tIHRoZQorICAgICAgICBpbXBsZW1lbnRh
dGlvbnMgb2YgV1RGUHJpbnRCYWNrdHJhY2UoKS4KKworICAgICAgICBUaGUgcmVhc29uIHdlIG5l
ZWQgdGhpcyBTdGFja1RyYWNlIG9iamVjdCBpcyBiZWNhdXNlIGR1cmluZyBoZWFwIGRlYnVnZ2lu
Zywgd2UKKyAgICAgICAgc29tZXRpbWVzIHdhbnQgdG8gY2FwdHVyZSB0aGUgc3RhY2sgdHJhY2Ug
dGhhdCBhbGxvY2F0ZWQgdGhlIG9iamVjdHMgb2YgaW50ZXJlc3QuCisgICAgICAgIER1bXBpbmcg
dGhlIHN0YWNrIHRyYWNlIGRpcmVjdGx5IHRvIHN0ZG91dCAodXNpbmcgV1RGUmVwb3J0QmFja3Ry
YWNlKCkpIG1heQorICAgICAgICBwZXJ0dXJiIHRoZSBleGVjdXRpb24gcHJvZmlsZSBzdWZmaWNp
ZW50bHkgdGhhdCBhbiBpc3N1ZSBtYXkgbm90IHJlcHJvZHVjZSwKKyAgICAgICAgd2hpbGUgYWx0
ZXJuYXRpdmVseSwganVzdCBjYXB0dXJpbmcgdGhlIHN0YWNrIHRyYWNlIGFuZCBkZWZlcnJpbmcg
cHJpbnRpbmcgaXQKKyAgICAgICAgdGlsbCB3ZSBhY3R1YWxseSBuZWVkIGl0IGxhdGVyIHBlcnR1
cmJzIHRoZSBleGVjdXRpb24gcHJvZmlsZSBsZXNzLgorCisgICAgICAgIEluIGFkZGl0aW9uLCBq
dXN0IGNhcHR1cmluZyB0aGUgc3RhY2sgdHJhY2VzIChpbnN0ZWFkIG9mIHByaW50aW5nIHRoZW0K
KyAgICAgICAgaW1tZWRpYXRlbHkgYXQgZWFjaCBjYXB0dXJlIHNpdGUpIGFsbG93cyB1cyB0byBh
dm9pZCBwb2xsdXRpbmcgc3Rkb3V0IHdpdGggdG9ucworICAgICAgICBvZiBzdGFjayB0cmFjZXMg
dGhhdCBtYXkgYmUgaXJyZWxldmFudC4KKworICAgICAgICBGb3Igbm93LCB3ZSBvbmx5IGNhcHR1
cmUgdGhlIG5hdGl2ZSBzdGFjayB0cmFjZS4gIFdlJ2xsIGxlYXZlIGNhcHR1cmluZyBhbmQKKyAg
ICAgICAgaW50ZWdyYXRpbmcgdGhlIEpTIHN0YWNrIHRyYWNlIGFzIGFuIGV4ZXJjaXNlIGZvciB0
aGUgZnV0dXJlIGlmIHdlIG5lZWQgaXQgdGhlbi4KKworICAgICAgICBIZXJlJ3MgYW4gZXhhbXBs
ZSBvZiBob3cgdG8gdXNlIHRoaXMgU3RhY2tUcmFjZSB1dGlsaXR5OgorCisgICAgICAgICAgICAv
LyBDYXB0dXJlIGEgc3RhY2sgdHJhY2Ugb2YgdGhlIHRvcCAxMCBmcmFtZXMuCisgICAgICAgICAg
ICBTdGFja1RyYWNlKiB0cmFjZSA9IFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1RyYWNlKDEwKTsK
KyAgICAgICAgICAgIC8vIFByaW50IHRoZSB0cmFjZS4KKyAgICAgICAgICAgIGRhdGFMb2coKnRy
YWNlKTsKKyAgICAgICAgICAgIC8vIFJlbGVhc2UgdGhlIHRyYWNlLgorICAgICAgICAgICAgZGVs
ZXRlIHRyYWNlOworCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB0b29scy9TdGFj
a1RyYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlN0YWNrVHJhY2U6Omluc3RhbmNlU2l6
ZSk6CisgICAgICAgIChKU0M6OlN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1RyYWNlKToKKyAgICAg
ICAgKEpTQzo6U3RhY2tUcmFjZTo6ZHVtcCk6CisgICAgICAgICogdG9vbHMvU3RhY2tUcmFjZS5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U3RhY2tUcmFjZTo6U3RhY2tUcmFjZSk6CisgICAgICAg
IChKU0M6OlN0YWNrVHJhY2U6OnNpemUpOgorCiAyMDE3LTAzLTA5ICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdyBIVFRQ
IHByb3RvY29sIHZlcnNpb24gYW5kIG90aGVyIE5ldHdvcmsgTG9hZCBNZXRyaWNzIChJUCBBZGRy
ZXNzLCBQcmlvcml0eSwgQ29ubmVjdGlvbiBJRCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDIxMzY4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTIyLDYgKzkyMiw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgdG9vbHMvSlNEb2xsYXJWTS5jcHAKICAgICB0b29scy9K
U0RvbGxhclZNUHJvdG90eXBlLmNwcAogICAgIHRvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3Bw
CisgICAgdG9vbHMvU3RhY2tUcmFjZS5jcHAKICAgICB0b29scy9WTUluc3BlY3Rvci5jcHAKIAog
ICAgIHdhc20vSlNXZWJBc3NlbWJseS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMTM2ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM2NSw2
ICsyMzY1LDggQEAKIAkJRkUxQkQwMjExRTcyMDI3OTAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFCRDAyMDFF
NzIwMjcwMDAxMzRCQzkgLyogQ2VsbFByb2ZpbGUuaCAqLzsgfTsKIAkJRkUxQkQwMjQxRTcyMDUz
ODAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFCRDAyMjFFNzIwNTJGMDAxMzRCQzkgLyogSGVhcFZlcmlm
aWVyLmNwcCAqLzsgfTsKIAkJRkUxQkQwMjUxRTcyMDUzODAwMTM0QkM5IC8qIEhlYXBWZXJpZmll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQkQw
MjMxRTcyMDUyRjAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5oICovOyB9OworCQlGRTFCRDAyQjFF
NzIxQjRDMDAxMzRCQzkgLyogU3RhY2tUcmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQkQwMkExRTcyMUIzNzAwMTM0QkM5IC8qIFN0YWNrVHJh
Y2UuaCAqLzsgfTsKKwkJRkUxQkQwMkMxRTcyMUI1MTAwMTM0QkM5IC8qIFN0YWNrVHJhY2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQkQwMjkx
RTcyMUIzNzAwMTM0QkM5IC8qIFN0YWNrVHJhY2UuY3BwICovOyB9OwogCQlGRTFDMEZGRDFCMTkz
RTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGQzFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUxQzBG
RkYxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGRTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhj
ZXB0aW9uLmNwcCAqLzsgfTsKIAkJRkUyMENFOUQxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xv
b3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUy
MENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovOyB9OwpAQCAtNDk0NSw2
ICs0OTQ3LDggQEAKIAkJRkUxQkQwMjAxRTcyMDI3MDAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENlbGxQcm9maWxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUJEMDIyMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVy
aWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFZlcmlm
aWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxQkQwMjMxRTcyMDUyRjAw
MTM0QkM5IC8qIEhlYXBWZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIZWFwVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxQkQwMjkx
RTcyMUIzNzAwMTM0QkM5IC8qIFN0YWNrVHJhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RhY2tUcmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFMUJEMDJBMUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrVHJhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUxQzBGRkMxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRD
TG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludENMb29w
LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjkzOCw2ICs2OTQyLDggQEAKIAkJCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYg
LyogUHJvZmlsZVRyZWVOb2RlLmggKi8sCiAJCQkJRkUzMDIyRDAxRTNENzM5NjAwQkFDNDkzIC8q
IFNpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwICovLAogCQkJCUZFMzAyMkQxMUUzRDczOTYwMEJBQzQ5
MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVyLmggKi8sCisJCQkJRkUxQkQwMjkxRTcyMUIzNzAwMTM0
QkM5IC8qIFN0YWNrVHJhY2UuY3BwICovLAorCQkJCUZFMUJEMDJBMUU3MjFCMzcwMDEzNEJDOSAv
KiBTdGFja1RyYWNlLmggKi8sCiAJCQkJODZCNTgyNkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRpZXJl
ZE1NYXBBcnJheS5oICovLAogCQkJCUZFMzAyMkQ0MUU0Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3Bl
Y3Rvci5jcHAgKi8sCiAJCQkJRkUzMDIyRDUxRTQyODU2NzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9y
LmggKi8sCkBAIC04NzM4LDYgKzg3NDQsNyBAQAogCQkJCUZFMTg3QTBEMUMwMzBENUMwMDM4QkJD
QSAvKiBKSVREaXZHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3
MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUx
RjE4MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUZFMUJEMDJCMUU3MjFCNEMwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkUzQTA2QkUxQzExMDQxMjAwMzkwRkREIC8qIEpJVExlZnRTaGlm
dEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzkyMzNDMkIxRDM0NzE1NzAwQzVBODM0
IC8qIEpJVE1hdGhJQy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDE3OCw2ICsxMDE4NSw3IEBACiAJ
CQkJMEZDOTdGNDExODIwMjExOTAwMkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEQjJDRTcxNzQ4MzBBMjAwN0IzQzFCIC8qIERG
R1dvcmtsaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDE3MUFBOTA5MTEwMEQzM0Iz
MyAvKiBEaXJlY3RBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUxQkQwMkMxRTcy
MUI1MTAwMTM0QkM5IC8qIFN0YWNrVHJhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUw
MTUxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50c09mZnNldC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjJFQkJBQjFERURGOTUwMDA5OTAzNjkgLyogRGlyZWN0RXZhbENvZGVDYWNo
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDM4NkE3NDFERDY5ODk1MDA4NjUyQzQgLyogRGly
ZWN0RXZhbEV4ZWN1dGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvU3RhY2tUcmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9TdGFja1RyYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdGFja1RyYWNlLmgiCisKKyNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorCisjaWYgT1MoREFSV0lOKSB8fCAoT1MoTElOVVgpICYmIGRl
ZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSkKKyNpbmNsdWRlIDxjeHhh
YmkuaD4KKyNpbmNsdWRlIDxkbGZjbi5oPgorI2luY2x1ZGUgPGV4ZWNpbmZvLmg+CisjZW5kaWYK
KworI2lmIE9TKERBUldJTikgfHwgT1MoTElOVVgpCisjICBpZiBQTEFURk9STShHVEspCisjICAg
IGlmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKQorIyAgICAgIGRl
ZmluZSBVU0VfQkFDS1RSQUNFX1NZTUJPTFMgMQorIyAgICBlbmRpZgorIyAgZWxzZQorIyAgICBk
ZWZpbmUgVVNFX0RMQUREUiAxCisjICBlbmRpZgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0Mgewor
CitBTFdBWVNfSU5MSU5FIHNpemVfdCBTdGFja1RyYWNlOjppbnN0YW5jZVNpemUoaW50IGNhcGFj
aXR5KQoreworICAgIGNhcGFjaXR5ID0gc3RkOjptYXgoMSwgY2FwYWNpdHkpOworICAgIHJldHVy
biBzaXplb2YoU3RhY2tUcmFjZSkgKyAoY2FwYWNpdHkgLSAxKSAqIHNpemVvZih2b2lkKik7Cit9
CisKK1N0YWNrVHJhY2UqIFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1RyYWNlKGludCBtYXhGcmFt
ZXMpCit7CisgICAgc2l6ZV90IHNpemVUb0FsbG9jYXRlID0gaW5zdGFuY2VTaXplKG1heEZyYW1l
cyk7CisgICAgU3RhY2tUcmFjZSogdHJhY2UgPSBuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2Moc2l6
ZVRvQWxsb2NhdGUpKSBTdGFja1RyYWNlKCk7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IGZyYW1l
c1RvU2tpcCA9IDI7CisgICAgaW50IG51bWJlck9mRnJhbWVzID0gbWF4RnJhbWVzICsgZnJhbWVz
VG9Ta2lwOworICAgIAorICAgIFdURkdldEJhY2t0cmFjZSgmdHJhY2UtPm1fc2tpcHBlZEZyYW1l
MCwgJm51bWJlck9mRnJhbWVzKTsKKyAgICBBU1NFUlQobnVtYmVyT2ZGcmFtZXMgPiBmcmFtZXNU
b1NraXApOworICAgIHRyYWNlLT5tX3NpemUgPSBudW1iZXJPZkZyYW1lcyAtIGZyYW1lc1RvU2tp
cDsKKyAgICB0cmFjZS0+bV9jYXBhY2l0eSA9IG1heEZyYW1lczsKKworICAgIHJldHVybiB0cmFj
ZTsKK30KKwordm9pZCBTdGFja1RyYWNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7
CisjaWYgVVNFKEJBQ0tUUkFDRV9TWU1CT0xTKQorICAgIGNoYXIqKiBzeW1ib2xzID0gYmFja3Ry
YWNlX3N5bWJvbHMobV9zdGFjaywgbV9zaXplKTsKKyAgICBpZiAoIXN5bWJvbHMpCisgICAgICAg
IHJldHVybjsKKyNlbmRpZgorICAgIAorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9zaXplOyAr
K2kpIHsKKyAgICAgICAgY29uc3QgY2hhciogbWFuZ2xlZE5hbWUgPSAwOworICAgICAgICBjaGFy
KiBjeGFEZW1hbmdsZWQgPSAwOworI2lmIFVTRShCQUNLVFJBQ0VfU1lNQk9MUykKKyAgICAgICAg
bWFuZ2xlZE5hbWUgPSBzeW1ib2xzW2ldOworI2VsaWYgVVNFKERMQUREUikKKyAgICAgICAgRGxf
aW5mbyBpbmZvOworICAgICAgICBpZiAoZGxhZGRyKG1fc3RhY2tbaV0sICZpbmZvKSAmJiBpbmZv
LmRsaV9zbmFtZSkKKyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gaW5mby5kbGlfc25hbWU7Cisg
ICAgICAgIGlmIChtYW5nbGVkTmFtZSkKKyAgICAgICAgICAgIGN4YURlbWFuZ2xlZCA9IGFiaTo6
X19jeGFfZGVtYW5nbGUobWFuZ2xlZE5hbWUsIDAsIDAsIDApOworI2VuZGlmCisgICAgICAgIGNv
bnN0IGludCBmcmFtZU51bWJlciA9IGkgKyAxOworICAgICAgICBpZiAobWFuZ2xlZE5hbWUgfHwg
Y3hhRGVtYW5nbGVkKQorICAgICAgICAgICAgb3V0LnByaW50ZigiJS0zZCAlcCAlc1xuIiwgZnJh
bWVOdW1iZXIsIG1fc3RhY2tbaV0sIGN4YURlbWFuZ2xlZCA/IGN4YURlbWFuZ2xlZCA6IG1hbmds
ZWROYW1lKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0LnByaW50ZigiJS0zZCAlcFxu
IiwgZnJhbWVOdW1iZXIsIG1fc3RhY2tbaV0pOworICAgICAgICBmcmVlKGN4YURlbWFuZ2xlZCk7
CisgICAgfQorICAgIAorI2lmIFVTRShCQUNLVFJBQ0VfU1lNQk9MUykKKyAgICBmcmVlKHN5bWJv
bHMpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvU3RhY2tUcmFjZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9TdGFja1RyYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBTdGFja1RyYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgU3RhY2tUcmFjZSogY2FwdHVyZVN0YWNrVHJhY2UoaW50IG1heEZy
YW1lcyk7CisKKyAgICBpbnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorCisgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgaW5saW5lIHN0
YXRpYyBzaXplX3QgaW5zdGFuY2VTaXplKGludCBjYXBhY2l0eSk7CisKKyAgICBTdGFja1RyYWNl
KCkgeyB9CisKKyAgICAvLyBXZSBzdHJ1Y3R1cmUgdGhlIHRvcCBmaWVsZHMgdGhpcyB3YXkgYmVj
YXVzZSB0aGUgdW5kZXJseWluZyBzdGFjayBjYXB0dXJlCisgICAgLy8gZmFjaWxpdHkgd2lsbCBj
YXB0dXJlIGZyb20gdGhlIHRvcCBvZiB0aGUgc3RhY2ssIGFuZCB3ZSdsbCBuZWVkIHRvIHNraXAg
dGhlCisgICAgLy8gdG9wIDIgZnJhbWUgd2hpY2ggaXMgb2Ygbm8gaW50ZXJlc3QuIFNldHRpbmcg
dXAgdGhlIGZpZWxkcyBsYXlvdXQgdGhpcyB3YXkKKyAgICAvLyBhbGxvd3MgdXMgdG8gY2FwdHVy
ZSB0aGUgc3RhY2sgaW4gcGxhY2UgYW5kIG1pbmltaXplIHNwYWNlIHdhc3RhZ2UuCisgICAgdW5p
b24geworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgaW50IG1fc2l6ZSB7IDAgfTsKKyAg
ICAgICAgICAgIGludCBtX2NhcGFjaXR5OworICAgICAgICB9OworICAgICAgICBzdHJ1Y3Qgewor
ICAgICAgICAgICAgdm9pZCogbV9za2lwcGVkRnJhbWUwOworICAgICAgICAgICAgdm9pZCogbV9z
a2lwcGVkRnJhbWUxOworICAgICAgICB9OworICAgIH07CisgICAgdm9pZCogbV9zdGFja1sxXTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQwo=
</data>
<flag name="review"
          id="325608"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304014</attachid>
            <date>2017-03-09 17:25:01 -0800</date>
            <delta_ts>2017-03-10 10:39:44 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-169454.patch</filename>
            <type>text/plain</type>
            <size>13505</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNjk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE3LTAzLTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgYSBTdGFja1RyYWNlIHV0aWxpdHkgb2JqZWN0IHRoYXQgY2FuIGNhcHR1cmUgc3Rh
Y2sgdHJhY2VzIGZvciBkZWJ1Z2dpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjk0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIFNh
Ym9mZi4KKworICAgICAgICBUaGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBpcyBob2lzdGVk
IHJpZ2h0IG91dCBvZiBBc3NlcnRpb25zLmNwcCBmcm9tIHRoZQorICAgICAgICBpbXBsZW1lbnRh
dGlvbnMgb2YgV1RGUHJpbnRCYWNrdHJhY2UoKS4KKworICAgICAgICBUaGUgcmVhc29uIHdlIG5l
ZWQgdGhpcyBTdGFja1RyYWNlIG9iamVjdCBpcyBiZWNhdXNlIGR1cmluZyBoZWFwIGRlYnVnZ2lu
Zywgd2UKKyAgICAgICAgc29tZXRpbWVzIHdhbnQgdG8gY2FwdHVyZSB0aGUgc3RhY2sgdHJhY2Ug
dGhhdCBhbGxvY2F0ZWQgdGhlIG9iamVjdHMgb2YgaW50ZXJlc3QuCisgICAgICAgIER1bXBpbmcg
dGhlIHN0YWNrIHRyYWNlIGRpcmVjdGx5IHRvIHN0ZG91dCAodXNpbmcgV1RGUmVwb3J0QmFja3Ry
YWNlKCkpIG1heQorICAgICAgICBwZXJ0dXJiIHRoZSBleGVjdXRpb24gcHJvZmlsZSBzdWZmaWNp
ZW50bHkgdGhhdCBhbiBpc3N1ZSBtYXkgbm90IHJlcHJvZHVjZSwKKyAgICAgICAgd2hpbGUgYWx0
ZXJuYXRpdmVseSwganVzdCBjYXB0dXJpbmcgdGhlIHN0YWNrIHRyYWNlIGFuZCBkZWZlcnJpbmcg
cHJpbnRpbmcgaXQKKyAgICAgICAgdGlsbCB3ZSBhY3R1YWxseSBuZWVkIGl0IGxhdGVyIHBlcnR1
cmJzIHRoZSBleGVjdXRpb24gcHJvZmlsZSBsZXNzLgorCisgICAgICAgIEluIGFkZGl0aW9uLCBq
dXN0IGNhcHR1cmluZyB0aGUgc3RhY2sgdHJhY2VzIChpbnN0ZWFkIG9mIHByaW50aW5nIHRoZW0K
KyAgICAgICAgaW1tZWRpYXRlbHkgYXQgZWFjaCBjYXB0dXJlIHNpdGUpIGFsbG93cyB1cyB0byBh
dm9pZCBwb2xsdXRpbmcgc3Rkb3V0IHdpdGggdG9ucworICAgICAgICBvZiBzdGFjayB0cmFjZXMg
dGhhdCBtYXkgYmUgaXJyZWxldmFudC4KKworICAgICAgICBGb3Igbm93LCB3ZSBvbmx5IGNhcHR1
cmUgdGhlIG5hdGl2ZSBzdGFjayB0cmFjZS4gIFdlJ2xsIGxlYXZlIGNhcHR1cmluZyBhbmQKKyAg
ICAgICAgaW50ZWdyYXRpbmcgdGhlIEpTIHN0YWNrIHRyYWNlIGFzIGFuIGV4ZXJjaXNlIGZvciB0
aGUgZnV0dXJlIGlmIHdlIG5lZWQgaXQgdGhlbi4KKworICAgICAgICBIZXJlJ3MgYW4gZXhhbXBs
ZSBvZiBob3cgdG8gdXNlIHRoaXMgU3RhY2tUcmFjZSB1dGlsaXR5OgorCisgICAgICAgICAgICAv
LyBDYXB0dXJlIGEgc3RhY2sgdHJhY2Ugb2YgdGhlIHRvcCAxMCBmcmFtZXMuCisgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tUcmFjZT4gdHJhY2UoU3RhY2tUcmFjZTo6Y2FwdHVyZVN0
YWNrVHJhY2UoMTApKTsKKyAgICAgICAgICAgIC8vIFByaW50IHRoZSB0cmFjZS4KKyAgICAgICAg
ICAgIGRhdGFMb2coKnRyYWNlKTsKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
dG9vbHMvU3RhY2tUcmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdGFja1RyYWNlOjpp
bnN0YW5jZVNpemUpOgorICAgICAgICAoSlNDOjpTdGFja1RyYWNlOjpjYXB0dXJlU3RhY2tUcmFj
ZSk6CisgICAgICAgIChKU0M6OlN0YWNrVHJhY2U6OmR1bXApOgorICAgICAgICAqIHRvb2xzL1N0
YWNrVHJhY2UuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlN0YWNrVHJhY2U6OlN0YWNrVHJhY2Up
OgorICAgICAgICAoSlNDOjpTdGFja1RyYWNlOjpzaXplKToKKwogMjAxNy0wMy0wOSAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseTog
RW5hYmxlIGZhc3QgbWVtb3J5IGZvciBXSzIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDIxMzY5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTIyLDYgKzkyMiw3IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9TT1VSQ0VTCiAgICAgdG9vbHMvSlNEb2xsYXJWTS5jcHAKICAgICB0b29scy9KU0Rv
bGxhclZNUHJvdG90eXBlLmNwcAogICAgIHRvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCisg
ICAgdG9vbHMvU3RhY2tUcmFjZS5jcHAKICAgICB0b29scy9WTUluc3BlY3Rvci5jcHAKIAogICAg
IHdhc20vSlNXZWJBc3NlbWJseS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMTM2OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM2NSw2ICsy
MzY1LDggQEAKIAkJRkUxQkQwMjExRTcyMDI3OTAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFCRDAyMDFFNzIw
MjcwMDAxMzRCQzkgLyogQ2VsbFByb2ZpbGUuaCAqLzsgfTsKIAkJRkUxQkQwMjQxRTcyMDUzODAw
MTM0QkM5IC8qIEhlYXBWZXJpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTFCRDAyMjFFNzIwNTJGMDAxMzRCQzkgLyogSGVhcFZlcmlmaWVy
LmNwcCAqLzsgfTsKIAkJRkUxQkQwMjUxRTcyMDUzODAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQkQwMjMx
RTcyMDUyRjAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5oICovOyB9OworCQlGRTFCRDAyQjFFNzIx
QjRDMDAxMzRCQzkgLyogU3RhY2tUcmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUxQkQwMkExRTcyMUIzNzAwMTM0QkM5IC8qIFN0YWNrVHJhY2Uu
aCAqLzsgfTsKKwkJRkUxQkQwMkMxRTcyMUI1MTAwMTM0QkM5IC8qIFN0YWNrVHJhY2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQkQwMjkxRTcy
MUIzNzAwMTM0QkM5IC8qIFN0YWNrVHJhY2UuY3BwICovOyB9OwogCQlGRTFDMEZGRDFCMTkzRTk4
MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTFDMEZGQzFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUxQzBGRkYx
QjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGRTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0
aW9uLmNwcCAqLzsgfTsKIAkJRkUyMENFOUQxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3Au
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENF
OUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovOyB9OwpAQCAtNDk0NSw2ICs0
OTQ3LDggQEAKIAkJRkUxQkQwMjAxRTcyMDI3MDAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENlbGxQcm9maWxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFMUJEMDIyMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZp
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFZlcmlmaWVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxQkQwMjMxRTcyMDUyRjAwMTM0
QkM5IC8qIEhlYXBWZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
ZWFwVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxQkQwMjkxRTcy
MUIzNzAwMTM0QkM5IC8qIFN0YWNrVHJhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RhY2tUcmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFMUJEMDJBMUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrVHJhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkUxQzBGRkMxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9v
cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludENMb29wLmNw
cDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjkzOCw2ICs2OTQyLDggQEAKIAkJCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMzMDYgLyog
UHJvZmlsZVRyZWVOb2RlLmggKi8sCiAJCQkJRkUzMDIyRDAxRTNENzM5NjAwQkFDNDkzIC8qIFNp
Z2lsbENyYXNoQW5hbHl6ZXIuY3BwICovLAogCQkJCUZFMzAyMkQxMUUzRDczOTYwMEJBQzQ5MyAv
KiBTaWdpbGxDcmFzaEFuYWx5emVyLmggKi8sCisJCQkJRkUxQkQwMjkxRTcyMUIzNzAwMTM0QkM5
IC8qIFN0YWNrVHJhY2UuY3BwICovLAorCQkJCUZFMUJEMDJBMUU3MjFCMzcwMDEzNEJDOSAvKiBT
dGFja1RyYWNlLmggKi8sCiAJCQkJODZCNTgyNkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRpZXJlZE1N
YXBBcnJheS5oICovLAogCQkJCUZFMzAyMkQ0MUU0Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rv
ci5jcHAgKi8sCiAJCQkJRkUzMDIyRDUxRTQyODU2NzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmgg
Ki8sCkBAIC04NzM4LDYgKzg3NDQsNyBAQAogCQkJCUZFMTg3QTBEMUMwMzBENUMwMDM4QkJDQSAv
KiBKSVREaXZHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQw
MEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUxRjE4
MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICov
LAorCQkJCUZFMUJEMDJCMUU3MjFCNEMwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkUzQTA2QkUxQzExMDQxMjAwMzkwRkREIC8qIEpJVExlZnRTaGlmdEdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzkyMzNDMkIxRDM0NzE1NzAwQzVBODM0IC8q
IEpJVE1hdGhJQy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDE3OCw2ICsxMDE4NSw3IEBACiAJCQkJ
MEZDOTdGNDExODIwMjExOTAwMkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEQjJDRTcxNzQ4MzBBMjAwN0IzQzFCIC8qIERGR1dv
cmtsaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDE3MUFBOTA5MTEwMEQzM0IzMyAv
KiBEaXJlY3RBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUxQkQwMkMxRTcyMUI1
MTAwMTM0QkM5IC8qIFN0YWNrVHJhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMTUx
QUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50c09mZnNldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjJFQkJBQjFERURGOTUwMDA5OTAzNjkgLyogRGlyZWN0RXZhbENvZGVDYWNoZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDM4NkE3NDFERDY5ODk1MDA4NjUyQzQgLyogRGlyZWN0
RXZhbEV4ZWN1dGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvU3RhY2tUcmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9TdGFja1RyYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdGFja1RyYWNlLmgiCisKKyNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgorCisjaWYgT1MoREFSV0lOKSB8fCAoT1MoTElOVVgpICYmIGRlZmlu
ZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSkKKyNpbmNsdWRlIDxjeHhhYmku
aD4KKyNpbmNsdWRlIDxkbGZjbi5oPgorI2luY2x1ZGUgPGV4ZWNpbmZvLmg+CisjZW5kaWYKKwor
I2lmIE9TKERBUldJTikgfHwgT1MoTElOVVgpCisjICBpZiBQTEFURk9STShHVEspCisjICAgIGlm
IGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKQorIyAgICAgIGRlZmlu
ZSBVU0VfQkFDS1RSQUNFX1NZTUJPTFMgMQorIyAgICBlbmRpZgorIyAgZWxzZQorIyAgICBkZWZp
bmUgVVNFX0RMQUREUiAxCisjICBlbmRpZgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworCitB
TFdBWVNfSU5MSU5FIHNpemVfdCBTdGFja1RyYWNlOjppbnN0YW5jZVNpemUoaW50IGNhcGFjaXR5
KQoreworICAgIEFTU0VSVChjYXBhY2l0eSA+PSAxKTsKKyAgICByZXR1cm4gc2l6ZW9mKFN0YWNr
VHJhY2UpICsgKGNhcGFjaXR5IC0gMSkgKiBzaXplb2Yodm9pZCopOworfQorCitTdGFja1RyYWNl
KiBTdGFja1RyYWNlOjpjYXB0dXJlU3RhY2tUcmFjZShpbnQgbWF4RnJhbWVzKQoreworICAgIG1h
eEZyYW1lcyA9IHN0ZDo6bWF4KDEsIG1heEZyYW1lcyk7CisgICAgc2l6ZV90IHNpemVUb0FsbG9j
YXRlID0gaW5zdGFuY2VTaXplKG1heEZyYW1lcyk7CisgICAgU3RhY2tUcmFjZSogdHJhY2UgPSBu
ZXcgKE5vdE51bGwsIGZhc3RNYWxsb2Moc2l6ZVRvQWxsb2NhdGUpKSBTdGFja1RyYWNlKCk7CisK
KyAgICBzdGF0aWMgY29uc3QgaW50IGZyYW1lc1RvU2tpcCA9IDI7CisgICAgaW50IG51bWJlck9m
RnJhbWVzID0gbWF4RnJhbWVzICsgZnJhbWVzVG9Ta2lwOworICAgIAorICAgIFdURkdldEJhY2t0
cmFjZSgmdHJhY2UtPm1fc2tpcHBlZEZyYW1lMCwgJm51bWJlck9mRnJhbWVzKTsKKyAgICBBU1NF
UlQobnVtYmVyT2ZGcmFtZXMgPiBmcmFtZXNUb1NraXApOworICAgIHRyYWNlLT5tX3NpemUgPSBu
dW1iZXJPZkZyYW1lcyAtIGZyYW1lc1RvU2tpcDsKKyAgICB0cmFjZS0+bV9jYXBhY2l0eSA9IG1h
eEZyYW1lczsKKworICAgIHJldHVybiB0cmFjZTsKK30KKwordm9pZCBTdGFja1RyYWNlOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisjaWYgVVNFKEJBQ0tUUkFDRV9TWU1CT0xTKQor
ICAgIGNoYXIqKiBzeW1ib2xzID0gYmFja3RyYWNlX3N5bWJvbHMobV9zdGFjaywgbV9zaXplKTsK
KyAgICBpZiAoIXN5bWJvbHMpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorICAgIAorICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpIHsKKyAgICAgICAgY29uc3QgY2hhciogbWFu
Z2xlZE5hbWUgPSAwOworICAgICAgICBjaGFyKiBjeGFEZW1hbmdsZWQgPSAwOworI2lmIFVTRShC
QUNLVFJBQ0VfU1lNQk9MUykKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBzeW1ib2xzW2ldOworI2Vs
aWYgVVNFKERMQUREUikKKyAgICAgICAgRGxfaW5mbyBpbmZvOworICAgICAgICBpZiAoZGxhZGRy
KG1fc3RhY2tbaV0sICZpbmZvKSAmJiBpbmZvLmRsaV9zbmFtZSkKKyAgICAgICAgICAgIG1hbmds
ZWROYW1lID0gaW5mby5kbGlfc25hbWU7CisgICAgICAgIGlmIChtYW5nbGVkTmFtZSkKKyAgICAg
ICAgICAgIGN4YURlbWFuZ2xlZCA9IGFiaTo6X19jeGFfZGVtYW5nbGUobWFuZ2xlZE5hbWUsIDAs
IDAsIDApOworI2VuZGlmCisgICAgICAgIGNvbnN0IGludCBmcmFtZU51bWJlciA9IGkgKyAxOwor
ICAgICAgICBpZiAobWFuZ2xlZE5hbWUgfHwgY3hhRGVtYW5nbGVkKQorICAgICAgICAgICAgb3V0
LnByaW50ZigiJS0zZCAlcCAlc1xuIiwgZnJhbWVOdW1iZXIsIG1fc3RhY2tbaV0sIGN4YURlbWFu
Z2xlZCA/IGN4YURlbWFuZ2xlZCA6IG1hbmdsZWROYW1lKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgb3V0LnByaW50ZigiJS0zZCAlcFxuIiwgZnJhbWVOdW1iZXIsIG1fc3RhY2tbaV0pOwor
ICAgICAgICBmcmVlKGN4YURlbWFuZ2xlZCk7CisgICAgfQorICAgIAorI2lmIFVTRShCQUNLVFJB
Q0VfU1lNQk9MUykKKyAgICBmcmVlKHN5bWJvbHMpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU3RhY2tUcmFjZS5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TdGFja1RyYWNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTdGFja1RyYWNlIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RhY2tUcmFjZSog
Y2FwdHVyZVN0YWNrVHJhY2UoaW50IG1heEZyYW1lcyk7CisKKyAgICBpbnQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgaW5saW5lIHN0YXRpYyBzaXplX3QgaW5zdGFuY2VTaXplKGludCBj
YXBhY2l0eSk7CisKKyAgICBTdGFja1RyYWNlKCkgeyB9CisKKyAgICAvLyBXZSBzdHJ1Y3R1cmUg
dGhlIHRvcCBmaWVsZHMgdGhpcyB3YXkgYmVjYXVzZSB0aGUgdW5kZXJseWluZyBzdGFjayBjYXB0
dXJlCisgICAgLy8gZmFjaWxpdHkgd2lsbCBjYXB0dXJlIGZyb20gdGhlIHRvcCBvZiB0aGUgc3Rh
Y2ssIGFuZCB3ZSdsbCBuZWVkIHRvIHNraXAgdGhlCisgICAgLy8gdG9wIDIgZnJhbWUgd2hpY2gg
aXMgb2Ygbm8gaW50ZXJlc3QuIFNldHRpbmcgdXAgdGhlIGZpZWxkcyBsYXlvdXQgdGhpcyB3YXkK
KyAgICAvLyBhbGxvd3MgdXMgdG8gY2FwdHVyZSB0aGUgc3RhY2sgaW4gcGxhY2UgYW5kIG1pbmlt
aXplIHNwYWNlIHdhc3RhZ2UuCisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAg
ICAgICAgaW50IG1fc2l6ZSB7IDAgfTsKKyAgICAgICAgICAgIGludCBtX2NhcGFjaXR5OworICAg
ICAgICB9OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdm9pZCogbV9za2lwcGVkRnJh
bWUwOworICAgICAgICAgICAgdm9pZCogbV9za2lwcGVkRnJhbWUxOworICAgICAgICB9OworICAg
IH07CisgICAgdm9pZCogbV9zdGFja1sxXTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304053</attachid>
            <date>2017-03-10 10:39:44 -0800</date>
            <delta_ts>2017-03-10 10:39:44 -0800</delta_ts>
            <desc>Patch for re-landing.</desc>
            <filename>bug-169454.patch</filename>
            <type>text/plain</type>
            <size>13550</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNzE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE3LTAzLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
UmUtbGFuZGluZ10gSW1wbGVtZW50IGEgU3RhY2tUcmFjZSB1dGlsaXR5IG9iamVjdCB0aGF0IGNh
biBjYXB0dXJlIHN0YWNrIHRyYWNlcyBmb3IgZGVidWdnaW5nLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDU0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTWljaGFlbCBTYWJvZmYuCisKKyAgICAgICAgVGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRp
b24gaXMgaG9pc3RlZCByaWdodCBvdXQgb2YgQXNzZXJ0aW9ucy5jcHAgZnJvbSB0aGUKKyAgICAg
ICAgaW1wbGVtZW50YXRpb25zIG9mIFdURlByaW50QmFja3RyYWNlKCkuCisKKyAgICAgICAgVGhl
IHJlYXNvbiB3ZSBuZWVkIHRoaXMgU3RhY2tUcmFjZSBvYmplY3QgaXMgYmVjYXVzZSBkdXJpbmcg
aGVhcCBkZWJ1Z2dpbmcsIHdlCisgICAgICAgIHNvbWV0aW1lcyB3YW50IHRvIGNhcHR1cmUgdGhl
IHN0YWNrIHRyYWNlIHRoYXQgYWxsb2NhdGVkIHRoZSBvYmplY3RzIG9mIGludGVyZXN0LgorICAg
ICAgICBEdW1waW5nIHRoZSBzdGFjayB0cmFjZSBkaXJlY3RseSB0byBzdGRvdXQgKHVzaW5nIFdU
RlJlcG9ydEJhY2t0cmFjZSgpKSBtYXkKKyAgICAgICAgcGVydHVyYiB0aGUgZXhlY3V0aW9uIHBy
b2ZpbGUgc3VmZmljaWVudGx5IHRoYXQgYW4gaXNzdWUgbWF5IG5vdCByZXByb2R1Y2UsCisgICAg
ICAgIHdoaWxlIGFsdGVybmF0aXZlbHksIGp1c3QgY2FwdHVyaW5nIHRoZSBzdGFjayB0cmFjZSBh
bmQgZGVmZXJyaW5nIHByaW50aW5nIGl0CisgICAgICAgIHRpbGwgd2UgYWN0dWFsbHkgbmVlZCBp
dCBsYXRlciBwZXJ0dXJicyB0aGUgZXhlY3V0aW9uIHByb2ZpbGUgbGVzcy4KKworICAgICAgICBJ
biBhZGRpdGlvbiwganVzdCBjYXB0dXJpbmcgdGhlIHN0YWNrIHRyYWNlcyAoaW5zdGVhZCBvZiBw
cmludGluZyB0aGVtCisgICAgICAgIGltbWVkaWF0ZWx5IGF0IGVhY2ggY2FwdHVyZSBzaXRlKSBh
bGxvd3MgdXMgdG8gYXZvaWQgcG9sbHV0aW5nIHN0ZG91dCB3aXRoIHRvbnMKKyAgICAgICAgb2Yg
c3RhY2sgdHJhY2VzIHRoYXQgbWF5IGJlIGlycmVsZXZhbnQuCisKKyAgICAgICAgRm9yIG5vdywg
d2Ugb25seSBjYXB0dXJlIHRoZSBuYXRpdmUgc3RhY2sgdHJhY2UuICBXZSdsbCBsZWF2ZSBjYXB0
dXJpbmcgYW5kCisgICAgICAgIGludGVncmF0aW5nIHRoZSBKUyBzdGFjayB0cmFjZSBhcyBhbiBl
eGVyY2lzZSBmb3IgdGhlIGZ1dHVyZSBpZiB3ZSBuZWVkIGl0IHRoZW4uCisKKyAgICAgICAgSGVy
ZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVzZSB0aGlzIFN0YWNrVHJhY2UgdXRpbGl0eToKKwor
ICAgICAgICAgICAgLy8gQ2FwdHVyZSBhIHN0YWNrIHRyYWNlIG9mIHRoZSB0b3AgMTAgZnJhbWVz
LgorICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrVHJhY2U+IHRyYWNlKFN0YWNrVHJh
Y2U6OmNhcHR1cmVTdGFja1RyYWNlKDEwKSk7CisgICAgICAgICAgICAvLyBQcmludCB0aGUgdHJh
Y2UuCisgICAgICAgICAgICBkYXRhTG9nKCp0cmFjZSk7CisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHRvb2xzL1N0YWNrVHJhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
U3RhY2tUcmFjZTo6aW5zdGFuY2VTaXplKToKKyAgICAgICAgKEpTQzo6U3RhY2tUcmFjZTo6Y2Fw
dHVyZVN0YWNrVHJhY2UpOgorICAgICAgICAoSlNDOjpTdGFja1RyYWNlOjpkdW1wKToKKyAgICAg
ICAgKiB0b29scy9TdGFja1RyYWNlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdGFja1RyYWNl
OjpzaXplKToKKyAgICAgICAgKEpTQzo6U3RhY2tUcmFjZTo6U3RhY2tUcmFjZSk6CisKIDIwMTct
MDMtMDQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBCMyBzaG91
bGQgaGF2ZSBjb21wcmVoZW5zaXZlIHN1cHBvcnQgZm9yIGF0b21pYyBvcGVyYXRpb25zCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMTM3MTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTky
NCw2ICs5MjQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHRvb2xzL0pTRG9s
bGFyVk0uY3BwCiAgICAgdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAKICAgICB0b29scy9T
aWdpbGxDcmFzaEFuYWx5emVyLmNwcAorICAgIHRvb2xzL1N0YWNrVHJhY2UuY3BwCiAgICAgdG9v
bHMvVk1JbnNwZWN0b3IuY3BwCiAKICAgICB3YXNtL0pTV2ViQXNzZW1ibHkuY3BwCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEzNzE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTIzNzEsNiArMjM3MSw4IEBACiAJCUZFMUJEMDIxMUU3MjAyNzkwMDEz
NEJDOSAvKiBDZWxsUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUxQkQwMjAxRTcyMDI3MDAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmggKi87
IH07CiAJCUZFMUJEMDI0MUU3MjA1MzgwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQkQwMjIxRTcyMDUy
RjAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5jcHAgKi87IH07CiAJCUZFMUJEMDI1MUU3MjA1Mzgw
MDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMUJEMDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIu
aCAqLzsgfTsKKwkJRkUxQkQwMkIxRTcyMUI0QzAwMTM0QkM5IC8qIFN0YWNrVHJhY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUJEMDJBMUU3MjFC
MzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmggKi87IH07CisJCUZFMUJEMDJDMUU3MjFCNTEwMDEz
NEJDOSAvKiBTdGFja1RyYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAq
LzsgfTsKIAkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkMxQjE5M0U5ODAw
QjUzRkNBIC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFMUMwRkZGMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkUx
QjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi87IH07CiAJCUZFMjBDRTlEMTVGMDRB
OTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29w
LmNwcCAqLzsgfTsKQEAgLTQ5NTcsNiArNDk1OSw4IEBACiAJCUZFMUJEMDIwMUU3MjAyNzAwMDEz
NEJDOSAvKiBDZWxsUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
ZWxsUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFCRDAyMjFFNzIw
NTJGMDAxMzRCQzkgLyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhlYXBWZXJpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMUJEMDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcFZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrVHJhY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTFCRDAyQTFFNzIxQjM3MDAxMzRCQzkgLyogU3Rh
Y2tUcmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1RyYWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAv
KiBFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZD
QSAvKiBFeGNlcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUIxNUYw
NEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTExJbnRDTG9vcC5jcHA7IHBhdGggPSBsbGludC9MTEludENMb29wLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5NTUsNiArNjk1OSw4IEBACiAJCQkJODZC
NTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovLAogCQkJCUZFMzAy
MkQwMUUzRDczOTYwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVyLmNwcCAqLywKIAkJCQlG
RTMwMjJEMTFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oICovLAorCQkJ
CUZFMUJEMDI5MUU3MjFCMzcwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCAqLywKKwkJCQlGRTFC
RDAyQTFFNzIxQjM3MDAxMzRCQzkgLyogU3RhY2tUcmFjZS5oICovLAogCQkJCTg2QjU4MjZBMTRE
MzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLywKIAkJCQlGRTMwMjJENDFFNDI4
NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuY3BwICovLAogCQkJCUZFMzAyMkQ1MUU0Mjg1Njcw
MEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovLApAQCAtODc1OSw2ICs4NzY1LDcgQEAKIAkJCQlG
RTE4N0EwRDFDMDMwRDVDMDAzOEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCMTRFMUYxODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTFCRDAyQjFFNzIxQjRDMDAxMzRCQzkg
LyogU3RhY2tUcmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDQzg1QTEwRUU3OUE0NzAwMjg4
NjgyIC8qIEpJVElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFM0EwNkJFMUMxMTA0MTIw
MDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5
MjMzQzJCMUQzNDcxNTcwMEM1QTgzNCAvKiBKSVRNYXRoSUMuaCBpbiBIZWFkZXJzICovLApAQCAt
MTAyMDAsNiArMTAyMDcsNyBAQAogCQkJCTBGQzk3RjQxMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdX
YXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGREIyQ0U3
MTc0ODMwQTIwMDdCM0MxQiAvKiBERkdXb3JrbGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkUwNTAxNzFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUZFMUJEMDJDMUU3MjFCNTEwMDEzNEJDOSAvKiBTdGFja1RyYWNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRTA1MDE1MUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVu
dHNPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRUJCQUIxREVERjk1MDAwOTkwMzY5
IC8qIERpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzODZBNzQx
REQ2OTg5NTAwODY1MkM0IC8qIERpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICov
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1N0YWNrVHJhY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TdGFja1RyYWNlLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU3RhY2tUcmFjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3Rh
Y2tUcmFjZS5oIgorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworI2lmIE9TKERBUldJ
TikgfHwgKE9TKExJTlVYKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX19VQ0xJ
QkNfXykpCisjaW5jbHVkZSA8Y3h4YWJpLmg+CisjaW5jbHVkZSA8ZGxmY24uaD4KKyNpbmNsdWRl
IDxleGVjaW5mby5oPgorI2VuZGlmCisKKyNpZiBPUyhEQVJXSU4pIHx8IE9TKExJTlVYKQorIyAg
aWYgUExBVEZPUk0oR1RLKQorIyAgICBpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQo
X19VQ0xJQkNfXykKKyMgICAgICBkZWZpbmUgVVNFX0JBQ0tUUkFDRV9TWU1CT0xTIDEKKyMgICAg
ZW5kaWYKKyMgIGVsc2UKKyMgICAgZGVmaW5lIFVTRV9ETEFERFIgMQorIyAgZW5kaWYKKyNlbmRp
ZgorCituYW1lc3BhY2UgSlNDIHsKKworQUxXQVlTX0lOTElORSBzaXplX3QgU3RhY2tUcmFjZTo6
aW5zdGFuY2VTaXplKGludCBjYXBhY2l0eSkKK3sKKyAgICBBU1NFUlQoY2FwYWNpdHkgPj0gMSk7
CisgICAgcmV0dXJuIHNpemVvZihTdGFja1RyYWNlKSArIChjYXBhY2l0eSAtIDEpICogc2l6ZW9m
KHZvaWQqKTsKK30KKworU3RhY2tUcmFjZSogU3RhY2tUcmFjZTo6Y2FwdHVyZVN0YWNrVHJhY2Uo
aW50IG1heEZyYW1lcykKK3sKKyAgICBtYXhGcmFtZXMgPSBzdGQ6Om1heCgxLCBtYXhGcmFtZXMp
OworICAgIHNpemVfdCBzaXplVG9BbGxvY2F0ZSA9IGluc3RhbmNlU2l6ZShtYXhGcmFtZXMpOwor
ICAgIFN0YWNrVHJhY2UqIHRyYWNlID0gbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKHNpemVUb0Fs
bG9jYXRlKSkgU3RhY2tUcmFjZSgpOworCisgICAgc3RhdGljIGNvbnN0IGludCBmcmFtZXNUb1Nr
aXAgPSAyOworICAgIGludCBudW1iZXJPZkZyYW1lcyA9IG1heEZyYW1lcyArIGZyYW1lc1RvU2tp
cDsKKyAgICAKKyAgICBXVEZHZXRCYWNrdHJhY2UoJnRyYWNlLT5tX3NraXBwZWRGcmFtZTAsICZu
dW1iZXJPZkZyYW1lcyk7CisgICAgQVNTRVJUKG51bWJlck9mRnJhbWVzID4gZnJhbWVzVG9Ta2lw
KTsKKyAgICB0cmFjZS0+bV9zaXplID0gbnVtYmVyT2ZGcmFtZXMgLSBmcmFtZXNUb1NraXA7Cisg
ICAgdHJhY2UtPm1fY2FwYWNpdHkgPSBtYXhGcmFtZXM7CisKKyAgICByZXR1cm4gdHJhY2U7Cit9
CisKK3ZvaWQgU3RhY2tUcmFjZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworI2lm
IFVTRShCQUNLVFJBQ0VfU1lNQk9MUykKKyAgICBjaGFyKiogc3ltYm9scyA9IGJhY2t0cmFjZV9z
eW1ib2xzKG1fc3RhY2ssIG1fc2l6ZSk7CisgICAgaWYgKCFzeW1ib2xzKQorICAgICAgICByZXR1
cm47CisjZW5kaWYKKyAgICAKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKSB7
CisgICAgICAgIGNvbnN0IGNoYXIqIG1hbmdsZWROYW1lID0gMDsKKyAgICAgICAgY2hhciogY3hh
RGVtYW5nbGVkID0gMDsKKyNpZiBVU0UoQkFDS1RSQUNFX1NZTUJPTFMpCisgICAgICAgIG1hbmds
ZWROYW1lID0gc3ltYm9sc1tpXTsKKyNlbGlmIFVTRShETEFERFIpCisgICAgICAgIERsX2luZm8g
aW5mbzsKKyAgICAgICAgaWYgKGRsYWRkcihtX3N0YWNrW2ldLCAmaW5mbykgJiYgaW5mby5kbGlf
c25hbWUpCisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IGluZm8uZGxpX3NuYW1lOworICAgICAg
ICBpZiAobWFuZ2xlZE5hbWUpCisgICAgICAgICAgICBjeGFEZW1hbmdsZWQgPSBhYmk6Ol9fY3hh
X2RlbWFuZ2xlKG1hbmdsZWROYW1lLCAwLCAwLCAwKTsKKyNlbmRpZgorICAgICAgICBjb25zdCBp
bnQgZnJhbWVOdW1iZXIgPSBpICsgMTsKKyAgICAgICAgaWYgKG1hbmdsZWROYW1lIHx8IGN4YURl
bWFuZ2xlZCkKKyAgICAgICAgICAgIG91dC5wcmludGYoIiUtM2QgJXAgJXNcbiIsIGZyYW1lTnVt
YmVyLCBtX3N0YWNrW2ldLCBjeGFEZW1hbmdsZWQgPyBjeGFEZW1hbmdsZWQgOiBtYW5nbGVkTmFt
ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludGYoIiUtM2QgJXBcbiIsIGZy
YW1lTnVtYmVyLCBtX3N0YWNrW2ldKTsKKyAgICAgICAgZnJlZShjeGFEZW1hbmdsZWQpOworICAg
IH0KKyAgICAKKyNpZiBVU0UoQkFDS1RSQUNFX1NZTUJPTFMpCisgICAgZnJlZShzeW1ib2xzKTsK
KyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9TdGFja1RyYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL1N0YWNrVHJhY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvU3RhY2tUcmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgU3RhY2tUcmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgc3RhdGljIFN0YWNrVHJhY2UqIGNhcHR1cmVTdGFja1RyYWNlKGludCBtYXhGcmFtZXMp
OworCisgICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKworICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIGlubGluZSBzdGF0aWMg
c2l6ZV90IGluc3RhbmNlU2l6ZShpbnQgY2FwYWNpdHkpOworCisgICAgU3RhY2tUcmFjZSgpCisg
ICAgICAgIDogbV9zaXplKDApCisgICAgeyB9CisKKyAgICAvLyBXZSBzdHJ1Y3R1cmUgdGhlIHRv
cCBmaWVsZHMgdGhpcyB3YXkgYmVjYXVzZSB0aGUgdW5kZXJseWluZyBzdGFjayBjYXB0dXJlCisg
ICAgLy8gZmFjaWxpdHkgd2lsbCBjYXB0dXJlIGZyb20gdGhlIHRvcCBvZiB0aGUgc3RhY2ssIGFu
ZCB3ZSdsbCBuZWVkIHRvIHNraXAgdGhlCisgICAgLy8gdG9wIDIgZnJhbWUgd2hpY2ggaXMgb2Yg
bm8gaW50ZXJlc3QuIFNldHRpbmcgdXAgdGhlIGZpZWxkcyBsYXlvdXQgdGhpcyB3YXkKKyAgICAv
LyBhbGxvd3MgdXMgdG8gY2FwdHVyZSB0aGUgc3RhY2sgaW4gcGxhY2UgYW5kIG1pbmltaXplIHNw
YWNlIHdhc3RhZ2UuCisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAg
aW50IG1fc2l6ZTsKKyAgICAgICAgICAgIGludCBtX2NhcGFjaXR5OworICAgICAgICB9OworICAg
ICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdm9pZCogbV9za2lwcGVkRnJhbWUwOworICAgICAg
ICAgICAgdm9pZCogbV9za2lwcGVkRnJhbWUxOworICAgICAgICB9OworICAgIH07CisgICAgdm9p
ZCogbV9zdGFja1sxXTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>