<?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>103429</bug_id>
          
          <creation_ts>2012-11-27 09:26:49 -0800</creation_ts>
          <short_desc>[CSS Exclusions] Add support for computing first included interval position for polygons</short_desc>
          <delta_ts>2013-01-23 15:13:04 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>106026</dependson>
          <blocked>96813</blocked>
    
    <blocked>107563</blocked>
    
    <blocked>107564</blocked>
    
    <blocked>107566</blocked>
    
    <blocked>107568</blocked>
    
    <blocked>107570</blocked>
    
    <blocked>107573</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Muller">giles_joplin</reporter>
          <assigned_to name="Hans Muller">giles_joplin</assigned_to>
          <cc>eric</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>776856</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-27 09:26:49 -0800</bug_when>
    <thetext>Replace the ExclusionPolygon::firstIncludedIntervalPosition() stub.  A description of the algorithm I anticipate implementing is here: http://hansmuller-webkit.blogspot.com/2012/08/revised-algorithm-for-finding-first.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813251</commentid>
    <comment_count>1</comment_count>
      <attachid>184022</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-01-22 11:19:48 -0800</bug_when>
    <thetext>Created attachment 184022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813271</commentid>
    <comment_count>2</comment_count>
      <attachid>184027</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-01-22 11:38:27 -0800</bug_when>
    <thetext>Created attachment 184027
Patch

Removed an unused ExclusionPolygon field.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813345</commentid>
    <comment_count>3</comment_count>
      <attachid>184027</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2013-01-22 13:20:42 -0800</bug_when>
    <thetext>Comment on attachment 184027
Patch

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

Only made it through the intersection code so far, but looks good. I&apos;ve commented on some small tweaks you may consider.

&gt; LayoutTests/fast/exclusions/shape-inside/shape-inside-first-fit-001-expected.html:6
&gt; +    if (window.internals)
&gt; +        window.internals.settings.setCSSExclusionsEnabled(true);

This isn&apos;t necessary in the expectation file.

&gt; LayoutTests/fast/exclusions/shape-inside/shape-inside-first-fit-001-expected.html:44
&gt; +        &lt;/br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;X&lt;br/&gt;&amp;nbsp;&amp;nbsp;&lt;span id=&quot;blue&quot;&gt;XX&lt;/span&gt;&lt;br/&gt;&amp;nbsp;XXX

Would it be cleaner to wrap this in a pre tag rather than use the nbsp entity?

&gt; LayoutTests/fast/exclusions/shape-inside/shape-inside-first-fit-001.html:37
&gt; +        X &lt;span id=&quot;blue&quot;&gt;XX&lt;/span&gt; XXX

You probably want class for &apos;blue&apos;, &apos;shape-inside&apos;, and &apos;shape-outline&apos; as ids should only be used once per document.

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:65
&gt; +static inline bool isPointOnLineSegment(const FloatPoint&amp; p0, const FloatPoint&amp; p1, const FloatPoint&amp; p2)

It would help if the argument names distinguished which point you were testing to be on the line segment.

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:384
&gt; +static inline float leftSide(const FloatPoint&amp; vertex1, const FloatPoint&amp; vertex2, const FloatPoint&amp; point)

Returning &gt; 0 seems a little odd, since I typically think of numbers increasing from left to right. But if it&apos;s a common polygon geometry term, don&apos;t sweat it.

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:389
&gt; +bool ExclusionPolygon::pointInPolygon(const FloatPoint&amp; point) const

Where does this algorithm come from? If you can just include a reference in your changelog, that would be helpful.

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:427
&gt; +        if (!leftSideValues[i])

Does a collinear vertex not count as overlapping?

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:445
&gt; +    float den = determinant(thisDelta, otherDelta);

the jump from the mentioned paper to determinants was non-obvious to me and took a little head-scratching. Might be worth noting in the code or in the changelog.

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:446
&gt; +    if (!den)

what if the two lines are collinear?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813520</commentid>
    <comment_count>4</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-01-22 16:12:54 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 184027 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184027&amp;action=review

&gt; 
&gt; &gt; LayoutTests/fast/exclusions/shape-inside/shape-inside-first-fit-001-expected.html:6
&gt; &gt; +    if (window.internals)
&gt; &gt; +        window.internals.settings.setCSSExclusionsEnabled(true);
&gt; 
&gt; This isn&apos;t necessary in the expectation file.

Thanks, I&apos;ve removed all occurrences.

&gt; &gt; LayoutTests/fast/exclusions/shape-inside/shape-inside-first-fit-001-expected.html:44
&gt; &gt; +        &lt;/br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;X&lt;br/&gt;&amp;nbsp;&amp;nbsp;&lt;span id=&quot;blue&quot;&gt;XX&lt;/span&gt;&lt;br/&gt;&amp;nbsp;XXX
&gt; 
&gt; Would it be cleaner to wrap this in a pre tag rather than use the nbsp entity?

The pre tag is confusing (at least to me) in the way it handles leading white space, and spaces are rather critical here.  I was able to use it in two of the tests, and it definitely improves readability.

&gt; &gt; LayoutTests/fast/exclusions/shape-inside/shape-inside-first-fit-001.html:37
&gt; &gt; +        X &lt;span id=&quot;blue&quot;&gt;XX&lt;/span&gt; XXX
&gt; 
&gt; You probably want class for &apos;blue&apos;, &apos;shape-inside&apos;, and &apos;shape-outline&apos; as ids should only be used once per document.

Yes, I&apos;ve fixed that.  And I&apos;ve removed the extraneous &quot;blue&quot; styles from the files that don&apos;t use them.

&gt; &gt; Source/WebCore/rendering/ExclusionPolygon.cpp:65
&gt; &gt; +static inline bool isPointOnLineSegment(const FloatPoint&amp; p0, const FloatPoint&amp; p1, const FloatPoint&amp; p2)
&gt; 
&gt; It would help if the argument names distinguished which point you were testing to be on the line segment.

I&apos;ve renamed the line line segment endpoint parameters vertex1 and vertex2. Although names like lineSegmentEndpoint1,2 would be more meaningful, they kill the readability of the point arithmetic expressions.

&gt; &gt; Source/WebCore/rendering/ExclusionPolygon.cpp:384
&gt; &gt; +static inline float leftSide(const FloatPoint&amp; vertex1, const FloatPoint&amp; vertex2, const FloatPoint&amp; point)
&gt; 
&gt; Returning &gt; 0 seems a little odd, since I typically think of numbers increasing from left to right. But if it&apos;s a common polygon geometry term, don&apos;t sweat it.

There&apos;s no secret geometer&apos;s convention at work here although I have seen this function coded similarly elsewhere.

&gt; &gt; Source/WebCore/rendering/ExclusionPolygon.cpp:389
&gt; &gt; +bool ExclusionPolygon::pointInPolygon(const FloatPoint&amp; point) const
&gt; 
&gt; Where does this algorithm come from? If you can just include a reference in your changelog, that would be helpful.

There are a million variations on this simple point in polygon algorithm.  I don&apos;t know a definitive reference for exactly this variant, but http://paulbourke.net/geometry/polygonmesh/ is a good source for point in polygon algorithms in general.

&gt; &gt; Source/WebCore/rendering/ExclusionPolygon.cpp:427
&gt; &gt; +        if (!leftSideValues[i])
&gt; 
&gt; Does a collinear vertex not count as overlapping?

Yes.  In other words if the first fit rectangle touches a polygon edge (it&apos;s guaranteed to for at least one edge) that&apos;s OK.

&gt; &gt; Source/WebCore/rendering/ExclusionPolygon.cpp:446
&gt; &gt; +    if (!den)
&gt; 
&gt; what if the two lines are collinear?

In the abstract I think that&apos;s OK, since there&apos;s no intersection &quot;point&quot; in that case.  It may be necessary to deal with this when reflex vertex detection is included, since one could create a shape that pinned the first fit location between a pair of opposing reflex vertices.  As a practical matter, this is unlikely to come up very often.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813525</commentid>
    <comment_count>5</comment_count>
      <attachid>184068</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-01-22 16:17:58 -0800</bug_when>
    <thetext>Created attachment 184068
Patch

Incorporated Bear&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814357</commentid>
    <comment_count>6</comment_count>
      <attachid>184068</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-01-23 10:51:24 -0800</bug_when>
    <thetext>Comment on attachment 184068
Patch

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

Some style comments. I am not so familiar with the algorithms and need to trust you here.

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:397
&gt; +    for (unsigned i = 0; i &lt; numberOfEdges(); i++) {

++i

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:404
&gt; +                windingNumber += 1;

why not windingNumber++ and

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:407
&gt; +                windingNumber -= 1;

windingNumber-- ? Use the main advantage of C++ over C :D

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:427
&gt; +    int s = 0;

other name for s please.

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:431
&gt; +        int sgn = leftSideValues[i] &gt; 0 ? 1 : -1;

We don&apos;t have a competition for finding the shortest name :D More descriptive name please.

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:447
&gt; +    float den = determinant(thisDelta, otherDelta);

Why den? det would make more sense (used in math anyway). I would even prefer float determinant = this-&gt;determinant() but don&apos;t know where it is specified.

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:453
&gt; +    float ua = determinant(otherDelta, vertex1Delta) / den;
&gt; +    float ub = determinant(thisDelta, vertex1Delta) / den;

can you choose more descriptive names here please?

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:467
&gt; +    for (unsigned i = 0; i &lt; overlappingEdges.size(); i++) {

++i

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:500
&gt; +    for (unsigned i = 0; i &lt; numberOfEdges(); i++) {

++i

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:514
&gt; +        for (unsigned j = 0; j &lt; offsetEdgePair.size(); j++)

++j

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:525
&gt; +    for (unsigned i = 0; i &lt; offsetEdges.size() - 1; i++) {

++i

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:526
&gt; +        for (unsigned j = i + 1; j &lt; offsetEdges.size(); j++) {

++j</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814474</commentid>
    <comment_count>7</comment_count>
      <attachid>184277</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-01-23 12:11:08 -0800</bug_when>
    <thetext>Created attachment 184277
Patch

Made the changes that Dirk recommended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814478</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-23 12:14:13 -0800</bug_when>
    <thetext>Attachment 184277 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/exclusions/shape-inside/shape-inside-first-fit-001-expected.html&apos;, u&apos;LayoutTests/fast/exclusions/shape-inside/shape-inside-first-fit-001.html&apos;, u&apos;LayoutTests/fast/exclusions/shape-inside/shape-inside-first-fit-002-expected.html&apos;, u&apos;LayoutTests/fast/exclusions/shape-inside/shape-inside-first-fit-002.html&apos;, u&apos;LayoutTests/fast/exclusions/shape-inside/shape-inside-first-fit-003-expected.html&apos;, u&apos;LayoutTests/fast/exclusions/shape-inside/shape-inside-first-fit-003.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/FloatSize.h&apos;, u&apos;Source/WebCore/rendering/ExclusionPolygon.cpp&apos;, u&apos;Source/WebCore/rendering/ExclusionPolygon.h&apos;]&quot; exit_code: 1
Source/WebCore/rendering/ExclusionPolygon.cpp:452:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814502</commentid>
    <comment_count>9</comment_count>
      <attachid>184277</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-01-23 12:26:24 -0800</bug_when>
    <thetext>Comment on attachment 184277
Patch

Please fix the style issue before landing. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814597</commentid>
    <comment_count>10</comment_count>
      <attachid>184303</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-01-23 13:51:20 -0800</bug_when>
    <thetext>Created attachment 184303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814723</commentid>
    <comment_count>11</comment_count>
      <attachid>184303</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-23 15:13:00 -0800</bug_when>
    <thetext>Comment on attachment 184303
Patch

Clearing flags on attachment: 184303

Committed r140606: &lt;http://trac.webkit.org/changeset/140606&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814724</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-23 15:13:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184022</attachid>
            <date>2013-01-22 11:19:48 -0800</date>
            <delta_ts>2013-01-22 11:38:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>24594</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YTA1MDI1Li4wODVmOWM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDEt
MjIgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIGZpcnN0IGluY2x1ZGVkIGludGVydmFs
IHBvc2l0aW9uIGZvciBwb2x5Z29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAzNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsIG9mIHRoZSBleGlzdGluZyBzaGFwZS1pbnNpZGUgdGVzdHMgZXhl
cmNpc2UgdGhlIG5ldyBjb2RlLiAgQWRkZWQgbmV3IHRlc3RzIHdoaWNoCisgICAgICAgIHZlcmlm
eSB0aGF0IGxheW91dCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBsYXlvdXQgY2FuIG5vdCBiZWdpbiBh
dCB0aGUgc2hhcGUncyBsb2dpY2FsIHRvcC4KKyAgICAgICAgVGVzdCAwMDEgYWRkaXRpb25hbGx5
IGNoZWNrcyBhbGwgd3JpdGluZy1tb2RlcywgdGVzdCAwMDIgdmVyaWZpZXMgdGhhdCB0aGUgdG9w
bW9zdC9sZWZ0bW9zdAorICAgICAgICBydWxlIGlzIGZvbGxvd2VkLCBhbmQgdGVzdDMgY2hlY2tz
IGEgc2VsZi1pbnRlcnNlY3RpbmcgcG9seWdvbi4KKworICAgICAgICAqIGZhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtZmlyc3QtZml0LTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAyLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LWZpcnN0LWZpdC0wMDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMy1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1m
aXJzdC1maXQtMDAzLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTE4ICBTdGVwaGVuIENoZW5uZXkg
IDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQXNzZXJ0cyB3aGVuIHRleHRQYXRo
IGlzIHVzZWQgd2l0aCBubyBwYXRoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAxLWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1maXJzdC1maXQtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMmI1ZGZlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEtZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8
c3R5bGU+CisgICAgI3NoYXBlLWluc2lkZSB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
KyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBm
b250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAg
IH0KKworICAgICNibHVlIHsKKyAgICAgICAgY29sb3I6IGJsdWU7CisgICAgIH0KKworICAgICNz
aGFwZS1vdXRsaW5lIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6
IDBweDsKKyAgICAgICAgbGVmdDogMHB4OworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAg
IGhlaWdodDogMjAwcHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxw
PlRoZSBzb2xpZCBncmVlbiBhbmQgYmx1ZSByZWN0YW5nbGVzIHNob3VsZCBiZSBjb250YWluZWQg
YnkgdGhlIGJsdWUgdHJpYW5nbGUgb3V0bGluZXMuPC9wPgorICAgIDxkaXYgaWQ9InNoYXBlLWlu
c2lkZSI+CisgICAgICAgIDxzdmcgaWQ9InNoYXBlLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAyMDAs
MjAwIDAsMjAwIiBzdHJva2U9ImJsdWUiIGZpbGw9Im5vbmUiLz4KKyAgICAgICAgPC9zdmc+Cisg
ICAgICAgIDxici8+WDxici8+PHNwYW4gaWQ9ImJsdWUiPlhYPC9zcGFuPjxici8+WFhYCisgICAg
PC9kaXY+CisgICAgPHA+V3JpdGluZy1tb2RlIGlzIGhvcml6b250YWwtdGI8L3A+CisKKyAgICA8
ZGl2IGlkPSJzaGFwZS1pbnNpZGUiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGlj
YWwtcmwiPgorICAgICAgICA8c3ZnIGlkPSJzaGFwZS1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIwLDAgMjAw
LDIwMCAwLDIwMCIgc3Ryb2tlPSJibHVlIiBmaWxsPSJub25lIi8+CisgICAgICAgIDwvc3ZnPgor
ICAgICAgICA8L2JyLz4mbmJzcDsmbmJzcDsmbmJzcDtYPGJyLz4mbmJzcDsmbmJzcDs8c3BhbiBp
ZD0iYmx1ZSI+WFg8L3NwYW4+PGJyLz4mbmJzcDtYWFgKKyAgICA8L2Rpdj4KKyAgICA8cD5Xcml0
aW5nLW1vZGUgaXMgdmVydGljYWwtcmwuPC9wPgorCisgICAgPGRpdiBpZD0ic2hhcGUtaW5zaWRl
IiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyIj4KKyAgICAgICAgPHN2
ZyBpZD0ic2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4K
KyAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDIwMCwyMDAgMCwyMDAiIHN0cm9rZT0i
Ymx1ZSIgZmlsbD0ibm9uZSIvPgorICAgICAgICA8L3N2Zz4KKyAgICAgICAgJm5ic3A7WFhYPGJy
Lz4mbmJzcDsmbmJzcDs8c3BhbiBpZD0iYmx1ZSI+WFg8L3NwYW4+PGJyLz4mbmJzcDsmbmJzcDsm
bmJzcDtYCisgICAgPC9kaXY+CisgICAgPHA+V3JpdGluZy1tb2RlIGlzIHZlcnRpY2FsLWxyLjwv
cD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZp
dC0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODdhOTk4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMS5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9u
c0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAjc2hhcGUtaW5zaWRlIHsK
KyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAg
ICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiBwb2x5Z29u
KDBweCAwcHgsIDIwMHB4IDIwMHB4LCAwcHggMjAwcHgpOworICAgICAgICBmb250OiA1MHB4LzEg
QWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKworICAgICNi
bHVlIHsKKyAgICAgICAgY29sb3I6IGJsdWU7CisgICAgIH0KKworICAgICNzaGFwZS1vdXRsaW5l
IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsKKyAgICAg
ICAgbGVmdDogMHB4OworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoZSBzb2xpZCBn
cmVlbiBhbmQgYmx1ZSByZWN0YW5nbGVzIHNob3VsZCBiZSBjb250YWluZWQgYnkgdGhlIGJsdWUg
dHJpYW5nbGUgb3V0bGluZXMuPC9wPgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZSI+CisgICAg
ICAgIDxzdmcgaWQ9InNoYXBlLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyI+CisgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAyMDAsMjAwIDAsMjAwIiBz
dHJva2U9ImJsdWUiIGZpbGw9Im5vbmUiLz4KKyAgICAgICAgPC9zdmc+CisgICAgICAgIFggPHNw
YW4gaWQ9ImJsdWUiPlhYPC9zcGFuPiBYWFgKKyAgICA8L2Rpdj4KKyAgICA8cD5Xcml0aW5nLW1v
ZGUgaXMgaG9yaXpvbnRhbC10YjwvcD4KKworICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZSIgc3R5
bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybCI+CisgICAgICAgIDxzdmcgaWQ9
InNoYXBlLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAg
ICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAyMDAsMjAwIDAsMjAwIiBzdHJva2U9ImJsdWUi
IGZpbGw9Im5vbmUiLz4KKyAgICAgICAgPC9zdmc+CisgICAgICAgIFggPHNwYW4gaWQ9ImJsdWUi
PlhYPC9zcGFuPiBYWFgKKyAgICA8L2Rpdj4KKyAgICA8cD5Xcml0aW5nLW1vZGUgaXMgdmVydGlj
YWwtcmwuPC9wPgorCisgICAgPGRpdiBpZD0ic2hhcGUtaW5zaWRlIiBzdHlsZT0iLXdlYmtpdC13
cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyIj4KKyAgICAgICAgPHN2ZyBpZD0ic2hhcGUtb3V0bGlu
ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxwb2x5
Z29uIHBvaW50cz0iMCwwIDIwMCwyMDAgMCwyMDAiIHN0cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIv
PgorICAgICAgICA8L3N2Zz4KKyAgICAgICAgWFhYIDxzcGFuIGlkPSJibHVlIj5YWDwvc3Bhbj4g
WAorICAgIDwvZGl2PgorICAgIDxwPldyaXRpbmctbW9kZSBpcyB2ZXJ0aWNhbC1sci48L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAyLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJz
dC1maXQtMDAyLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNzM2NzMxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDItZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+
CisgICAgI3NoYXBlLWluc2lkZSB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBmb250OiA1
MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKwor
ICAgICNibHVlIHsKKyAgICAgICAgY29sb3I6IGJsdWU7CisgICAgIH0KKworICAgICNzaGFwZS1v
dXRsaW5lIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsK
KyAgICAgICAgbGVmdDogMHB4OworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoZSBz
b2xpZCBncmVlbiByZWN0YW5nbGVzIHNob3VsZCBiZSBjb250YWluZWQgYnkgdGhlIGJsdWUgb3V0
bGluZS48L3A+CisgICAgPGRpdiBpZD0ic2hhcGUtaW5zaWRlIj4KKyAgICAgICAgPHN2ZyBpZD0i
c2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAg
ICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDE1MCwxNTAgMzAwLDAgMzAwLDIwMCAwLDIwMCIg
c3Ryb2tlPSJibHVlIiBmaWxsPSJub25lIi8+CisgICAgICAgIDwvc3ZnPgorICAgICAgICA8YnIv
PlgmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtYPGJyLz5YWCZuYnNwOyZuYnNwO1hYPGJyLz5YWFhY
WFgKKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLWZpcnN0LWZpdC0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42M2M1NmJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMi5odG1sCkBAIC0wLDAgKzEs
NDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAjc2hh
cGUtaW5zaWRlIHsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW5z
aWRlOiBwb2x5Z29uKDBweCAwcHgsIDE1MHB4IDE1MHB4LCAzMDBweCAwcHgsIDMwMHB4IDIwMHB4
LCAwcHggMjAwcHgpOworICAgICAgICBmb250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAg
ICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKworICAgICNibHVlIHsKKyAgICAgICAgY29sb3I6
IGJsdWU7CisgICAgIH0KKworICAgICNzaGFwZS1vdXRsaW5lIHsKKyAgICAgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsKKyAgICAgICAgbGVmdDogMHB4OworICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoZSBzb2xpZCBncmVlbiByZWN0YW5nbGVzIHNob3Vs
ZCBiZSBjb250YWluZWQgYnkgdGhlIGJsdWUgb3V0bGluZS48L3A+CisgICAgPGRpdiBpZD0ic2hh
cGUtaW5zaWRlIj4KKyAgICAgICAgPHN2ZyBpZD0ic2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCww
IDE1MCwxNTAgMzAwLDAgMzAwLDIwMCAwLDIwMCIgc3Ryb2tlPSJibHVlIiBmaWxsPSJub25lIi8+
CisgICAgICAgIDwvc3ZnPgorICAgICAgICBYIFggWFggWFggWFhYWFhYCisgICAgPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAzLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJz
dC1maXQtMDAzLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNDZjNGQ3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDMtZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+
CisgICAgI3NoYXBlLWluc2lkZSB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAg
ICAgd2lkdGg6IDQwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBmb250OiA1
MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKwor
ICAgICNibHVlIHsKKyAgICAgICAgY29sb3I6IGJsdWU7CisgICAgIH0KKworICAgICNzaGFwZS1v
dXRsaW5lIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsK
KyAgICAgICAgbGVmdDogMHB4OworICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoZSBz
b2xpZCBncmVlbiByZWN0YW5nbGVzIHNob3VsZCBiZSBjb250YWluZWQgYnkgdGhlIGJsdWUgb3V0
bGluZS48L3A+CisgICAgPGRpdiBpZD0ic2hhcGUtaW5zaWRlIj4KKyAgICAgICAgPHN2ZyBpZD0i
c2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAg
ICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDIwMCwyMDAgNDAwLDAgNDAwLDEwMCAwLDEwMCIg
c3Ryb2tlPSJibHVlIiBmaWxsPSJub25lIi8+CisgICAgICAgIDwvc3ZnPgorICAgICAgICA8YnIv
PlgmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtYPGJyLz4mbmJzcDsmbmJzcDsm
bmJzcDtYWAorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0
LTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtZmlyc3QtZml0LTAwMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmNjZDk3M2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAzLmh0bWwKQEAgLTAs
MCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAg
ICNzaGFwZS1pbnNpZGUgeworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIHdp
ZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgLXdlYmtpdC1zaGFw
ZS1pbnNpZGU6IHBvbHlnb24oMHB4IDBweCwgMjAwcHggMjAwcHgsIDQwMHB4IDBweCwgNDAwcHgg
MTAwcHgsIDBweCAxMDBweCk7CisgICAgICAgIGZvbnQ6IDUwcHgvMSBBaGVtLCBzYW5zLXNlcmlm
OworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgfQorCisgICAgI2JsdWUgeworICAgICAgICBj
b2xvcjogYmx1ZTsKKyAgICAgfQorCisgICAgI3NoYXBlLW91dGxpbmUgeworICAgICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMHB4OworICAgICAgICBsZWZ0OiAwcHg7Cisg
ICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGhlIHNvbGlkIGdyZWVuIHJlY3RhbmdsZXMg
c2hvdWxkIGJlIGNvbnRhaW5lZCBieSB0aGUgYmx1ZSBvdXRsaW5lLjwvcD4KKyAgICA8ZGl2IGlk
PSJzaGFwZS1pbnNpZGUiPgorICAgICAgICA8c3ZnIGlkPSJzaGFwZS1vdXRsaW5lIiB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRz
PSIwLDAgMjAwLDIwMCA0MDAsMCA0MDAsMTAwIDAsMTAwIiBzdHJva2U9ImJsdWUiIGZpbGw9Im5v
bmUiLz4KKyAgICAgICAgPC9zdmc+CisgICAgICAgIFggWCBYWAorICAgIDwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIzOTY4OGYuLmVmMjM1MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNiBAQAorMjAxMy0wMS0yMiAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFkb2JlLmNv
bT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIEFkZCBzdXBwb3J0IGZvciBjb21wdXRpbmcg
Zmlyc3QgaW5jbHVkZWQgaW50ZXJ2YWwgcG9zaXRpb24gZm9yIHBvbHlnb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0MjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBj
b21wdXRpbmcgdGhlICJmaXJzdCBmaXQiIGxvY2F0aW9uLCBpLmUuIHRoZSBsb2dpY2FsIHNoYXBl
LWluc2lkZQorICAgICAgICBsb2NhdGlvbiB3aGVyZSBhIGxpbmUncyBsYXlvdXQgYmVnaW5zLiBU
aGUgYWxnb3JpdGhtIGZvciBkb2luZyBzbyBpcyBkZXNjcmliZWQgaGVyZToKKyAgICAgICAgaHR0
cDovL2hhbnNtdWxsZXItd2Via2l0LmJsb2dzcG90LmNvbS8yMDEyLzA4L3JldmlzZWQtYWxnb3Jp
dGhtLWZvci1maW5kaW5nLWZpcnN0Lmh0bWwuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3Qt
Zml0LTAwMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAzLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0U2l6ZS5oOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IqKTogU2NhbGUg
YSBGbG9hdFNpemUuIFRoaXMgc2ltcGxpZmllZCB0aGUgZmluYWwgZXhwcmVzc2lvbiBpbiBWZXJ0
ZXhQYWlyOjppbnRlcnNlY3Rpb24oKS4KKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uUG9s
eWdvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1BvaW50T25MaW5lU2VnbWVudCk6IFJldHVy
bnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIHBvaW50IGlzIGNvbGxpbmVhciBhbmQgd2l0aGluIHRo
ZSBsaW5lIHNlZ2VtZW50J3MgYm91bmRzLgorICAgICAgICAoV2ViQ29yZTo6bGVmdFNpZGUpOiBS
ZXR1cm4gYSB2YWx1ZSA+IDAgaWYgcG9pbnQgaXMgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgbGlu
ZSBzZWdtZW50LCA8IDAgaWYgaXQncyBvbiB0aGUgcmlnaHQsIDAgaWYgaXQncyBjb2xsaW5lYXIu
CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5Z29uOjpwb2ludEluUG9seWdvbik6IFJl
dHVybiB0cnVlIGlmIHRoZSBwb2ludCBpcyB3aXRoaW4gdGhlIHBvbHlnb24gb3Igb24gYW4gZWRn
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFBhaXI6Om92ZXJsYXBzUmVjdCk6IFJldHVybnMg
dHJ1ZSBpZiB0aGUgbGluZSBzZWdtZW50IGZyb20gdmVydGV4MSB0byB2ZXJ0ZXgyIG92ZXJsYXBz
IHRoZSBzcGVjaWZpZWQgRmxvYXRSZWN0LgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4UGFpcjo6
aW50ZXJzZWN0aW9uKTogRmluZHMgdGhlIGludGVyc2VjdGlvbiBvZiBhIHBhaXIgb2YgbGluZSBz
ZWdtZW50cyBkZWZpbmVkIGJ5IFZlcnRleFBhaXJzLgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVz
aW9uUG9seWdvbjo6Zmlyc3RGaXRSZWN0SW5Qb2x5Z29uKTogUmV0dXJucyB0cnVlIGlmIG5vbmUg
b2YgdGhlIHBvbHlnb24ncyBlZGdlcywgZXhjZXB0IHRoZSB0d28gdXNlZAorICAgICAgICAgICAg
dG8gZGVmaW5lIGJ5IHRoZSBvZmZzZXQgZWRnZXMsIG92ZXJsYXAgdGhlIEZsb2F0UmVjdC4KKyAg
ICAgICAgKFdlYkNvcmU6OmFib3ZlT3JUb1RoZUxlZnQpOiBEZWZpbmVzIHRoZSB0b3AvbGVmdCBw
cmVmZXJlbmNlIGZvciAiZmlyc3QgZml0IiBsb2NhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpF
eGNsdXNpb25Qb2x5Z29uOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKTogUmVwbGFj
ZWQgdGhlIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtZXRob2QuCisgICAgICAgICogcmVu
ZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaDoKKyAgICAgICAgKEV4Y2x1c2lvblBvbHlnb24pOiBB
ZGRlZCBkZWNsYXJhdGlvbnMgbm90ZWQgYWJvdmUuCisgICAgICAgIChWZXJ0ZXhQYWlyKTogQWJz
dHJhY3QgY2xhc3MgdGhhdCBkZWZpbmVzIGEgcGFpciBvZiBGbG9hdFBvaW50cy4KKyAgICAgICAg
KE9mZnNldFBvbHlnb25FZGdlKTogUmVwcmVzZW50cyBhbiBlZGdlIHRoYXQncyBob3Jpem9udGFs
bHkgb2Zmc2V0IGZyb20gYSBwb2x5Z29uIGVkZ2UuCisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRQ
b2x5Z29uRWRnZTo6ZWRnZUluZGV4KTogVGhlIEV4Y2x1c2lvblBvbHlnb24gZWRnZSBpbmRleCB1
c2VkIHRvIGRlZmluZSB0aGlzIE9mZnNldEVkZ2UuCisKIDIwMTMtMDEtMTggIFN0ZXBoZW4gQ2hl
bm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBc3NlcnRzIHdoZW4gdGV4
dFBhdGggaXMgdXNlZCB3aXRoIG5vIHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRTaXplLmgKaW5kZXggMmNhMjJjZC4uNjAxMDIxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKQEAgLTE3NSw2ICsxNzUsMTYgQEAg
aW5saW5lIEZsb2F0U2l6ZSBvcGVyYXRvci0oY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIHJl
dHVybiBGbG9hdFNpemUoLXNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpOwogfQogCitpbmxp
bmUgRmxvYXRTaXplIG9wZXJhdG9yKihjb25zdCBGbG9hdFNpemUmIGEsIGNvbnN0IGZsb2F0IGIp
Cit7CisgICAgcmV0dXJuIEZsb2F0U2l6ZShhLndpZHRoKCkgKiBiLCBhLmhlaWdodCgpICogYik7
Cit9CisKK2lubGluZSBGbG9hdFNpemUgb3BlcmF0b3IqKGNvbnN0IGZsb2F0IGEsIGNvbnN0IEZs
b2F0U2l6ZSYgYikKK3sKKyAgICByZXR1cm4gRmxvYXRTaXplKGEgKiBiLndpZHRoKCksIGEgKiBi
LmhlaWdodCgpKTsKK30KKwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFNpemUm
IGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKIHsKICAgICByZXR1cm4gYS53aWR0aCgpID09IGIud2lk
dGgoKSAmJiBhLmhlaWdodCgpID09IGIuaGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAKaW5kZXggYTUyMjMyZi4uNmVkNjU4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcApAQCAtNjIsNiAr
NjIsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGFyZUNvaW5jaWRlbnRQb2ludHMoY29uc3QgRmxv
YXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAKICAgICByZXR1cm4gcDAueCgpID09IHAx
LngoKSAmJiBwMC55KCkgPT0gcDEueSgpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNQb2lu
dE9uTGluZVNlZ21lbnQoY29uc3QgRmxvYXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAx
LCBjb25zdCBGbG9hdFBvaW50JiBwMikKK3sKKyAgICByZXR1cm4gYXJlQ29sbGluZWFyUG9pbnRz
KHAwLCBwMSwgcDIpICYmIHAyLngoKSA+PSBzdGQ6Om1pbihwMC54KCksIHAxLngoKSkgJiYgcDIu
eCgpIDw9IHN0ZDo6bWF4KHAwLngoKSwgcDEueCgpKTsKK30KKwogc3RhdGljIGlubGluZSB1bnNp
Z25lZCBuZXh0VmVydGV4SW5kZXgodW5zaWduZWQgdmVydGV4SW5kZXgsIHVuc2lnbmVkIG5WZXJ0
aWNlcywgYm9vbCBjbG9ja3dpc2UpCiB7CiAgICAgcmV0dXJuICgoY2xvY2t3aXNlKSA/IHZlcnRl
eEluZGV4ICsgMSA6IHZlcnRleEluZGV4IC0gMSArIG5WZXJ0aWNlcykgJSBuVmVydGljZXM7CkBA
IC0zNzYsMjAgKzM4MSwxNjQgQEAgdm9pZCBFeGNsdXNpb25Qb2x5Z29uOjpnZXRJbmNsdWRlZElu
dGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2gKICAgICB9CiB9CiAK
LWJvb2wgRXhjbHVzaW9uUG9seWdvbjo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChm
bG9hdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgbWluTG9naWNhbElu
dGVydmFsU2l6ZSwgZmxvYXQmIHJlc3VsdCkgY29uc3QKK3N0YXRpYyBpbmxpbmUgZmxvYXQgbGVm
dFNpZGUoY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSwgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4
MiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuICgocG9pbnQueCgpIC0g
dmVydGV4MS54KCkpICogKHZlcnRleDIueSgpIC0gdmVydGV4MS55KCkpKSAtICgodmVydGV4Mi54
KCkgLSB2ZXJ0ZXgxLngoKSkgKiAocG9pbnQueSgpIC0gdmVydGV4MS55KCkpKTsKK30KKworYm9v
bCBFeGNsdXNpb25Qb2x5Z29uOjpwb2ludEluUG9seWdvbihjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYm91bmRpbmdCb3guY29udGFpbnMocG9pbnQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgd2luZGluZ051bWJlciA9IDA7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mRWRnZXMoKTsgaSsrKSB7CisgICAgICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHZlcnRleDEgPSBlZGdlQXQoaSkudmVydGV4MSgpOworICAgICAgICBj
b25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgyID0gZWRnZUF0KGkpLnZlcnRleDIoKTsKKyAgICAgICAg
aWYgKGlzUG9pbnRPbkxpbmVTZWdtZW50KHZlcnRleDEsIHZlcnRleDIsIHBvaW50KSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAodmVydGV4Mi55KCkgPCBwb2ludC55KCkp
IHsKKyAgICAgICAgICAgIGlmICgodmVydGV4MS55KCkgPiBwb2ludC55KCkpICYmIChsZWZ0U2lk
ZSh2ZXJ0ZXgxLCB2ZXJ0ZXgyLCBwb2ludCkgPiAwKSkKKyAgICAgICAgICAgICAgICB3aW5kaW5n
TnVtYmVyICs9IDE7CisgICAgICAgIH0gZWxzZSBpZiAodmVydGV4Mi55KCkgPiBwb2ludC55KCkp
IHsKKyAgICAgICAgICAgIGlmICgodmVydGV4MS55KCkgPD0gcG9pbnQueSgpKSAmJiAobGVmdFNp
ZGUodmVydGV4MSwgdmVydGV4MiwgcG9pbnQpIDwgMCkpCisgICAgICAgICAgICAgICAgd2luZGlu
Z051bWJlciAtPSAxOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHdpbmRpbmdOdW1i
ZXI7Cit9CisKK2Jvb2wgVmVydGV4UGFpcjo6b3ZlcmxhcHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkgY29uc3QKK3sKKyAgICBib29sIGJvdW5kc092ZXJsYXAgPSAobWluWCgpIDwgcmVjdC5t
YXhYKCkpICYmIChtYXhYKCkgPiByZWN0LngoKSkgJiYgKG1pblkoKSA8IHJlY3QubWF4WSgpKSAm
JiAobWF4WSgpID4gcmVjdC55KCkpOworICAgIGlmICghYm91bmRzT3ZlcmxhcCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgZmxvYXQgbGVmdFNpZGVWYWx1ZXNbNF0gPSB7CisgICAgICAg
IGxlZnRTaWRlKHZlcnRleDEoKSwgdmVydGV4MigpLCByZWN0Lm1pblhNaW5ZQ29ybmVyKCkpLAor
ICAgICAgICBsZWZ0U2lkZSh2ZXJ0ZXgxKCksIHZlcnRleDIoKSwgcmVjdC5tYXhYTWluWUNvcm5l
cigpKSwKKyAgICAgICAgbGVmdFNpZGUodmVydGV4MSgpLCB2ZXJ0ZXgyKCksIHJlY3QubWluWE1h
eFlDb3JuZXIoKSksCisgICAgICAgIGxlZnRTaWRlKHZlcnRleDEoKSwgdmVydGV4MigpLCByZWN0
Lm1heFhNYXhZQ29ybmVyKCkpCisgICAgfTsKKworICAgIGludCBzID0gMDsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgIGlmICghbGVmdFNpZGVWYWx1ZXNb
aV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaW50IHNnbiA9IGxlZnRTaWRlVmFs
dWVzW2ldID4gMCA/IDEgOiAtMTsKKyAgICAgICAgaWYgKCFzKQorICAgICAgICAgICAgcyA9IHNn
bjsKKyAgICAgICAgZWxzZSBpZiAocyAhPSBzZ24pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVmVydGV4UGFpcjo6aW50ZXJz
ZWN0aW9uKGNvbnN0IFZlcnRleFBhaXImIG90aGVyLCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QK
IHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgdGVtcG9yYXJ5IHN0dWIsIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0MjkKKyAgICAvLyBTZWU6IGh0dHA6
Ly9wYXVsYm91cmtlLm5ldC9nZW9tZXRyeS9wb2ludGxpbmVwbGFuZS8KKworICAgIGNvbnN0IEZs
b2F0U2l6ZSYgdGhpc0RlbHRhID0gdmVydGV4MigpIC0gdmVydGV4MSgpOworICAgIGNvbnN0IEZs
b2F0U2l6ZSYgb3RoZXJEZWx0YSA9IG90aGVyLnZlcnRleDIoKSAtIG90aGVyLnZlcnRleDEoKTsK
KyAgICBmbG9hdCBkZW4gPSBkZXRlcm1pbmFudCh0aGlzRGVsdGEsIG90aGVyRGVsdGEpOworICAg
IGlmICghZGVuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBGbG9hdFNpemUm
IHZlcnRleDFEZWx0YSA9IHZlcnRleDEoKSAtIG90aGVyLnZlcnRleDEoKTsKKyAgICBmbG9hdCB1
YSA9IGRldGVybWluYW50KG90aGVyRGVsdGEsIHZlcnRleDFEZWx0YSkgLyBkZW47CisgICAgZmxv
YXQgdWIgPSBkZXRlcm1pbmFudCh0aGlzRGVsdGEsIHZlcnRleDFEZWx0YSkgLyBkZW47CiAKKyAg
ICBpZiAodWEgPCAwIHx8IHViIDwgMCB8fCB1YSA+IDEgfHwgdWIgPiAxKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBwb2ludCA9IHZlcnRleDEoKSArIHVhICogdGhpc0RlbHRhOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIEV4Y2x1c2lvblBvbHlnb246OmZpcnN0Rml0UmVjdElu
UG9seWdvbihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIHVuc2lnbmVkIG9mZnNldEVkZ2VJbmRleDEs
IHVuc2lnbmVkIG9mZnNldEVkZ2VJbmRleDIpIGNvbnN0Cit7CisgICAgVmVjdG9yPEV4Y2x1c2lv
blBvbHlnb246OkVkZ2VJbnRlcnZhbD4gb3ZlcmxhcHBpbmdFZGdlczsKKyAgICBtX2VkZ2VUcmVl
LmFsbE92ZXJsYXBzKEV4Y2x1c2lvblBvbHlnb246OkVkZ2VJbnRlcnZhbChyZWN0LnkoKSwgcmVj
dC5tYXhZKCksIDApLCBvdmVybGFwcGluZ0VkZ2VzKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBvdmVybGFwcGluZ0VkZ2VzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGNvbnN0IEV4
Y2x1c2lvblBvbHlnb25FZGdlKiBlZGdlID0gc3RhdGljX2Nhc3Q8RXhjbHVzaW9uUG9seWdvbkVk
Z2UqPihvdmVybGFwcGluZ0VkZ2VzW2ldLmRhdGEoKSk7CisgICAgICAgIGlmIChlZGdlLT5lZGdl
SW5kZXgoKSAhPSBvZmZzZXRFZGdlSW5kZXgxICYmIGVkZ2UtPmVkZ2VJbmRleCgpICE9IG9mZnNl
dEVkZ2VJbmRleDIgJiYgZWRnZS0+b3ZlcmxhcHNSZWN0KHJlY3QpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW5saW5l
IGJvb2wgYWJvdmVPclRvVGhlTGVmdChjb25zdCBGbG9hdFJlY3QmIHIxLCBjb25zdCBGbG9hdFJl
Y3QmIHIyKQoreworICAgIGlmIChyMS55KCkgPCByMi55KCkpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChyMS55KCkgPT0gcjIueSgpKQorICAgICAgICByZXR1cm4gcjEueCgpIDwgcjIu
eCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBFeGNsdXNpb25Qb2x5Z29uOjpmaXJz
dEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwg
Y29uc3QgRmxvYXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBmbG9hdCYgcmVzdWx0KSBj
b25zdAorewogICAgIGlmIChtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLndpZHRoKCkgPiBtX2JvdW5k
aW5nQm94LndpZHRoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZsb2F0IG1pblkg
PSBzdGQ6Om1heChtX2JvdW5kaW5nQm94LnkoKSwgbWluTG9naWNhbEludGVydmFsVG9wKTsKICAg
ICBmbG9hdCBtYXhZID0gbWluWSArIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0KCk7Ci0g
ICAgaWYgKG1pblkgPCBtX2JvdW5kaW5nQm94LnkoKSB8fCBtYXhZID4gbV9ib3VuZGluZ0JveC5t
YXhZKCkpCisKKyAgICBpZiAobWF4WSA+IG1fYm91bmRpbmdCb3gubWF4WSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3A7Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgZmxvYXQgZHggPSBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLndpZHRo
KCkgLyAyOworICAgIGZsb2F0IGR5ID0gbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSAv
IDI7CisgICAgVmVjdG9yPE9mZnNldFBvbHlnb25FZGdlPiBvZmZzZXRFZGdlczsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkVkZ2VzKCk7IGkrKykgeworICAgICAgICBj
b25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSYgZWRnZSA9IGVkZ2VBdChpKTsKKyAgICAgICAgY29u
c3QgRmxvYXRQb2ludCYgdmVydGV4MSA9IGVkZ2UudmVydGV4MSgpOworICAgICAgICBjb25zdCBG
bG9hdFBvaW50JiB2ZXJ0ZXgyID0gZWRnZS52ZXJ0ZXgyKCk7CisgICAgICAgIFZlY3RvcjxPZmZz
ZXRQb2x5Z29uRWRnZT4gb2Zmc2V0RWRnZVBhaXI7CisKKyAgICAgICAgaWYgKHZlcnRleDIueSgp
ID4gdmVydGV4MS55KCkgPyB2ZXJ0ZXgyLngoKSA+PSB2ZXJ0ZXgxLngoKSA6IHZlcnRleDEueCgp
ID49IHZlcnRleDIueCgpKSB7CisgICAgICAgICAgICBvZmZzZXRFZGdlUGFpci5hcHBlbmQoT2Zm
c2V0UG9seWdvbkVkZ2UoZWRnZSwgRmxvYXRTaXplKGR4LCAtZHkpKSk7CisgICAgICAgICAgICBv
ZmZzZXRFZGdlUGFpci5hcHBlbmQoT2Zmc2V0UG9seWdvbkVkZ2UoZWRnZSwgRmxvYXRTaXplKC1k
eCwgZHkpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvZmZzZXRFZGdlUGFpci5h
cHBlbmQoT2Zmc2V0UG9seWdvbkVkZ2UoZWRnZSwgRmxvYXRTaXplKGR4LCBkeSkpKTsKKyAgICAg
ICAgICAgIG9mZnNldEVkZ2VQYWlyLmFwcGVuZChPZmZzZXRQb2x5Z29uRWRnZShlZGdlLCBGbG9h
dFNpemUoLWR4LCAtZHkpKSk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHVuc2lnbmVkIGog
PSAwOyBqIDwgb2Zmc2V0RWRnZVBhaXIuc2l6ZSgpOyBqKyspCisgICAgICAgICAgICBpZiAob2Zm
c2V0RWRnZVBhaXJbal0ubWF4WSgpID49IG1pblkpCisgICAgICAgICAgICAgICAgb2Zmc2V0RWRn
ZXMuYXBwZW5kKG9mZnNldEVkZ2VQYWlyW2pdKTsKKyAgICB9CisKKyAgICBvZmZzZXRFZGdlcy5h
cHBlbmQoT2Zmc2V0UG9seWdvbkVkZ2UoKnRoaXMsIG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgRmxv
YXRTaXplKDAsIGR5KSkpOworCisgICAgRmxvYXRQb2ludCBvZmZzZXRFZGdlc0ludGVyc2VjdGlv
bjsKKyAgICBGbG9hdFJlY3QgZmlyc3RGaXRSZWN0OworICAgIGJvb2wgZmlyc3RGaXRGb3VuZCA9
IGZhbHNlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9mZnNldEVkZ2VzLnNpemUo
KSAtIDE7IGkrKykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBpICsgMTsgaiA8IG9mZnNl
dEVkZ2VzLnNpemUoKTsgaisrKSB7CisgICAgICAgICAgICBpZiAob2Zmc2V0RWRnZXNbaV0uaW50
ZXJzZWN0aW9uKG9mZnNldEVkZ2VzW2pdLCBvZmZzZXRFZGdlc0ludGVyc2VjdGlvbikpIHsKKyAg
ICAgICAgICAgICAgICBGbG9hdFBvaW50IHBvdGVudGlhbEZpcnN0Rml0TG9jYXRpb24ob2Zmc2V0
RWRnZXNJbnRlcnNlY3Rpb24ueCgpIC0gZHgsIG9mZnNldEVkZ2VzSW50ZXJzZWN0aW9uLnkoKSAt
IGR5KTsKKyAgICAgICAgICAgICAgICBGbG9hdFJlY3QgcG90ZW50aWFsRmlyc3RGaXRSZWN0KHBv
dGVudGlhbEZpcnN0Rml0TG9jYXRpb24sIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUpOworICAgICAg
ICAgICAgICAgIGlmICgocG90ZW50aWFsRmlyc3RGaXRMb2NhdGlvbi55KCkgPj0gbWluTG9naWNh
bEludGVydmFsVG9wKQorICAgICAgICAgICAgICAgICAgICAmJiAoIWZpcnN0Rml0Rm91bmQgfHwg
YWJvdmVPclRvVGhlTGVmdChwb3RlbnRpYWxGaXJzdEZpdFJlY3QsIGZpcnN0Rml0UmVjdCkpCisg
ICAgICAgICAgICAgICAgICAgICYmIHBvaW50SW5Qb2x5Z29uKG9mZnNldEVkZ2VzSW50ZXJzZWN0
aW9uKQorICAgICAgICAgICAgICAgICAgICAmJiBmaXJzdEZpdFJlY3RJblBvbHlnb24ocG90ZW50
aWFsRmlyc3RGaXRSZWN0LCBvZmZzZXRFZGdlc1tpXS5lZGdlSW5kZXgoKSwgb2Zmc2V0RWRnZXNb
al0uZWRnZUluZGV4KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpcnN0Rml0Rm91bmQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICBmaXJzdEZpdFJlY3QgPSBwb3RlbnRpYWxGaXJzdEZp
dFJlY3Q7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGZpcnN0Rml0Rm91bmQpCisgICAgICAgIHJlc3VsdCA9IGZpcnN0Rml0UmVj
dC55KCk7CisgICAgcmV0dXJuIGZpcnN0Rml0Rm91bmQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5
Z29uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oCmluZGV4
IGM5NzNjMzUuLjBmODU2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25Qb2x5Z29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lv
blBvbHlnb24uaApAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgRXhjbHVzaW9u
UG9seWdvbkVkZ2UmIGVkZ2VBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9lZGdl
c1tpbmRleF07IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkVkZ2VzKCkgY29uc3QgeyByZXR1cm4g
bV9lZGdlcy5zaXplKCk7IH0KIAorICAgIGJvb2wgcG9pbnRJblBvbHlnb24oY29uc3QgRmxvYXRQ
b2ludCYpIGNvbnN0OworCiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc2hhcGVMb2dpY2FsQm91bmRp
bmdCb3goKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2JvdW5kaW5nQm94OyB9CiAgICAgdmly
dHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2VtcHR5OyB9CiAg
ICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZs
b2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CkBAIC03Miw2
ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlWEludGVyc2VjdGlvbnMoZmxvYXQg
eSwgYm9vbCBpc01pblksIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mKSBjb25zdDsKICAgICB2
b2lkIGNvbXB1dGVFZGdlSW50ZXJzZWN0aW9ucyhmbG9hdCBtaW5ZLCBmbG9hdCBtYXhZLCBWZWN0
b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JikgY29uc3Q7CiAgICAgdW5zaWduZWQgZmluZE5leHRFZGdl
VmVydGV4SW5kZXgodW5zaWduZWQgdmVydGV4SW5kZXgxLCBib29sIGNsb2Nrd2lzZSkgY29uc3Q7
CisgICAgYm9vbCBmaXJzdEZpdFJlY3RJblBvbHlnb24oY29uc3QgRmxvYXRSZWN0JiwgdW5zaWdu
ZWQgb2Zmc2V0RWRnZUluZGV4MSwgdW5zaWduZWQgb2Zmc2V0RWRnZUluZGV4KSBjb25zdDsKIAog
ICAgIHR5cGVkZWYgUE9ESW50ZXJ2YWw8ZmxvYXQsIEV4Y2x1c2lvblBvbHlnb25FZGdlKj4gRWRn
ZUludGVydmFsOwogICAgIHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGZsb2F0LCBFeGNsdXNpb25Q
b2x5Z29uRWRnZSo+IEVkZ2VJbnRlcnZhbFRyZWU7CkBAIC04Miw2ICs4NSw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPEV4Y2x1c2lvblBvbHlnb25FZGdlPiBtX2VkZ2VzOwogICAgIEVkZ2VJbnRl
cnZhbFRyZWUgbV9lZGdlVHJlZTsKICAgICBib29sIG1fZW1wdHk7CisgICAgbXV0YWJsZSBWZWN0
b3I8RmxvYXRQb2ludD4gbV9vZmZzZXRFZGdlSW50ZXJzZWN0aW9uczsKIH07CiAKIGNsYXNzIFZl
cnRleFBhaXIgewpAQCAtOTUsNiArOTksOSBAQCBwdWJsaWM6CiAgICAgZmxvYXQgbWluWSgpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bWluKHZlcnRleDEoKS55KCksIHZlcnRleDIoKS55KCkpOyB9CiAg
ICAgZmxvYXQgbWF4WCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4KHZlcnRleDEoKS54KCksIHZl
cnRleDIoKS54KCkpOyB9CiAgICAgZmxvYXQgbWF4WSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4
KHZlcnRleDEoKS55KCksIHZlcnRleDIoKS55KCkpOyB9CisKKyAgICBib29sIG92ZXJsYXBzUmVj
dChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBib29sIGludGVyc2VjdGlvbihjb25zdCBW
ZXJ0ZXhQYWlyJiwgRmxvYXRQb2ludCYpIGNvbnN0OwogfTsKIAogLy8gRWRnZUludGVydmFsVHJl
ZSBub2RlcyBzdG9yZSBtaW5ZLCBtYXhZLCBhbmQgYSAoIlVzZXJEYXRhIikgcG9pbnRlciB0byBh
biBFeGNsdXNpb25Qb2x5Z29uRWRnZS4gRWRnZSB2ZXJ0ZXgKQEAgLTE1MCw2ICsxNTcsMzIgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgVmFsdWVUb1N0cmluZzxFeGNsdXNpb25Qb2x5Z29uRWRnZSo+IHsK
IH07CiAjZW5kaWYKIAorY2xhc3MgT2Zmc2V0UG9seWdvbkVkZ2UgOiBwdWJsaWMgVmVydGV4UGFp
ciB7CitwdWJsaWM6CisgICAgT2Zmc2V0UG9seWdvbkVkZ2UoY29uc3QgRXhjbHVzaW9uUG9seWdv
bkVkZ2UmIGVkZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQorICAgICAgICA6IG1fdmVydGV4
MShlZGdlLnZlcnRleDEoKSArIG9mZnNldCkKKyAgICAgICAgLCBtX3ZlcnRleDIoZWRnZS52ZXJ0
ZXgyKCkgKyBvZmZzZXQpCisgICAgICAgICwgbV9lZGdlSW5kZXgoZWRnZS5lZGdlSW5kZXgoKSkK
KyAgICB7CisgICAgfQorCisgICAgT2Zmc2V0UG9seWdvbkVkZ2UoY29uc3QgRXhjbHVzaW9uUG9s
eWdvbiYgcG9seWdvbiwgZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBjb25zdCBGbG9hdFNp
emUmIG9mZnNldCkKKyAgICAgICAgOiBtX3ZlcnRleDEoRmxvYXRQb2ludChwb2x5Z29uLnNoYXBl
TG9naWNhbEJvdW5kaW5nQm94KCkueCgpLCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3ApICsgb2Zmc2V0
KQorICAgICAgICAsIG1fdmVydGV4MihGbG9hdFBvaW50KHBvbHlnb24uc2hhcGVMb2dpY2FsQm91
bmRpbmdCb3goKS5tYXhYKCksIG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCkgKyBvZmZzZXQpCisgICAg
ICAgICwgbV9lZGdlSW5kZXgocG9seWdvbi5udW1iZXJPZkVkZ2VzKCkpCisgICAgeworICAgIH0K
KworICAgIHZpcnR1YWwgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1fdmVydGV4MTsgfQorICAgIHZpcnR1YWwgY29uc3QgRmxvYXRQb2ludCYgdmVy
dGV4MigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdmVydGV4MjsgfQorICAgIHVuc2lnbmVk
IGVkZ2VJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZUluZGV4OyB9CisKK3ByaXZhdGU6Cisg
ICAgRmxvYXRQb2ludCBtX3ZlcnRleDE7CisgICAgRmxvYXRQb2ludCBtX3ZlcnRleDI7CisgICAg
dW5zaWduZWQgbV9lZGdlSW5kZXg7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFeGNsdXNpb25Qb2x5Z29uX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184027</attachid>
            <date>2013-01-22 11:38:27 -0800</date>
            <delta_ts>2013-01-22 16:17:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>24386</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YTA1MDI1Li4wODVmOWM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDEt
MjIgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIGZpcnN0IGluY2x1ZGVkIGludGVydmFs
IHBvc2l0aW9uIGZvciBwb2x5Z29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAzNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsIG9mIHRoZSBleGlzdGluZyBzaGFwZS1pbnNpZGUgdGVzdHMgZXhl
cmNpc2UgdGhlIG5ldyBjb2RlLiAgQWRkZWQgbmV3IHRlc3RzIHdoaWNoCisgICAgICAgIHZlcmlm
eSB0aGF0IGxheW91dCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBsYXlvdXQgY2FuIG5vdCBiZWdpbiBh
dCB0aGUgc2hhcGUncyBsb2dpY2FsIHRvcC4KKyAgICAgICAgVGVzdCAwMDEgYWRkaXRpb25hbGx5
IGNoZWNrcyBhbGwgd3JpdGluZy1tb2RlcywgdGVzdCAwMDIgdmVyaWZpZXMgdGhhdCB0aGUgdG9w
bW9zdC9sZWZ0bW9zdAorICAgICAgICBydWxlIGlzIGZvbGxvd2VkLCBhbmQgdGVzdDMgY2hlY2tz
IGEgc2VsZi1pbnRlcnNlY3RpbmcgcG9seWdvbi4KKworICAgICAgICAqIGZhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtZmlyc3QtZml0LTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAyLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LWZpcnN0LWZpdC0wMDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMy1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1m
aXJzdC1maXQtMDAzLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTE4ICBTdGVwaGVuIENoZW5uZXkg
IDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQXNzZXJ0cyB3aGVuIHRleHRQYXRo
IGlzIHVzZWQgd2l0aCBubyBwYXRoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAxLWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1maXJzdC1maXQtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMmI1ZGZlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEtZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8
c3R5bGU+CisgICAgI3NoYXBlLWluc2lkZSB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
KyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBm
b250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAg
IH0KKworICAgICNibHVlIHsKKyAgICAgICAgY29sb3I6IGJsdWU7CisgICAgIH0KKworICAgICNz
aGFwZS1vdXRsaW5lIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6
IDBweDsKKyAgICAgICAgbGVmdDogMHB4OworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAg
IGhlaWdodDogMjAwcHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxw
PlRoZSBzb2xpZCBncmVlbiBhbmQgYmx1ZSByZWN0YW5nbGVzIHNob3VsZCBiZSBjb250YWluZWQg
YnkgdGhlIGJsdWUgdHJpYW5nbGUgb3V0bGluZXMuPC9wPgorICAgIDxkaXYgaWQ9InNoYXBlLWlu
c2lkZSI+CisgICAgICAgIDxzdmcgaWQ9InNoYXBlLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAyMDAs
MjAwIDAsMjAwIiBzdHJva2U9ImJsdWUiIGZpbGw9Im5vbmUiLz4KKyAgICAgICAgPC9zdmc+Cisg
ICAgICAgIDxici8+WDxici8+PHNwYW4gaWQ9ImJsdWUiPlhYPC9zcGFuPjxici8+WFhYCisgICAg
PC9kaXY+CisgICAgPHA+V3JpdGluZy1tb2RlIGlzIGhvcml6b250YWwtdGI8L3A+CisKKyAgICA8
ZGl2IGlkPSJzaGFwZS1pbnNpZGUiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGlj
YWwtcmwiPgorICAgICAgICA8c3ZnIGlkPSJzaGFwZS1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIwLDAgMjAw
LDIwMCAwLDIwMCIgc3Ryb2tlPSJibHVlIiBmaWxsPSJub25lIi8+CisgICAgICAgIDwvc3ZnPgor
ICAgICAgICA8L2JyLz4mbmJzcDsmbmJzcDsmbmJzcDtYPGJyLz4mbmJzcDsmbmJzcDs8c3BhbiBp
ZD0iYmx1ZSI+WFg8L3NwYW4+PGJyLz4mbmJzcDtYWFgKKyAgICA8L2Rpdj4KKyAgICA8cD5Xcml0
aW5nLW1vZGUgaXMgdmVydGljYWwtcmwuPC9wPgorCisgICAgPGRpdiBpZD0ic2hhcGUtaW5zaWRl
IiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyIj4KKyAgICAgICAgPHN2
ZyBpZD0ic2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4K
KyAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDIwMCwyMDAgMCwyMDAiIHN0cm9rZT0i
Ymx1ZSIgZmlsbD0ibm9uZSIvPgorICAgICAgICA8L3N2Zz4KKyAgICAgICAgJm5ic3A7WFhYPGJy
Lz4mbmJzcDsmbmJzcDs8c3BhbiBpZD0iYmx1ZSI+WFg8L3NwYW4+PGJyLz4mbmJzcDsmbmJzcDsm
bmJzcDtYCisgICAgPC9kaXY+CisgICAgPHA+V3JpdGluZy1tb2RlIGlzIHZlcnRpY2FsLWxyLjwv
cD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZp
dC0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODdhOTk4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMS5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9u
c0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAjc2hhcGUtaW5zaWRlIHsK
KyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAg
ICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiBwb2x5Z29u
KDBweCAwcHgsIDIwMHB4IDIwMHB4LCAwcHggMjAwcHgpOworICAgICAgICBmb250OiA1MHB4LzEg
QWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKworICAgICNi
bHVlIHsKKyAgICAgICAgY29sb3I6IGJsdWU7CisgICAgIH0KKworICAgICNzaGFwZS1vdXRsaW5l
IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsKKyAgICAg
ICAgbGVmdDogMHB4OworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoZSBzb2xpZCBn
cmVlbiBhbmQgYmx1ZSByZWN0YW5nbGVzIHNob3VsZCBiZSBjb250YWluZWQgYnkgdGhlIGJsdWUg
dHJpYW5nbGUgb3V0bGluZXMuPC9wPgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZSI+CisgICAg
ICAgIDxzdmcgaWQ9InNoYXBlLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyI+CisgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAyMDAsMjAwIDAsMjAwIiBz
dHJva2U9ImJsdWUiIGZpbGw9Im5vbmUiLz4KKyAgICAgICAgPC9zdmc+CisgICAgICAgIFggPHNw
YW4gaWQ9ImJsdWUiPlhYPC9zcGFuPiBYWFgKKyAgICA8L2Rpdj4KKyAgICA8cD5Xcml0aW5nLW1v
ZGUgaXMgaG9yaXpvbnRhbC10YjwvcD4KKworICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZSIgc3R5
bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybCI+CisgICAgICAgIDxzdmcgaWQ9
InNoYXBlLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAg
ICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAyMDAsMjAwIDAsMjAwIiBzdHJva2U9ImJsdWUi
IGZpbGw9Im5vbmUiLz4KKyAgICAgICAgPC9zdmc+CisgICAgICAgIFggPHNwYW4gaWQ9ImJsdWUi
PlhYPC9zcGFuPiBYWFgKKyAgICA8L2Rpdj4KKyAgICA8cD5Xcml0aW5nLW1vZGUgaXMgdmVydGlj
YWwtcmwuPC9wPgorCisgICAgPGRpdiBpZD0ic2hhcGUtaW5zaWRlIiBzdHlsZT0iLXdlYmtpdC13
cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyIj4KKyAgICAgICAgPHN2ZyBpZD0ic2hhcGUtb3V0bGlu
ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxwb2x5
Z29uIHBvaW50cz0iMCwwIDIwMCwyMDAgMCwyMDAiIHN0cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIv
PgorICAgICAgICA8L3N2Zz4KKyAgICAgICAgWFhYIDxzcGFuIGlkPSJibHVlIj5YWDwvc3Bhbj4g
WAorICAgIDwvZGl2PgorICAgIDxwPldyaXRpbmctbW9kZSBpcyB2ZXJ0aWNhbC1sci48L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAyLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJz
dC1maXQtMDAyLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNzM2NzMxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDItZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+
CisgICAgI3NoYXBlLWluc2lkZSB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBmb250OiA1
MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKwor
ICAgICNibHVlIHsKKyAgICAgICAgY29sb3I6IGJsdWU7CisgICAgIH0KKworICAgICNzaGFwZS1v
dXRsaW5lIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsK
KyAgICAgICAgbGVmdDogMHB4OworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoZSBz
b2xpZCBncmVlbiByZWN0YW5nbGVzIHNob3VsZCBiZSBjb250YWluZWQgYnkgdGhlIGJsdWUgb3V0
bGluZS48L3A+CisgICAgPGRpdiBpZD0ic2hhcGUtaW5zaWRlIj4KKyAgICAgICAgPHN2ZyBpZD0i
c2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAg
ICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDE1MCwxNTAgMzAwLDAgMzAwLDIwMCAwLDIwMCIg
c3Ryb2tlPSJibHVlIiBmaWxsPSJub25lIi8+CisgICAgICAgIDwvc3ZnPgorICAgICAgICA8YnIv
PlgmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtYPGJyLz5YWCZuYnNwOyZuYnNwO1hYPGJyLz5YWFhY
WFgKKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLWZpcnN0LWZpdC0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42M2M1NmJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMi5odG1sCkBAIC0wLDAgKzEs
NDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAjc2hh
cGUtaW5zaWRlIHsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW5z
aWRlOiBwb2x5Z29uKDBweCAwcHgsIDE1MHB4IDE1MHB4LCAzMDBweCAwcHgsIDMwMHB4IDIwMHB4
LCAwcHggMjAwcHgpOworICAgICAgICBmb250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAg
ICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKworICAgICNibHVlIHsKKyAgICAgICAgY29sb3I6
IGJsdWU7CisgICAgIH0KKworICAgICNzaGFwZS1vdXRsaW5lIHsKKyAgICAgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsKKyAgICAgICAgbGVmdDogMHB4OworICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoZSBzb2xpZCBncmVlbiByZWN0YW5nbGVzIHNob3Vs
ZCBiZSBjb250YWluZWQgYnkgdGhlIGJsdWUgb3V0bGluZS48L3A+CisgICAgPGRpdiBpZD0ic2hh
cGUtaW5zaWRlIj4KKyAgICAgICAgPHN2ZyBpZD0ic2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCww
IDE1MCwxNTAgMzAwLDAgMzAwLDIwMCAwLDIwMCIgc3Ryb2tlPSJibHVlIiBmaWxsPSJub25lIi8+
CisgICAgICAgIDwvc3ZnPgorICAgICAgICBYIFggWFggWFggWFhYWFhYCisgICAgPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAzLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJz
dC1maXQtMDAzLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNDZjNGQ3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDMtZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+
CisgICAgI3NoYXBlLWluc2lkZSB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAg
ICAgd2lkdGg6IDQwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBmb250OiA1
MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKwor
ICAgICNibHVlIHsKKyAgICAgICAgY29sb3I6IGJsdWU7CisgICAgIH0KKworICAgICNzaGFwZS1v
dXRsaW5lIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsK
KyAgICAgICAgbGVmdDogMHB4OworICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoZSBz
b2xpZCBncmVlbiByZWN0YW5nbGVzIHNob3VsZCBiZSBjb250YWluZWQgYnkgdGhlIGJsdWUgb3V0
bGluZS48L3A+CisgICAgPGRpdiBpZD0ic2hhcGUtaW5zaWRlIj4KKyAgICAgICAgPHN2ZyBpZD0i
c2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAg
ICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDIwMCwyMDAgNDAwLDAgNDAwLDEwMCAwLDEwMCIg
c3Ryb2tlPSJibHVlIiBmaWxsPSJub25lIi8+CisgICAgICAgIDwvc3ZnPgorICAgICAgICA8YnIv
PlgmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtYPGJyLz4mbmJzcDsmbmJzcDsm
bmJzcDtYWAorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0
LTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtZmlyc3QtZml0LTAwMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmNjZDk3M2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAzLmh0bWwKQEAgLTAs
MCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAg
ICNzaGFwZS1pbnNpZGUgeworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIHdp
ZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgLXdlYmtpdC1zaGFw
ZS1pbnNpZGU6IHBvbHlnb24oMHB4IDBweCwgMjAwcHggMjAwcHgsIDQwMHB4IDBweCwgNDAwcHgg
MTAwcHgsIDBweCAxMDBweCk7CisgICAgICAgIGZvbnQ6IDUwcHgvMSBBaGVtLCBzYW5zLXNlcmlm
OworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgfQorCisgICAgI2JsdWUgeworICAgICAgICBj
b2xvcjogYmx1ZTsKKyAgICAgfQorCisgICAgI3NoYXBlLW91dGxpbmUgeworICAgICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMHB4OworICAgICAgICBsZWZ0OiAwcHg7Cisg
ICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGhlIHNvbGlkIGdyZWVuIHJlY3RhbmdsZXMg
c2hvdWxkIGJlIGNvbnRhaW5lZCBieSB0aGUgYmx1ZSBvdXRsaW5lLjwvcD4KKyAgICA8ZGl2IGlk
PSJzaGFwZS1pbnNpZGUiPgorICAgICAgICA8c3ZnIGlkPSJzaGFwZS1vdXRsaW5lIiB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRz
PSIwLDAgMjAwLDIwMCA0MDAsMCA0MDAsMTAwIDAsMTAwIiBzdHJva2U9ImJsdWUiIGZpbGw9Im5v
bmUiLz4KKyAgICAgICAgPC9zdmc+CisgICAgICAgIFggWCBYWAorICAgIDwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIzOTY4OGYuLmVmMjM1MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNiBAQAorMjAxMy0wMS0yMiAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFkb2JlLmNv
bT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIEFkZCBzdXBwb3J0IGZvciBjb21wdXRpbmcg
Zmlyc3QgaW5jbHVkZWQgaW50ZXJ2YWwgcG9zaXRpb24gZm9yIHBvbHlnb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0MjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBj
b21wdXRpbmcgdGhlICJmaXJzdCBmaXQiIGxvY2F0aW9uLCBpLmUuIHRoZSBsb2dpY2FsIHNoYXBl
LWluc2lkZQorICAgICAgICBsb2NhdGlvbiB3aGVyZSBhIGxpbmUncyBsYXlvdXQgYmVnaW5zLiBU
aGUgYWxnb3JpdGhtIGZvciBkb2luZyBzbyBpcyBkZXNjcmliZWQgaGVyZToKKyAgICAgICAgaHR0
cDovL2hhbnNtdWxsZXItd2Via2l0LmJsb2dzcG90LmNvbS8yMDEyLzA4L3JldmlzZWQtYWxnb3Jp
dGhtLWZvci1maW5kaW5nLWZpcnN0Lmh0bWwuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3Qt
Zml0LTAwMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAzLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0U2l6ZS5oOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IqKTogU2NhbGUg
YSBGbG9hdFNpemUuIFRoaXMgc2ltcGxpZmllZCB0aGUgZmluYWwgZXhwcmVzc2lvbiBpbiBWZXJ0
ZXhQYWlyOjppbnRlcnNlY3Rpb24oKS4KKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uUG9s
eWdvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1BvaW50T25MaW5lU2VnbWVudCk6IFJldHVy
bnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIHBvaW50IGlzIGNvbGxpbmVhciBhbmQgd2l0aGluIHRo
ZSBsaW5lIHNlZ2VtZW50J3MgYm91bmRzLgorICAgICAgICAoV2ViQ29yZTo6bGVmdFNpZGUpOiBS
ZXR1cm4gYSB2YWx1ZSA+IDAgaWYgcG9pbnQgaXMgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgbGlu
ZSBzZWdtZW50LCA8IDAgaWYgaXQncyBvbiB0aGUgcmlnaHQsIDAgaWYgaXQncyBjb2xsaW5lYXIu
CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5Z29uOjpwb2ludEluUG9seWdvbik6IFJl
dHVybiB0cnVlIGlmIHRoZSBwb2ludCBpcyB3aXRoaW4gdGhlIHBvbHlnb24gb3Igb24gYW4gZWRn
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFBhaXI6Om92ZXJsYXBzUmVjdCk6IFJldHVybnMg
dHJ1ZSBpZiB0aGUgbGluZSBzZWdtZW50IGZyb20gdmVydGV4MSB0byB2ZXJ0ZXgyIG92ZXJsYXBz
IHRoZSBzcGVjaWZpZWQgRmxvYXRSZWN0LgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4UGFpcjo6
aW50ZXJzZWN0aW9uKTogRmluZHMgdGhlIGludGVyc2VjdGlvbiBvZiBhIHBhaXIgb2YgbGluZSBz
ZWdtZW50cyBkZWZpbmVkIGJ5IFZlcnRleFBhaXJzLgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVz
aW9uUG9seWdvbjo6Zmlyc3RGaXRSZWN0SW5Qb2x5Z29uKTogUmV0dXJucyB0cnVlIGlmIG5vbmUg
b2YgdGhlIHBvbHlnb24ncyBlZGdlcywgZXhjZXB0IHRoZSB0d28gdXNlZAorICAgICAgICAgICAg
dG8gZGVmaW5lIGJ5IHRoZSBvZmZzZXQgZWRnZXMsIG92ZXJsYXAgdGhlIEZsb2F0UmVjdC4KKyAg
ICAgICAgKFdlYkNvcmU6OmFib3ZlT3JUb1RoZUxlZnQpOiBEZWZpbmVzIHRoZSB0b3AvbGVmdCBw
cmVmZXJlbmNlIGZvciAiZmlyc3QgZml0IiBsb2NhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpF
eGNsdXNpb25Qb2x5Z29uOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKTogUmVwbGFj
ZWQgdGhlIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtZXRob2QuCisgICAgICAgICogcmVu
ZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaDoKKyAgICAgICAgKEV4Y2x1c2lvblBvbHlnb24pOiBB
ZGRlZCBkZWNsYXJhdGlvbnMgbm90ZWQgYWJvdmUuCisgICAgICAgIChWZXJ0ZXhQYWlyKTogQWJz
dHJhY3QgY2xhc3MgdGhhdCBkZWZpbmVzIGEgcGFpciBvZiBGbG9hdFBvaW50cy4KKyAgICAgICAg
KE9mZnNldFBvbHlnb25FZGdlKTogUmVwcmVzZW50cyBhbiBlZGdlIHRoYXQncyBob3Jpem9udGFs
bHkgb2Zmc2V0IGZyb20gYSBwb2x5Z29uIGVkZ2UuCisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRQ
b2x5Z29uRWRnZTo6ZWRnZUluZGV4KTogVGhlIEV4Y2x1c2lvblBvbHlnb24gZWRnZSBpbmRleCB1
c2VkIHRvIGRlZmluZSB0aGlzIE9mZnNldEVkZ2UuCisKIDIwMTMtMDEtMTggIFN0ZXBoZW4gQ2hl
bm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBc3NlcnRzIHdoZW4gdGV4
dFBhdGggaXMgdXNlZCB3aXRoIG5vIHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRTaXplLmgKaW5kZXggMmNhMjJjZC4uNjAxMDIxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKQEAgLTE3NSw2ICsxNzUsMTYgQEAg
aW5saW5lIEZsb2F0U2l6ZSBvcGVyYXRvci0oY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIHJl
dHVybiBGbG9hdFNpemUoLXNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpOwogfQogCitpbmxp
bmUgRmxvYXRTaXplIG9wZXJhdG9yKihjb25zdCBGbG9hdFNpemUmIGEsIGNvbnN0IGZsb2F0IGIp
Cit7CisgICAgcmV0dXJuIEZsb2F0U2l6ZShhLndpZHRoKCkgKiBiLCBhLmhlaWdodCgpICogYik7
Cit9CisKK2lubGluZSBGbG9hdFNpemUgb3BlcmF0b3IqKGNvbnN0IGZsb2F0IGEsIGNvbnN0IEZs
b2F0U2l6ZSYgYikKK3sKKyAgICByZXR1cm4gRmxvYXRTaXplKGEgKiBiLndpZHRoKCksIGEgKiBi
LmhlaWdodCgpKTsKK30KKwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFNpemUm
IGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKIHsKICAgICByZXR1cm4gYS53aWR0aCgpID09IGIud2lk
dGgoKSAmJiBhLmhlaWdodCgpID09IGIuaGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAKaW5kZXggYTUyMjMyZi4uNmVkNjU4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcApAQCAtNjIsNiAr
NjIsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGFyZUNvaW5jaWRlbnRQb2ludHMoY29uc3QgRmxv
YXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAKICAgICByZXR1cm4gcDAueCgpID09IHAx
LngoKSAmJiBwMC55KCkgPT0gcDEueSgpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNQb2lu
dE9uTGluZVNlZ21lbnQoY29uc3QgRmxvYXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAx
LCBjb25zdCBGbG9hdFBvaW50JiBwMikKK3sKKyAgICByZXR1cm4gYXJlQ29sbGluZWFyUG9pbnRz
KHAwLCBwMSwgcDIpICYmIHAyLngoKSA+PSBzdGQ6Om1pbihwMC54KCksIHAxLngoKSkgJiYgcDIu
eCgpIDw9IHN0ZDo6bWF4KHAwLngoKSwgcDEueCgpKTsKK30KKwogc3RhdGljIGlubGluZSB1bnNp
Z25lZCBuZXh0VmVydGV4SW5kZXgodW5zaWduZWQgdmVydGV4SW5kZXgsIHVuc2lnbmVkIG5WZXJ0
aWNlcywgYm9vbCBjbG9ja3dpc2UpCiB7CiAgICAgcmV0dXJuICgoY2xvY2t3aXNlKSA/IHZlcnRl
eEluZGV4ICsgMSA6IHZlcnRleEluZGV4IC0gMSArIG5WZXJ0aWNlcykgJSBuVmVydGljZXM7CkBA
IC0zNzYsMjAgKzM4MSwxNjQgQEAgdm9pZCBFeGNsdXNpb25Qb2x5Z29uOjpnZXRJbmNsdWRlZElu
dGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2gKICAgICB9CiB9CiAK
LWJvb2wgRXhjbHVzaW9uUG9seWdvbjo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChm
bG9hdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgbWluTG9naWNhbElu
dGVydmFsU2l6ZSwgZmxvYXQmIHJlc3VsdCkgY29uc3QKK3N0YXRpYyBpbmxpbmUgZmxvYXQgbGVm
dFNpZGUoY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSwgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4
MiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuICgocG9pbnQueCgpIC0g
dmVydGV4MS54KCkpICogKHZlcnRleDIueSgpIC0gdmVydGV4MS55KCkpKSAtICgodmVydGV4Mi54
KCkgLSB2ZXJ0ZXgxLngoKSkgKiAocG9pbnQueSgpIC0gdmVydGV4MS55KCkpKTsKK30KKworYm9v
bCBFeGNsdXNpb25Qb2x5Z29uOjpwb2ludEluUG9seWdvbihjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYm91bmRpbmdCb3guY29udGFpbnMocG9pbnQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgd2luZGluZ051bWJlciA9IDA7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mRWRnZXMoKTsgaSsrKSB7CisgICAgICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHZlcnRleDEgPSBlZGdlQXQoaSkudmVydGV4MSgpOworICAgICAgICBj
b25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgyID0gZWRnZUF0KGkpLnZlcnRleDIoKTsKKyAgICAgICAg
aWYgKGlzUG9pbnRPbkxpbmVTZWdtZW50KHZlcnRleDEsIHZlcnRleDIsIHBvaW50KSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAodmVydGV4Mi55KCkgPCBwb2ludC55KCkp
IHsKKyAgICAgICAgICAgIGlmICgodmVydGV4MS55KCkgPiBwb2ludC55KCkpICYmIChsZWZ0U2lk
ZSh2ZXJ0ZXgxLCB2ZXJ0ZXgyLCBwb2ludCkgPiAwKSkKKyAgICAgICAgICAgICAgICB3aW5kaW5n
TnVtYmVyICs9IDE7CisgICAgICAgIH0gZWxzZSBpZiAodmVydGV4Mi55KCkgPiBwb2ludC55KCkp
IHsKKyAgICAgICAgICAgIGlmICgodmVydGV4MS55KCkgPD0gcG9pbnQueSgpKSAmJiAobGVmdFNp
ZGUodmVydGV4MSwgdmVydGV4MiwgcG9pbnQpIDwgMCkpCisgICAgICAgICAgICAgICAgd2luZGlu
Z051bWJlciAtPSAxOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHdpbmRpbmdOdW1i
ZXI7Cit9CisKK2Jvb2wgVmVydGV4UGFpcjo6b3ZlcmxhcHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkgY29uc3QKK3sKKyAgICBib29sIGJvdW5kc092ZXJsYXAgPSAobWluWCgpIDwgcmVjdC5t
YXhYKCkpICYmIChtYXhYKCkgPiByZWN0LngoKSkgJiYgKG1pblkoKSA8IHJlY3QubWF4WSgpKSAm
JiAobWF4WSgpID4gcmVjdC55KCkpOworICAgIGlmICghYm91bmRzT3ZlcmxhcCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgZmxvYXQgbGVmdFNpZGVWYWx1ZXNbNF0gPSB7CisgICAgICAg
IGxlZnRTaWRlKHZlcnRleDEoKSwgdmVydGV4MigpLCByZWN0Lm1pblhNaW5ZQ29ybmVyKCkpLAor
ICAgICAgICBsZWZ0U2lkZSh2ZXJ0ZXgxKCksIHZlcnRleDIoKSwgcmVjdC5tYXhYTWluWUNvcm5l
cigpKSwKKyAgICAgICAgbGVmdFNpZGUodmVydGV4MSgpLCB2ZXJ0ZXgyKCksIHJlY3QubWluWE1h
eFlDb3JuZXIoKSksCisgICAgICAgIGxlZnRTaWRlKHZlcnRleDEoKSwgdmVydGV4MigpLCByZWN0
Lm1heFhNYXhZQ29ybmVyKCkpCisgICAgfTsKKworICAgIGludCBzID0gMDsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgIGlmICghbGVmdFNpZGVWYWx1ZXNb
aV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaW50IHNnbiA9IGxlZnRTaWRlVmFs
dWVzW2ldID4gMCA/IDEgOiAtMTsKKyAgICAgICAgaWYgKCFzKQorICAgICAgICAgICAgcyA9IHNn
bjsKKyAgICAgICAgZWxzZSBpZiAocyAhPSBzZ24pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVmVydGV4UGFpcjo6aW50ZXJz
ZWN0aW9uKGNvbnN0IFZlcnRleFBhaXImIG90aGVyLCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QK
IHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgdGVtcG9yYXJ5IHN0dWIsIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0MjkKKyAgICAvLyBTZWU6IGh0dHA6
Ly9wYXVsYm91cmtlLm5ldC9nZW9tZXRyeS9wb2ludGxpbmVwbGFuZS8KKworICAgIGNvbnN0IEZs
b2F0U2l6ZSYgdGhpc0RlbHRhID0gdmVydGV4MigpIC0gdmVydGV4MSgpOworICAgIGNvbnN0IEZs
b2F0U2l6ZSYgb3RoZXJEZWx0YSA9IG90aGVyLnZlcnRleDIoKSAtIG90aGVyLnZlcnRleDEoKTsK
KyAgICBmbG9hdCBkZW4gPSBkZXRlcm1pbmFudCh0aGlzRGVsdGEsIG90aGVyRGVsdGEpOworICAg
IGlmICghZGVuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBGbG9hdFNpemUm
IHZlcnRleDFEZWx0YSA9IHZlcnRleDEoKSAtIG90aGVyLnZlcnRleDEoKTsKKyAgICBmbG9hdCB1
YSA9IGRldGVybWluYW50KG90aGVyRGVsdGEsIHZlcnRleDFEZWx0YSkgLyBkZW47CisgICAgZmxv
YXQgdWIgPSBkZXRlcm1pbmFudCh0aGlzRGVsdGEsIHZlcnRleDFEZWx0YSkgLyBkZW47CiAKKyAg
ICBpZiAodWEgPCAwIHx8IHViIDwgMCB8fCB1YSA+IDEgfHwgdWIgPiAxKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBwb2ludCA9IHZlcnRleDEoKSArIHVhICogdGhpc0RlbHRhOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIEV4Y2x1c2lvblBvbHlnb246OmZpcnN0Rml0UmVjdElu
UG9seWdvbihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIHVuc2lnbmVkIG9mZnNldEVkZ2VJbmRleDEs
IHVuc2lnbmVkIG9mZnNldEVkZ2VJbmRleDIpIGNvbnN0Cit7CisgICAgVmVjdG9yPEV4Y2x1c2lv
blBvbHlnb246OkVkZ2VJbnRlcnZhbD4gb3ZlcmxhcHBpbmdFZGdlczsKKyAgICBtX2VkZ2VUcmVl
LmFsbE92ZXJsYXBzKEV4Y2x1c2lvblBvbHlnb246OkVkZ2VJbnRlcnZhbChyZWN0LnkoKSwgcmVj
dC5tYXhZKCksIDApLCBvdmVybGFwcGluZ0VkZ2VzKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBvdmVybGFwcGluZ0VkZ2VzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGNvbnN0IEV4
Y2x1c2lvblBvbHlnb25FZGdlKiBlZGdlID0gc3RhdGljX2Nhc3Q8RXhjbHVzaW9uUG9seWdvbkVk
Z2UqPihvdmVybGFwcGluZ0VkZ2VzW2ldLmRhdGEoKSk7CisgICAgICAgIGlmIChlZGdlLT5lZGdl
SW5kZXgoKSAhPSBvZmZzZXRFZGdlSW5kZXgxICYmIGVkZ2UtPmVkZ2VJbmRleCgpICE9IG9mZnNl
dEVkZ2VJbmRleDIgJiYgZWRnZS0+b3ZlcmxhcHNSZWN0KHJlY3QpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW5saW5l
IGJvb2wgYWJvdmVPclRvVGhlTGVmdChjb25zdCBGbG9hdFJlY3QmIHIxLCBjb25zdCBGbG9hdFJl
Y3QmIHIyKQoreworICAgIGlmIChyMS55KCkgPCByMi55KCkpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChyMS55KCkgPT0gcjIueSgpKQorICAgICAgICByZXR1cm4gcjEueCgpIDwgcjIu
eCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBFeGNsdXNpb25Qb2x5Z29uOjpmaXJz
dEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwg
Y29uc3QgRmxvYXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBmbG9hdCYgcmVzdWx0KSBj
b25zdAorewogICAgIGlmIChtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLndpZHRoKCkgPiBtX2JvdW5k
aW5nQm94LndpZHRoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZsb2F0IG1pblkg
PSBzdGQ6Om1heChtX2JvdW5kaW5nQm94LnkoKSwgbWluTG9naWNhbEludGVydmFsVG9wKTsKICAg
ICBmbG9hdCBtYXhZID0gbWluWSArIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0KCk7Ci0g
ICAgaWYgKG1pblkgPCBtX2JvdW5kaW5nQm94LnkoKSB8fCBtYXhZID4gbV9ib3VuZGluZ0JveC5t
YXhZKCkpCisKKyAgICBpZiAobWF4WSA+IG1fYm91bmRpbmdCb3gubWF4WSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3A7Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgZmxvYXQgZHggPSBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLndpZHRo
KCkgLyAyOworICAgIGZsb2F0IGR5ID0gbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSAv
IDI7CisgICAgVmVjdG9yPE9mZnNldFBvbHlnb25FZGdlPiBvZmZzZXRFZGdlczsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkVkZ2VzKCk7IGkrKykgeworICAgICAgICBj
b25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSYgZWRnZSA9IGVkZ2VBdChpKTsKKyAgICAgICAgY29u
c3QgRmxvYXRQb2ludCYgdmVydGV4MSA9IGVkZ2UudmVydGV4MSgpOworICAgICAgICBjb25zdCBG
bG9hdFBvaW50JiB2ZXJ0ZXgyID0gZWRnZS52ZXJ0ZXgyKCk7CisgICAgICAgIFZlY3RvcjxPZmZz
ZXRQb2x5Z29uRWRnZT4gb2Zmc2V0RWRnZVBhaXI7CisKKyAgICAgICAgaWYgKHZlcnRleDIueSgp
ID4gdmVydGV4MS55KCkgPyB2ZXJ0ZXgyLngoKSA+PSB2ZXJ0ZXgxLngoKSA6IHZlcnRleDEueCgp
ID49IHZlcnRleDIueCgpKSB7CisgICAgICAgICAgICBvZmZzZXRFZGdlUGFpci5hcHBlbmQoT2Zm
c2V0UG9seWdvbkVkZ2UoZWRnZSwgRmxvYXRTaXplKGR4LCAtZHkpKSk7CisgICAgICAgICAgICBv
ZmZzZXRFZGdlUGFpci5hcHBlbmQoT2Zmc2V0UG9seWdvbkVkZ2UoZWRnZSwgRmxvYXRTaXplKC1k
eCwgZHkpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvZmZzZXRFZGdlUGFpci5h
cHBlbmQoT2Zmc2V0UG9seWdvbkVkZ2UoZWRnZSwgRmxvYXRTaXplKGR4LCBkeSkpKTsKKyAgICAg
ICAgICAgIG9mZnNldEVkZ2VQYWlyLmFwcGVuZChPZmZzZXRQb2x5Z29uRWRnZShlZGdlLCBGbG9h
dFNpemUoLWR4LCAtZHkpKSk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHVuc2lnbmVkIGog
PSAwOyBqIDwgb2Zmc2V0RWRnZVBhaXIuc2l6ZSgpOyBqKyspCisgICAgICAgICAgICBpZiAob2Zm
c2V0RWRnZVBhaXJbal0ubWF4WSgpID49IG1pblkpCisgICAgICAgICAgICAgICAgb2Zmc2V0RWRn
ZXMuYXBwZW5kKG9mZnNldEVkZ2VQYWlyW2pdKTsKKyAgICB9CisKKyAgICBvZmZzZXRFZGdlcy5h
cHBlbmQoT2Zmc2V0UG9seWdvbkVkZ2UoKnRoaXMsIG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgRmxv
YXRTaXplKDAsIGR5KSkpOworCisgICAgRmxvYXRQb2ludCBvZmZzZXRFZGdlc0ludGVyc2VjdGlv
bjsKKyAgICBGbG9hdFJlY3QgZmlyc3RGaXRSZWN0OworICAgIGJvb2wgZmlyc3RGaXRGb3VuZCA9
IGZhbHNlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9mZnNldEVkZ2VzLnNpemUo
KSAtIDE7IGkrKykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBpICsgMTsgaiA8IG9mZnNl
dEVkZ2VzLnNpemUoKTsgaisrKSB7CisgICAgICAgICAgICBpZiAob2Zmc2V0RWRnZXNbaV0uaW50
ZXJzZWN0aW9uKG9mZnNldEVkZ2VzW2pdLCBvZmZzZXRFZGdlc0ludGVyc2VjdGlvbikpIHsKKyAg
ICAgICAgICAgICAgICBGbG9hdFBvaW50IHBvdGVudGlhbEZpcnN0Rml0TG9jYXRpb24ob2Zmc2V0
RWRnZXNJbnRlcnNlY3Rpb24ueCgpIC0gZHgsIG9mZnNldEVkZ2VzSW50ZXJzZWN0aW9uLnkoKSAt
IGR5KTsKKyAgICAgICAgICAgICAgICBGbG9hdFJlY3QgcG90ZW50aWFsRmlyc3RGaXRSZWN0KHBv
dGVudGlhbEZpcnN0Rml0TG9jYXRpb24sIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUpOworICAgICAg
ICAgICAgICAgIGlmICgocG90ZW50aWFsRmlyc3RGaXRMb2NhdGlvbi55KCkgPj0gbWluTG9naWNh
bEludGVydmFsVG9wKQorICAgICAgICAgICAgICAgICAgICAmJiAoIWZpcnN0Rml0Rm91bmQgfHwg
YWJvdmVPclRvVGhlTGVmdChwb3RlbnRpYWxGaXJzdEZpdFJlY3QsIGZpcnN0Rml0UmVjdCkpCisg
ICAgICAgICAgICAgICAgICAgICYmIHBvaW50SW5Qb2x5Z29uKG9mZnNldEVkZ2VzSW50ZXJzZWN0
aW9uKQorICAgICAgICAgICAgICAgICAgICAmJiBmaXJzdEZpdFJlY3RJblBvbHlnb24ocG90ZW50
aWFsRmlyc3RGaXRSZWN0LCBvZmZzZXRFZGdlc1tpXS5lZGdlSW5kZXgoKSwgb2Zmc2V0RWRnZXNb
al0uZWRnZUluZGV4KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpcnN0Rml0Rm91bmQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICBmaXJzdEZpdFJlY3QgPSBwb3RlbnRpYWxGaXJzdEZp
dFJlY3Q7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGZpcnN0Rml0Rm91bmQpCisgICAgICAgIHJlc3VsdCA9IGZpcnN0Rml0UmVj
dC55KCk7CisgICAgcmV0dXJuIGZpcnN0Rml0Rm91bmQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5
Z29uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oCmluZGV4
IGM5NzNjMzUuLmRjMDJlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25Qb2x5Z29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lv
blBvbHlnb24uaApAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgRXhjbHVzaW9u
UG9seWdvbkVkZ2UmIGVkZ2VBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9lZGdl
c1tpbmRleF07IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkVkZ2VzKCkgY29uc3QgeyByZXR1cm4g
bV9lZGdlcy5zaXplKCk7IH0KIAorICAgIGJvb2wgcG9pbnRJblBvbHlnb24oY29uc3QgRmxvYXRQ
b2ludCYpIGNvbnN0OworCiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc2hhcGVMb2dpY2FsQm91bmRp
bmdCb3goKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2JvdW5kaW5nQm94OyB9CiAgICAgdmly
dHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2VtcHR5OyB9CiAg
ICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZs
b2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CkBAIC03Miw2
ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlWEludGVyc2VjdGlvbnMoZmxvYXQg
eSwgYm9vbCBpc01pblksIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mKSBjb25zdDsKICAgICB2
b2lkIGNvbXB1dGVFZGdlSW50ZXJzZWN0aW9ucyhmbG9hdCBtaW5ZLCBmbG9hdCBtYXhZLCBWZWN0
b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JikgY29uc3Q7CiAgICAgdW5zaWduZWQgZmluZE5leHRFZGdl
VmVydGV4SW5kZXgodW5zaWduZWQgdmVydGV4SW5kZXgxLCBib29sIGNsb2Nrd2lzZSkgY29uc3Q7
CisgICAgYm9vbCBmaXJzdEZpdFJlY3RJblBvbHlnb24oY29uc3QgRmxvYXRSZWN0JiwgdW5zaWdu
ZWQgb2Zmc2V0RWRnZUluZGV4MSwgdW5zaWduZWQgb2Zmc2V0RWRnZUluZGV4KSBjb25zdDsKIAog
ICAgIHR5cGVkZWYgUE9ESW50ZXJ2YWw8ZmxvYXQsIEV4Y2x1c2lvblBvbHlnb25FZGdlKj4gRWRn
ZUludGVydmFsOwogICAgIHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGZsb2F0LCBFeGNsdXNpb25Q
b2x5Z29uRWRnZSo+IEVkZ2VJbnRlcnZhbFRyZWU7CkBAIC05NSw2ICs5OCw5IEBAIHB1YmxpYzoK
ICAgICBmbG9hdCBtaW5ZKCkgY29uc3QgeyByZXR1cm4gc3RkOjptaW4odmVydGV4MSgpLnkoKSwg
dmVydGV4MigpLnkoKSk7IH0KICAgICBmbG9hdCBtYXhYKCkgY29uc3QgeyByZXR1cm4gc3RkOjpt
YXgodmVydGV4MSgpLngoKSwgdmVydGV4MigpLngoKSk7IH0KICAgICBmbG9hdCBtYXhZKCkgY29u
c3QgeyByZXR1cm4gc3RkOjptYXgodmVydGV4MSgpLnkoKSwgdmVydGV4MigpLnkoKSk7IH0KKwor
ICAgIGJvb2wgb3ZlcmxhcHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAgIGJvb2wg
aW50ZXJzZWN0aW9uKGNvbnN0IFZlcnRleFBhaXImLCBGbG9hdFBvaW50JikgY29uc3Q7CiB9Owog
CiAvLyBFZGdlSW50ZXJ2YWxUcmVlIG5vZGVzIHN0b3JlIG1pblksIG1heFksIGFuZCBhICgiVXNl
ckRhdGEiKSBwb2ludGVyIHRvIGFuIEV4Y2x1c2lvblBvbHlnb25FZGdlLiBFZGdlIHZlcnRleApA
QCAtMTUwLDYgKzE1NiwzMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBWYWx1ZVRvU3RyaW5nPEV4Y2x1
c2lvblBvbHlnb25FZGdlKj4gewogfTsKICNlbmRpZgogCitjbGFzcyBPZmZzZXRQb2x5Z29uRWRn
ZSA6IHB1YmxpYyBWZXJ0ZXhQYWlyIHsKK3B1YmxpYzoKKyAgICBPZmZzZXRQb2x5Z29uRWRnZShj
b25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSYgZWRnZSwgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQp
CisgICAgICAgIDogbV92ZXJ0ZXgxKGVkZ2UudmVydGV4MSgpICsgb2Zmc2V0KQorICAgICAgICAs
IG1fdmVydGV4MihlZGdlLnZlcnRleDIoKSArIG9mZnNldCkKKyAgICAgICAgLCBtX2VkZ2VJbmRl
eChlZGdlLmVkZ2VJbmRleCgpKQorICAgIHsKKyAgICB9CisKKyAgICBPZmZzZXRQb2x5Z29uRWRn
ZShjb25zdCBFeGNsdXNpb25Qb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCBtaW5Mb2dpY2FsSW50ZXJ2
YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQorICAgICAgICA6IG1fdmVydGV4MShGbG9h
dFBvaW50KHBvbHlnb24uc2hhcGVMb2dpY2FsQm91bmRpbmdCb3goKS54KCksIG1pbkxvZ2ljYWxJ
bnRlcnZhbFRvcCkgKyBvZmZzZXQpCisgICAgICAgICwgbV92ZXJ0ZXgyKEZsb2F0UG9pbnQocG9s
eWdvbi5zaGFwZUxvZ2ljYWxCb3VuZGluZ0JveCgpLm1heFgoKSwgbWluTG9naWNhbEludGVydmFs
VG9wKSArIG9mZnNldCkKKyAgICAgICAgLCBtX2VkZ2VJbmRleChwb2x5Z29uLm51bWJlck9mRWRn
ZXMoKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBjb25zdCBGbG9hdFBvaW50JiB2ZXJ0
ZXgxKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92ZXJ0ZXgxOyB9CisgICAgdmlydHVhbCBj
b25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92ZXJ0
ZXgyOyB9CisgICAgdW5zaWduZWQgZWRnZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9lZGdlSW5k
ZXg7IH0KKworcHJpdmF0ZToKKyAgICBGbG9hdFBvaW50IG1fdmVydGV4MTsKKyAgICBGbG9hdFBv
aW50IG1fdmVydGV4MjsKKyAgICB1bnNpZ25lZCBtX2VkZ2VJbmRleDsKK307CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEV4Y2x1c2lvblBvbHlnb25faAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184068</attachid>
            <date>2013-01-22 16:17:58 -0800</date>
            <delta_ts>2013-01-23 12:11:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>24039</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YTA1MDI1Li4wODVmOWM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDEt
MjIgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIGZpcnN0IGluY2x1ZGVkIGludGVydmFs
IHBvc2l0aW9uIGZvciBwb2x5Z29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAzNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsIG9mIHRoZSBleGlzdGluZyBzaGFwZS1pbnNpZGUgdGVzdHMgZXhl
cmNpc2UgdGhlIG5ldyBjb2RlLiAgQWRkZWQgbmV3IHRlc3RzIHdoaWNoCisgICAgICAgIHZlcmlm
eSB0aGF0IGxheW91dCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBsYXlvdXQgY2FuIG5vdCBiZWdpbiBh
dCB0aGUgc2hhcGUncyBsb2dpY2FsIHRvcC4KKyAgICAgICAgVGVzdCAwMDEgYWRkaXRpb25hbGx5
IGNoZWNrcyBhbGwgd3JpdGluZy1tb2RlcywgdGVzdCAwMDIgdmVyaWZpZXMgdGhhdCB0aGUgdG9w
bW9zdC9sZWZ0bW9zdAorICAgICAgICBydWxlIGlzIGZvbGxvd2VkLCBhbmQgdGVzdDMgY2hlY2tz
IGEgc2VsZi1pbnRlcnNlY3RpbmcgcG9seWdvbi4KKworICAgICAgICAqIGZhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtZmlyc3QtZml0LTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAyLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LWZpcnN0LWZpdC0wMDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMy1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1m
aXJzdC1maXQtMDAzLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTE4ICBTdGVwaGVuIENoZW5uZXkg
IDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQXNzZXJ0cyB3aGVuIHRleHRQYXRo
IGlzIHVzZWQgd2l0aCBubyBwYXRoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAxLWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1maXJzdC1maXQtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOTc0NjgwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEtZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c3R5bGU+CisgICAgLnNoYXBlLWluc2lkZSB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
KyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBm
b250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAg
IH0KKworICAgIC5ibHVlIHsKKyAgICAgICAgY29sb3I6IGJsdWU7CisgICAgIH0KKworICAgIC5z
aGFwZS1vdXRsaW5lIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6
IDBweDsKKyAgICAgICAgbGVmdDogMHB4OworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAg
IGhlaWdodDogMjAwcHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxw
PlRoZSBzb2xpZCBncmVlbiBhbmQgYmx1ZSByZWN0YW5nbGVzIHNob3VsZCBiZSBjb250YWluZWQg
YnkgdGhlIGJsdWUgdHJpYW5nbGUgb3V0bGluZXMuPC9wPgorICAgIDxkaXYgY2xhc3M9InNoYXBl
LWluc2lkZSI+CisgICAgICAgIDxzdmcgY2xhc3M9InNoYXBlLW91dGxpbmUiIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAs
MCAyMDAsMjAwIDAsMjAwIiBzdHJva2U9ImJsdWUiIGZpbGw9Im5vbmUiLz4KKyAgICAgICAgPC9z
dmc+CisgICAgICAgIDxici8+WDxici8+PHNwYW4gY2xhc3M9ImJsdWUiPlhYPC9zcGFuPjxici8+
WFhYCisgICAgPC9kaXY+CisgICAgPHA+V3JpdGluZy1tb2RlIGlzIGhvcml6b250YWwtdGI8L3A+
CisKKyAgICA8ZGl2IGNsYXNzPSJzaGFwZS1pbnNpZGUiIHN0eWxlPSItd2Via2l0LXdyaXRpbmct
bW9kZTogdmVydGljYWwtcmwiPgorICAgICAgICA8c3ZnIGNsYXNzPSJzaGFwZS1vdXRsaW5lIiB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAgICAgPHBvbHlnb24g
cG9pbnRzPSIwLDAgMjAwLDIwMCAwLDIwMCIgc3Ryb2tlPSJibHVlIiBmaWxsPSJub25lIi8+Cisg
ICAgICAgIDwvc3ZnPgorICAgICAgICA8L2JyLz4mbmJzcDsmbmJzcDsmbmJzcDtYPGJyLz4mbmJz
cDsmbmJzcDs8c3BhbiBjbGFzcz0iYmx1ZSI+WFg8L3NwYW4+PGJyLz4mbmJzcDtYWFgKKyAgICA8
L2Rpdj4KKyAgICA8cD5Xcml0aW5nLW1vZGUgaXMgdmVydGljYWwtcmwuPC9wPgorCisgICAgPGRp
diBjbGFzcz0ic2hhcGUtaW5zaWRlIiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRp
Y2FsLWxyIj4KKyAgICAgICAgPHN2ZyBjbGFzcz0ic2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCww
IDIwMCwyMDAgMCwyMDAiIHN0cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIvPgorICAgICAgICA8L3N2
Zz4KKyAgICAgICAgJm5ic3A7WFhYPGJyLz4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iYmx1ZSI+
WFg8L3NwYW4+PGJyLz4mbmJzcDsmbmJzcDsmbmJzcDtYCisgICAgPC9kaXY+CisgICAgPHA+V3Jp
dGluZy1tb2RlIGlzIHZlcnRpY2FsLWxyLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LWZpcnN0LWZpdC0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi45Njk2ZmMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMS5o
dG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxz
dHlsZT4KKyAgICAuc2hhcGUtaW5zaWRlIHsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwor
ICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIC13
ZWJraXQtc2hhcGUtaW5zaWRlOiBwb2x5Z29uKDBweCAwcHgsIDIwMHB4IDIwMHB4LCAwcHggMjAw
cHgpOworICAgICAgICBmb250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29s
b3I6IGdyZWVuOworICAgIH0KKworICAgIC5ibHVlIHsKKyAgICAgICAgY29sb3I6IGJsdWU7Cisg
ICAgIH0KKworICAgIC5zaGFwZS1vdXRsaW5lIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgICAgICB0b3A6IDBweDsKKyAgICAgICAgbGVmdDogMHB4OworICAgICAgICB3aWR0aDog
MjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorICAgIDxwPlRoZSBzb2xpZCBncmVlbiBhbmQgYmx1ZSByZWN0YW5nbGVzIHNob3Vs
ZCBiZSBjb250YWluZWQgYnkgdGhlIGJsdWUgdHJpYW5nbGUgb3V0bGluZXMuPC9wPgorICAgIDxk
aXYgY2xhc3M9InNoYXBlLWluc2lkZSI+CisgICAgICAgIDxzdmcgY2xhc3M9InNoYXBlLW91dGxp
bmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8cG9s
eWdvbiBwb2ludHM9IjAsMCAyMDAsMjAwIDAsMjAwIiBzdHJva2U9ImJsdWUiIGZpbGw9Im5vbmUi
Lz4KKyAgICAgICAgPC9zdmc+CisgICAgICAgIFggPHNwYW4gY2xhc3M9ImJsdWUiPlhYPC9zcGFu
PiBYWFgKKyAgICA8L2Rpdj4KKyAgICA8cD5Xcml0aW5nLW1vZGUgaXMgaG9yaXpvbnRhbC10Yjwv
cD4KKworICAgIDxkaXYgY2xhc3M9InNoYXBlLWluc2lkZSIgc3R5bGU9Ii13ZWJraXQtd3JpdGlu
Zy1tb2RlOiB2ZXJ0aWNhbC1ybCI+CisgICAgICAgIDxzdmcgY2xhc3M9InNoYXBlLW91dGxpbmUi
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8cG9seWdv
biBwb2ludHM9IjAsMCAyMDAsMjAwIDAsMjAwIiBzdHJva2U9ImJsdWUiIGZpbGw9Im5vbmUiLz4K
KyAgICAgICAgPC9zdmc+CisgICAgICAgIFggPHNwYW4gY2xhc3M9ImJsdWUiPlhYPC9zcGFuPiBY
WFgKKyAgICA8L2Rpdj4KKyAgICA8cD5Xcml0aW5nLW1vZGUgaXMgdmVydGljYWwtcmwuPC9wPgor
CisgICAgPGRpdiBjbGFzcz0ic2hhcGUtaW5zaWRlIiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1v
ZGU6IHZlcnRpY2FsLWxyIj4KKyAgICAgICAgPHN2ZyBjbGFzcz0ic2hhcGUtb3V0bGluZSIgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxwb2x5Z29uIHBv
aW50cz0iMCwwIDIwMCwyMDAgMCwyMDAiIHN0cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIvPgorICAg
ICAgICA8L3N2Zz4KKyAgICAgICAgWFhYIDxzcGFuIGNsYXNzPSJibHVlIj5YWDwvc3Bhbj4gWAor
ICAgIDwvZGl2PgorICAgIDxwPldyaXRpbmctbW9kZSBpcyB2ZXJ0aWNhbC1sci48L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAyLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1m
aXQtMDAyLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZTRmMmE1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9z
aGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDItZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cisg
ICAgI3NoYXBlLWluc2lkZSB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICB9CisK
KyAgICAjc2hhcGUtb3V0bGluZSB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAg
ICAgdG9wOiAwcHg7CisgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKworICAgICNzaGFwZS1jb250ZW50cyB7Cisg
ICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgdG9wOiAwcHg7CisgICAgICAgIGxl
ZnQ6IDBweDsKKyAgICAgICAgZm9udDogNTBweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAg
IGNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+
VGhlIHNvbGlkIGdyZWVuIHJlY3RhbmdsZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBieSB0aGUgYmx1
ZSBvdXRsaW5lLjwvcD4KKyAgICA8ZGl2IGlkPSJzaGFwZS1pbnNpZGUiPgorICAgICAgICA8cHJl
IGlkPSJzaGFwZS1jb250ZW50cyI+CitYICAgIFgKK1hYICBYWAorWFhYWFhYICA8L3ByZT4KKyAg
ICAgICAgPHN2ZyBpZD0ic2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIj4KKyAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDE1MCwxNTAgMzAwLDAg
MzAwLDIwMCAwLDIwMCIgc3Ryb2tlPSJibHVlIiBmaWxsPSJub25lIi8+CisgICAgICAgIDwvc3Zn
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMi5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0
LTAwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYmY2YzgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAyLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25z
RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAgICNzaGFwZS1pbnNpZGUgewor
ICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1pbnNpZGU6IHBvbHlnb24o
MHB4IDBweCwgMTUwcHggMTUwcHgsIDMwMHB4IDBweCwgMzAwcHggMjAwcHgsIDBweCAyMDBweCk7
CisgICAgICAgIGZvbnQ6IDUwcHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICBjb2xvcjog
Z3JlZW47CisgICAgfQorCisgICAgI3NoYXBlLW91dGxpbmUgeworICAgICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgICAgIHRvcDogMHB4OworICAgICAgICBsZWZ0OiAwcHg7CisgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGhlIHNvbGlkIGdyZWVuIHJlY3RhbmdsZXMgc2hvdWxk
IGJlIGNvbnRhaW5lZCBieSB0aGUgYmx1ZSBvdXRsaW5lLjwvcD4KKyAgICA8ZGl2IGlkPSJzaGFw
ZS1pbnNpZGUiPgorICAgICAgICA8c3ZnIGlkPSJzaGFwZS1vdXRsaW5lIiB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIwLDAg
MTUwLDE1MCAzMDAsMCAzMDAsMjAwIDAsMjAwIiBzdHJva2U9ImJsdWUiIGZpbGw9Im5vbmUiLz4K
KyAgICAgICAgPC9zdmc+CisgICAgICAgIFggWCBYWCBYWCBYWFhYWFgKKyAgICA8L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9z
aGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDMtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0
LWZpdC0wMDMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5hZGEzMDMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMy1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4K
KyAgICAjc2hhcGUtaW5zaWRlIHsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIH0K
KworICAgICNzaGFwZS1vdXRsaW5lIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
ICAgICB0b3A6IDBweDsKKyAgICAgICAgbGVmdDogMHB4OworICAgICAgICB3aWR0aDogNDAwcHg7
CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgIAorICAgICNzaGFwZS1jb250ZW50
cyB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgdG9wOiAwcHg7CisgICAg
ICAgIGxlZnQ6IDBweDsKKyAgICAgICAgZm9udDogNTBweC8xIEFoZW0sIHNhbnMtc2VyaWY7Cisg
ICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cisg
ICAgPHA+VGhlIHNvbGlkIGdyZWVuIHJlY3RhbmdsZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBieSB0
aGUgYmx1ZSBvdXRsaW5lLjwvcD4KKyAgICA8ZGl2IGlkPSJzaGFwZS1pbnNpZGUiPgorICAgICAg
ICA8cHJlIGlkPSJzaGFwZS1jb250ZW50cyI+CitYICAgICAgWAorICAgWFggICA8L3ByZT4KKyAg
ICAgICAgPHN2ZyBpZD0ic2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIj4KKyAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDIwMCwyMDAgNDAwLDAg
NDAwLDEwMCAwLDEwMCIgc3Ryb2tlPSJibHVlIiBmaWxsPSJub25lIi8+CisgICAgICAgIDwvc3Zn
PgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtZmlyc3QtZml0LTAwMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmY5MzYwYjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAzLmh0bWwKQEAgLTAsMCArMSwz
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRD
U1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAgICNzaGFw
ZS1pbnNpZGUgeworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIHdpZHRoOiA0
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1pbnNp
ZGU6IHBvbHlnb24oMHB4IDBweCwgMjAwcHggMjAwcHgsIDQwMHB4IDBweCwgNDAwcHggMTAwcHgs
IDBweCAxMDBweCk7CisgICAgICAgIGZvbnQ6IDUwcHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAg
ICAgICBjb2xvcjogZ3JlZW47CisgICAgfQorCisgICAgI3NoYXBlLW91dGxpbmUgeworICAgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMHB4OworICAgICAgICBsZWZ0OiAw
cHg7CisgICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGhlIHNvbGlkIGdyZWVuIHJlY3Rh
bmdsZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBieSB0aGUgYmx1ZSBvdXRsaW5lLjwvcD4KKyAgICA8
ZGl2IGlkPSJzaGFwZS1pbnNpZGUiPgorICAgICAgICA8c3ZnIGlkPSJzaGFwZS1vdXRsaW5lIiB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAgICAgPHBvbHlnb24g
cG9pbnRzPSIwLDAgMjAwLDIwMCA0MDAsMCA0MDAsMTAwIDAsMTAwIiBzdHJva2U9ImJsdWUiIGZp
bGw9Im5vbmUiLz4KKyAgICAgICAgPC9zdmc+CisgICAgICAgIFggWCBYWAorICAgIDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIzOTY4OGYuLjkwYTg3YmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMy0wMS0yMiAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFk
b2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIEFkZCBzdXBwb3J0IGZvciBjb21w
dXRpbmcgZmlyc3QgaW5jbHVkZWQgaW50ZXJ2YWwgcG9zaXRpb24gZm9yIHBvbHlnb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0MjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0
IGZvciBjb21wdXRpbmcgdGhlICJmaXJzdCBmaXQiIGxvY2F0aW9uLCBpLmUuIHRoZSBsb2dpY2Fs
IHNoYXBlLWluc2lkZQorICAgICAgICBsb2NhdGlvbiB3aGVyZSBhIGxpbmUncyBsYXlvdXQgYmVn
aW5zLiBUaGUgYWxnb3JpdGhtIGZvciBkb2luZyBzbyBpcyBkZXNjcmliZWQgaGVyZToKKyAgICAg
ICAgaHR0cDovL2hhbnNtdWxsZXItd2Via2l0LmJsb2dzcG90LmNvbS8yMDEyLzA4L3JldmlzZWQt
YWxnb3JpdGhtLWZvci1maW5kaW5nLWZpcnN0Lmh0bWwuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
Zmlyc3QtZml0LTAwMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAzLmh0bWwKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IqKTog
U2NhbGUgYSBGbG9hdFNpemUuIFRoaXMgc2ltcGxpZmllZCB0aGUgZmluYWwgZXhwcmVzc2lvbiBp
biBWZXJ0ZXhQYWlyOjppbnRlcnNlY3Rpb24oKS4KKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVz
aW9uUG9seWdvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1BvaW50T25MaW5lU2VnbWVudCk6
IFJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIHBvaW50IGlzIGNvbGxpbmVhciBhbmQgd2l0
aGluIHRoZSBsaW5lIHNlZ2VtZW50J3MgYm91bmRzLgorICAgICAgICAoV2ViQ29yZTo6bGVmdFNp
ZGUpOiBSZXR1cm4gYSB2YWx1ZSA+IDAgaWYgcG9pbnQgaXMgb24gdGhlIGxlZnQgc2lkZSBvZiB0
aGUgbGluZSBzZWdtZW50LCA8IDAgaWYgaXQncyBvbiB0aGUgcmlnaHQsIDAgaWYgaXQncyBjb2xs
aW5lYXIuCisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5Z29uOjpjb250YWlucyk6IFJl
dHVybiB0cnVlIGlmIHRoZSBwb2ludCBpcyB3aXRoaW4gdGhlIHBvbHlnb24gb3Igb24gYW4gZWRn
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlZlcnRleFBhaXI6Om92ZXJsYXBzUmVjdCk6IFJldHVybnMg
dHJ1ZSBpZiB0aGUgbGluZSBzZWdtZW50IGZyb20gdmVydGV4MSB0byB2ZXJ0ZXgyIG92ZXJsYXBz
IHRoZSBzcGVjaWZpZWQgRmxvYXRSZWN0LgorICAgICAgICAoV2ViQ29yZTo6VmVydGV4UGFpcjo6
aW50ZXJzZWN0aW9uKTogRmluZHMgdGhlIGludGVyc2VjdGlvbiBvZiBhIHBhaXIgb2YgbGluZSBz
ZWdtZW50cyBkZWZpbmVkIGJ5IFZlcnRleFBhaXJzLgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVz
aW9uUG9seWdvbjo6Zmlyc3RGaXRSZWN0SW5Qb2x5Z29uKTogUmV0dXJucyB0cnVlIGlmIG5vbmUg
b2YgdGhlIHBvbHlnb24ncyBlZGdlcywgZXhjZXB0IHRoZSB0d28gdXNlZAorICAgICAgICAgICAg
dG8gZGVmaW5lIGJ5IHRoZSBvZmZzZXQgZWRnZXMsIG92ZXJsYXAgdGhlIEZsb2F0UmVjdC4KKyAg
ICAgICAgKFdlYkNvcmU6OmFib3ZlT3JUb1RoZUxlZnQpOiBEZWZpbmVzIHRoZSB0b3AvbGVmdCBw
cmVmZXJlbmNlIGZvciAiZmlyc3QgZml0IiBsb2NhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpF
eGNsdXNpb25Qb2x5Z29uOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKTogUmVwbGFj
ZWQgdGhlIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtZXRob2QuCisgICAgICAgICogcmVu
ZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaDoKKyAgICAgICAgKEV4Y2x1c2lvblBvbHlnb24pOiBB
ZGRlZCBkZWNsYXJhdGlvbnMgbm90ZWQgYWJvdmUuCisgICAgICAgIChWZXJ0ZXhQYWlyKTogQWJz
dHJhY3QgY2xhc3MgdGhhdCBkZWZpbmVzIGEgcGFpciBvZiBGbG9hdFBvaW50cy4KKyAgICAgICAg
KE9mZnNldFBvbHlnb25FZGdlKTogUmVwcmVzZW50cyBhbiBlZGdlIHRoYXQncyBob3Jpem9udGFs
bHkgb2Zmc2V0IGZyb20gYSBwb2x5Z29uIGVkZ2UuCisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRQ
b2x5Z29uRWRnZTo6ZWRnZUluZGV4KTogVGhlIEV4Y2x1c2lvblBvbHlnb24gZWRnZSBpbmRleCB1
c2VkIHRvIGRlZmluZSB0aGlzIE9mZnNldEVkZ2UuCisKIDIwMTMtMDEtMTggIFN0ZXBoZW4gQ2hl
bm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBc3NlcnRzIHdoZW4gdGV4
dFBhdGggaXMgdXNlZCB3aXRoIG5vIHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRTaXplLmgKaW5kZXggMmNhMjJjZC4uNjAxMDIxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKQEAgLTE3NSw2ICsxNzUsMTYgQEAg
aW5saW5lIEZsb2F0U2l6ZSBvcGVyYXRvci0oY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIHJl
dHVybiBGbG9hdFNpemUoLXNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpOwogfQogCitpbmxp
bmUgRmxvYXRTaXplIG9wZXJhdG9yKihjb25zdCBGbG9hdFNpemUmIGEsIGNvbnN0IGZsb2F0IGIp
Cit7CisgICAgcmV0dXJuIEZsb2F0U2l6ZShhLndpZHRoKCkgKiBiLCBhLmhlaWdodCgpICogYik7
Cit9CisKK2lubGluZSBGbG9hdFNpemUgb3BlcmF0b3IqKGNvbnN0IGZsb2F0IGEsIGNvbnN0IEZs
b2F0U2l6ZSYgYikKK3sKKyAgICByZXR1cm4gRmxvYXRTaXplKGEgKiBiLndpZHRoKCksIGEgKiBi
LmhlaWdodCgpKTsKK30KKwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFNpemUm
IGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKIHsKICAgICByZXR1cm4gYS53aWR0aCgpID09IGIud2lk
dGgoKSAmJiBhLmhlaWdodCgpID09IGIuaGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAKaW5kZXggYTUyMjMyZi4uNTk0ZTExYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcApAQCAtNjIsNiAr
NjIsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGFyZUNvaW5jaWRlbnRQb2ludHMoY29uc3QgRmxv
YXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAKICAgICByZXR1cm4gcDAueCgpID09IHAx
LngoKSAmJiBwMC55KCkgPT0gcDEueSgpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNQb2lu
dE9uTGluZVNlZ21lbnQoY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSwgY29uc3QgRmxvYXRQb2lu
dCYgdmVydGV4MiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuIHBvaW50
LngoKSA+PSBzdGQ6Om1pbih2ZXJ0ZXgxLngoKSwgdmVydGV4Mi54KCkpCisgICAgICAgICYmIHBv
aW50LngoKSA8PSBzdGQ6Om1heCh2ZXJ0ZXgxLngoKSwgdmVydGV4Mi54KCkpCisgICAgICAgICYm
IGFyZUNvbGxpbmVhclBvaW50cyh2ZXJ0ZXgxLCB2ZXJ0ZXgyLCBwb2ludCk7Cit9CisKIHN0YXRp
YyBpbmxpbmUgdW5zaWduZWQgbmV4dFZlcnRleEluZGV4KHVuc2lnbmVkIHZlcnRleEluZGV4LCB1
bnNpZ25lZCBuVmVydGljZXMsIGJvb2wgY2xvY2t3aXNlKQogewogICAgIHJldHVybiAoKGNsb2Nr
d2lzZSkgPyB2ZXJ0ZXhJbmRleCArIDEgOiB2ZXJ0ZXhJbmRleCAtIDEgKyBuVmVydGljZXMpICUg
blZlcnRpY2VzOwpAQCAtMzc2LDIwICszODMsMTY0IEBAIHZvaWQgRXhjbHVzaW9uUG9seWdvbjo6
Z2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdo
CiAgICAgfQogfQogCi1ib29sIEV4Y2x1c2lvblBvbHlnb246OmZpcnN0SW5jbHVkZWRJbnRlcnZh
bExvZ2ljYWxUb3AoZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBjb25zdCBGbG9hdFNpemUm
IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIGZsb2F0JiByZXN1bHQpIGNvbnN0CitzdGF0aWMgaW5s
aW5lIGZsb2F0IGxlZnRTaWRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleDEsIGNvbnN0IEZsb2F0
UG9pbnQmIHZlcnRleDIsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiAo
KHBvaW50LngoKSAtIHZlcnRleDEueCgpKSAqICh2ZXJ0ZXgyLnkoKSAtIHZlcnRleDEueSgpKSkg
LSAoKHZlcnRleDIueCgpIC0gdmVydGV4MS54KCkpICogKHBvaW50LnkoKSAtIHZlcnRleDEueSgp
KSk7Cit9CisKK2Jvb2wgRXhjbHVzaW9uUG9seWdvbjo6Y29udGFpbnMoY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2JvdW5kaW5nQm94LmNvbnRhaW5zKHBvaW50
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IHdpbmRpbmdOdW1iZXIgPSAwOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkVkZ2VzKCk7IGkrKykgeworICAg
ICAgICBjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgxID0gZWRnZUF0KGkpLnZlcnRleDEoKTsKKyAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MiA9IGVkZ2VBdChpKS52ZXJ0ZXgyKCk7Cisg
ICAgICAgIGlmIChpc1BvaW50T25MaW5lU2VnbWVudCh2ZXJ0ZXgxLCB2ZXJ0ZXgyLCBwb2ludCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHZlcnRleDIueSgpIDwgcG9p
bnQueSgpKSB7CisgICAgICAgICAgICBpZiAoKHZlcnRleDEueSgpID4gcG9pbnQueSgpKSAmJiAo
bGVmdFNpZGUodmVydGV4MSwgdmVydGV4MiwgcG9pbnQpID4gMCkpCisgICAgICAgICAgICAgICAg
d2luZGluZ051bWJlciArPSAxOworICAgICAgICB9IGVsc2UgaWYgKHZlcnRleDIueSgpID4gcG9p
bnQueSgpKSB7CisgICAgICAgICAgICBpZiAoKHZlcnRleDEueSgpIDw9IHBvaW50LnkoKSkgJiYg
KGxlZnRTaWRlKHZlcnRleDEsIHZlcnRleDIsIHBvaW50KSA8IDApKQorICAgICAgICAgICAgICAg
IHdpbmRpbmdOdW1iZXIgLT0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB3aW5k
aW5nTnVtYmVyOworfQorCitib29sIFZlcnRleFBhaXI6Om92ZXJsYXBzUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgYm9vbCBib3VuZHNPdmVybGFwID0gKG1pblgoKSA8
IHJlY3QubWF4WCgpKSAmJiAobWF4WCgpID4gcmVjdC54KCkpICYmIChtaW5ZKCkgPCByZWN0Lm1h
eFkoKSkgJiYgKG1heFkoKSA+IHJlY3QueSgpKTsKKyAgICBpZiAoIWJvdW5kc092ZXJsYXApCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZsb2F0IGxlZnRTaWRlVmFsdWVzWzRdID0gewor
ICAgICAgICBsZWZ0U2lkZSh2ZXJ0ZXgxKCksIHZlcnRleDIoKSwgcmVjdC5taW5YTWluWUNvcm5l
cigpKSwKKyAgICAgICAgbGVmdFNpZGUodmVydGV4MSgpLCB2ZXJ0ZXgyKCksIHJlY3QubWF4WE1p
bllDb3JuZXIoKSksCisgICAgICAgIGxlZnRTaWRlKHZlcnRleDEoKSwgdmVydGV4MigpLCByZWN0
Lm1pblhNYXhZQ29ybmVyKCkpLAorICAgICAgICBsZWZ0U2lkZSh2ZXJ0ZXgxKCksIHZlcnRleDIo
KSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKQorICAgIH07CisKKyAgICBpbnQgcyA9IDA7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAgICBpZiAoIWxlZnRTaWRl
VmFsdWVzW2ldKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGludCBzZ24gPSBsZWZ0
U2lkZVZhbHVlc1tpXSA+IDAgPyAxIDogLTE7CisgICAgICAgIGlmICghcykKKyAgICAgICAgICAg
IHMgPSBzZ247CisgICAgICAgIGVsc2UgaWYgKHMgIT0gc2duKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFZlcnRleFBhaXI6
OmludGVyc2VjdGlvbihjb25zdCBWZXJ0ZXhQYWlyJiBvdGhlciwgRmxvYXRQb2ludCYgcG9pbnQp
IGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIHRlbXBvcmFyeSBzdHViLCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNDI5CisgICAgLy8gU2Vl
OiBodHRwOi8vcGF1bGJvdXJrZS5uZXQvZ2VvbWV0cnkvcG9pbnRsaW5lcGxhbmUvCisKKyAgICBj
b25zdCBGbG9hdFNpemUmIHRoaXNEZWx0YSA9IHZlcnRleDIoKSAtIHZlcnRleDEoKTsKKyAgICBj
b25zdCBGbG9hdFNpemUmIG90aGVyRGVsdGEgPSBvdGhlci52ZXJ0ZXgyKCkgLSBvdGhlci52ZXJ0
ZXgxKCk7CisgICAgZmxvYXQgZGVuID0gZGV0ZXJtaW5hbnQodGhpc0RlbHRhLCBvdGhlckRlbHRh
KTsKKyAgICBpZiAoIWRlbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgRmxv
YXRTaXplJiB2ZXJ0ZXgxRGVsdGEgPSB2ZXJ0ZXgxKCkgLSBvdGhlci52ZXJ0ZXgxKCk7CisgICAg
ZmxvYXQgdWEgPSBkZXRlcm1pbmFudChvdGhlckRlbHRhLCB2ZXJ0ZXgxRGVsdGEpIC8gZGVuOwor
ICAgIGZsb2F0IHViID0gZGV0ZXJtaW5hbnQodGhpc0RlbHRhLCB2ZXJ0ZXgxRGVsdGEpIC8gZGVu
OwogCisgICAgaWYgKHVhIDwgMCB8fCB1YiA8IDAgfHwgdWEgPiAxIHx8IHViID4gMSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcG9pbnQgPSB2ZXJ0ZXgxKCkgKyB1YSAqIHRoaXNEZWx0
YTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBFeGNsdXNpb25Qb2x5Z29uOjpmaXJzdEZp
dFJlY3RJblBvbHlnb24oY29uc3QgRmxvYXRSZWN0JiByZWN0LCB1bnNpZ25lZCBvZmZzZXRFZGdl
SW5kZXgxLCB1bnNpZ25lZCBvZmZzZXRFZGdlSW5kZXgyKSBjb25zdAoreworICAgIFZlY3RvcjxF
eGNsdXNpb25Qb2x5Z29uOjpFZGdlSW50ZXJ2YWw+IG92ZXJsYXBwaW5nRWRnZXM7CisgICAgbV9l
ZGdlVHJlZS5hbGxPdmVybGFwcyhFeGNsdXNpb25Qb2x5Z29uOjpFZGdlSW50ZXJ2YWwocmVjdC55
KCksIHJlY3QubWF4WSgpLCAwKSwgb3ZlcmxhcHBpbmdFZGdlcyk7CisKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmdFZGdlcy5zaXplKCk7IGkrKykgeworICAgICAgICBj
b25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSogZWRnZSA9IHN0YXRpY19jYXN0PEV4Y2x1c2lvblBv
bHlnb25FZGdlKj4ob3ZlcmxhcHBpbmdFZGdlc1tpXS5kYXRhKCkpOworICAgICAgICBpZiAoZWRn
ZS0+ZWRnZUluZGV4KCkgIT0gb2Zmc2V0RWRnZUluZGV4MSAmJiBlZGdlLT5lZGdlSW5kZXgoKSAh
PSBvZmZzZXRFZGdlSW5kZXgyICYmIGVkZ2UtPm92ZXJsYXBzUmVjdChyZWN0KSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj
IGlubGluZSBib29sIGFib3ZlT3JUb1RoZUxlZnQoY29uc3QgRmxvYXRSZWN0JiByMSwgY29uc3Qg
RmxvYXRSZWN0JiByMikKK3sKKyAgICBpZiAocjEueSgpIDwgcjIueSgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAocjEueSgpID09IHIyLnkoKSkKKyAgICAgICAgcmV0dXJuIHIxLngo
KSA8IHIyLngoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRXhjbHVzaW9uUG9seWdv
bjo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChmbG9hdCBtaW5Mb2dpY2FsSW50ZXJ2
YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgbWluTG9naWNhbEludGVydmFsU2l6ZSwgZmxvYXQmIHJl
c3VsdCkgY29uc3QKK3sKICAgICBpZiAobWluTG9naWNhbEludGVydmFsU2l6ZS53aWR0aCgpID4g
bV9ib3VuZGluZ0JveC53aWR0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmbG9h
dCBtaW5ZID0gc3RkOjptYXgobV9ib3VuZGluZ0JveC55KCksIG1pbkxvZ2ljYWxJbnRlcnZhbFRv
cCk7CiAgICAgZmxvYXQgbWF4WSA9IG1pblkgKyBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhlaWdo
dCgpOwotICAgIGlmIChtaW5ZIDwgbV9ib3VuZGluZ0JveC55KCkgfHwgbWF4WSA+IG1fYm91bmRp
bmdCb3gubWF4WSgpKQorCisgICAgaWYgKG1heFkgPiBtX2JvdW5kaW5nQm94Lm1heFkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmVzdWx0ID0gbWluTG9naWNhbEludGVydmFsVG9w
OwotICAgIHJldHVybiB0cnVlOworICAgIGZsb2F0IGR4ID0gbWluTG9naWNhbEludGVydmFsU2l6
ZS53aWR0aCgpIC8gMjsKKyAgICBmbG9hdCBkeSA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVp
Z2h0KCkgLyAyOworICAgIFZlY3RvcjxPZmZzZXRQb2x5Z29uRWRnZT4gb2Zmc2V0RWRnZXM7CisK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZFZGdlcygpOyBpKyspIHsKKyAg
ICAgICAgY29uc3QgRXhjbHVzaW9uUG9seWdvbkVkZ2UmIGVkZ2UgPSBlZGdlQXQoaSk7CisgICAg
ICAgIGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleDEgPSBlZGdlLnZlcnRleDEoKTsKKyAgICAgICAg
Y29uc3QgRmxvYXRQb2ludCYgdmVydGV4MiA9IGVkZ2UudmVydGV4MigpOworICAgICAgICBWZWN0
b3I8T2Zmc2V0UG9seWdvbkVkZ2U+IG9mZnNldEVkZ2VQYWlyOworCisgICAgICAgIGlmICh2ZXJ0
ZXgyLnkoKSA+IHZlcnRleDEueSgpID8gdmVydGV4Mi54KCkgPj0gdmVydGV4MS54KCkgOiB2ZXJ0
ZXgxLngoKSA+PSB2ZXJ0ZXgyLngoKSkgeworICAgICAgICAgICAgb2Zmc2V0RWRnZVBhaXIuYXBw
ZW5kKE9mZnNldFBvbHlnb25FZGdlKGVkZ2UsIEZsb2F0U2l6ZShkeCwgLWR5KSkpOworICAgICAg
ICAgICAgb2Zmc2V0RWRnZVBhaXIuYXBwZW5kKE9mZnNldFBvbHlnb25FZGdlKGVkZ2UsIEZsb2F0
U2l6ZSgtZHgsIGR5KSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgb2Zmc2V0RWRn
ZVBhaXIuYXBwZW5kKE9mZnNldFBvbHlnb25FZGdlKGVkZ2UsIEZsb2F0U2l6ZShkeCwgZHkpKSk7
CisgICAgICAgICAgICBvZmZzZXRFZGdlUGFpci5hcHBlbmQoT2Zmc2V0UG9seWdvbkVkZ2UoZWRn
ZSwgRmxvYXRTaXplKC1keCwgLWR5KSkpOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gMDsgaiA8IG9mZnNldEVkZ2VQYWlyLnNpemUoKTsgaisrKQorICAgICAgICAgICAg
aWYgKG9mZnNldEVkZ2VQYWlyW2pdLm1heFkoKSA+PSBtaW5ZKQorICAgICAgICAgICAgICAgIG9m
ZnNldEVkZ2VzLmFwcGVuZChvZmZzZXRFZGdlUGFpcltqXSk7CisgICAgfQorCisgICAgb2Zmc2V0
RWRnZXMuYXBwZW5kKE9mZnNldFBvbHlnb25FZGdlKCp0aGlzLCBtaW5Mb2dpY2FsSW50ZXJ2YWxU
b3AsIEZsb2F0U2l6ZSgwLCBkeSkpKTsKKworICAgIEZsb2F0UG9pbnQgb2Zmc2V0RWRnZXNJbnRl
cnNlY3Rpb247CisgICAgRmxvYXRSZWN0IGZpcnN0Rml0UmVjdDsKKyAgICBib29sIGZpcnN0Rml0
Rm91bmQgPSBmYWxzZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvZmZzZXRFZGdl
cy5zaXplKCkgLSAxOyBpKyspIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gaSArIDE7IGog
PCBvZmZzZXRFZGdlcy5zaXplKCk7IGorKykgeworICAgICAgICAgICAgaWYgKG9mZnNldEVkZ2Vz
W2ldLmludGVyc2VjdGlvbihvZmZzZXRFZGdlc1tqXSwgb2Zmc2V0RWRnZXNJbnRlcnNlY3Rpb24p
KSB7CisgICAgICAgICAgICAgICAgRmxvYXRQb2ludCBwb3RlbnRpYWxGaXJzdEZpdExvY2F0aW9u
KG9mZnNldEVkZ2VzSW50ZXJzZWN0aW9uLngoKSAtIGR4LCBvZmZzZXRFZGdlc0ludGVyc2VjdGlv
bi55KCkgLSBkeSk7CisgICAgICAgICAgICAgICAgRmxvYXRSZWN0IHBvdGVudGlhbEZpcnN0Rml0
UmVjdChwb3RlbnRpYWxGaXJzdEZpdExvY2F0aW9uLCBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplKTsK
KyAgICAgICAgICAgICAgICBpZiAoKHBvdGVudGlhbEZpcnN0Rml0TG9jYXRpb24ueSgpID49IG1p
bkxvZ2ljYWxJbnRlcnZhbFRvcCkKKyAgICAgICAgICAgICAgICAgICAgJiYgKCFmaXJzdEZpdEZv
dW5kIHx8IGFib3ZlT3JUb1RoZUxlZnQocG90ZW50aWFsRmlyc3RGaXRSZWN0LCBmaXJzdEZpdFJl
Y3QpKQorICAgICAgICAgICAgICAgICAgICAmJiBjb250YWlucyhvZmZzZXRFZGdlc0ludGVyc2Vj
dGlvbikKKyAgICAgICAgICAgICAgICAgICAgJiYgZmlyc3RGaXRSZWN0SW5Qb2x5Z29uKHBvdGVu
dGlhbEZpcnN0Rml0UmVjdCwgb2Zmc2V0RWRnZXNbaV0uZWRnZUluZGV4KCksIG9mZnNldEVkZ2Vz
W2pdLmVkZ2VJbmRleCgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXJzdEZpdEZvdW5kID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZmlyc3RGaXRSZWN0ID0gcG90ZW50aWFsRmlyc3RG
aXRSZWN0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChmaXJzdEZpdEZvdW5kKQorICAgICAgICByZXN1bHQgPSBmaXJzdEZpdFJl
Y3QueSgpOworICAgIHJldHVybiBmaXJzdEZpdEZvdW5kOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9s
eWdvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaAppbmRl
eCBjOTczYzM1Li41MzNlNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RXhjbHVzaW9uUG9seWdvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNp
b25Qb2x5Z29uLmgKQEAgLTYyLDYgKzYyLDggQEAgcHVibGljOgogICAgIGNvbnN0IEV4Y2x1c2lv
blBvbHlnb25FZGdlJiBlZGdlQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fZWRn
ZXNbaW5kZXhdOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZFZGdlcygpIGNvbnN0IHsgcmV0dXJu
IG1fZWRnZXMuc2l6ZSgpOyB9CiAKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQm
KSBjb25zdDsKKwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHNoYXBlTG9naWNhbEJvdW5kaW5nQm94
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ib3VuZGluZ0JveDsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9lbXB0eTsgfQogICAgIHZp
cnR1YWwgdm9pZCBnZXRFeGNsdWRlZEludGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBs
b2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0IE9WRVJSSURFOwpAQCAtNzIsNiArNzQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZVhJbnRlcnNlY3Rpb25zKGZsb2F0IHksIGJv
b2wgaXNNaW5ZLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JikgY29uc3Q7CiAgICAgdm9pZCBj
b21wdXRlRWRnZUludGVyc2VjdGlvbnMoZmxvYXQgbWluWSwgZmxvYXQgbWF4WSwgVmVjdG9yPEV4
Y2x1c2lvbkludGVydmFsPiYpIGNvbnN0OwogICAgIHVuc2lnbmVkIGZpbmROZXh0RWRnZVZlcnRl
eEluZGV4KHVuc2lnbmVkIHZlcnRleEluZGV4MSwgYm9vbCBjbG9ja3dpc2UpIGNvbnN0OworICAg
IGJvb2wgZmlyc3RGaXRSZWN0SW5Qb2x5Z29uKGNvbnN0IEZsb2F0UmVjdCYsIHVuc2lnbmVkIG9m
ZnNldEVkZ2VJbmRleDEsIHVuc2lnbmVkIG9mZnNldEVkZ2VJbmRleCkgY29uc3Q7CiAKICAgICB0
eXBlZGVmIFBPREludGVydmFsPGZsb2F0LCBFeGNsdXNpb25Qb2x5Z29uRWRnZSo+IEVkZ2VJbnRl
cnZhbDsKICAgICB0eXBlZGVmIFBPREludGVydmFsVHJlZTxmbG9hdCwgRXhjbHVzaW9uUG9seWdv
bkVkZ2UqPiBFZGdlSW50ZXJ2YWxUcmVlOwpAQCAtOTUsNiArOTgsOSBAQCBwdWJsaWM6CiAgICAg
ZmxvYXQgbWluWSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWluKHZlcnRleDEoKS55KCksIHZlcnRl
eDIoKS55KCkpOyB9CiAgICAgZmxvYXQgbWF4WCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4KHZl
cnRleDEoKS54KCksIHZlcnRleDIoKS54KCkpOyB9CiAgICAgZmxvYXQgbWF4WSgpIGNvbnN0IHsg
cmV0dXJuIHN0ZDo6bWF4KHZlcnRleDEoKS55KCksIHZlcnRleDIoKS55KCkpOyB9CisKKyAgICBi
b29sIG92ZXJsYXBzUmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBib29sIGludGVy
c2VjdGlvbihjb25zdCBWZXJ0ZXhQYWlyJiwgRmxvYXRQb2ludCYpIGNvbnN0OwogfTsKIAogLy8g
RWRnZUludGVydmFsVHJlZSBub2RlcyBzdG9yZSBtaW5ZLCBtYXhZLCBhbmQgYSAoIlVzZXJEYXRh
IikgcG9pbnRlciB0byBhbiBFeGNsdXNpb25Qb2x5Z29uRWRnZS4gRWRnZSB2ZXJ0ZXgKQEAgLTE1
MCw2ICsxNTYsMzIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmFsdWVUb1N0cmluZzxFeGNsdXNpb25Q
b2x5Z29uRWRnZSo+IHsKIH07CiAjZW5kaWYKIAorY2xhc3MgT2Zmc2V0UG9seWdvbkVkZ2UgOiBw
dWJsaWMgVmVydGV4UGFpciB7CitwdWJsaWM6CisgICAgT2Zmc2V0UG9seWdvbkVkZ2UoY29uc3Qg
RXhjbHVzaW9uUG9seWdvbkVkZ2UmIGVkZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQorICAg
ICAgICA6IG1fdmVydGV4MShlZGdlLnZlcnRleDEoKSArIG9mZnNldCkKKyAgICAgICAgLCBtX3Zl
cnRleDIoZWRnZS52ZXJ0ZXgyKCkgKyBvZmZzZXQpCisgICAgICAgICwgbV9lZGdlSW5kZXgoZWRn
ZS5lZGdlSW5kZXgoKSkKKyAgICB7CisgICAgfQorCisgICAgT2Zmc2V0UG9seWdvbkVkZ2UoY29u
c3QgRXhjbHVzaW9uUG9seWdvbiYgcG9seWdvbiwgZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9w
LCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCkKKyAgICAgICAgOiBtX3ZlcnRleDEoRmxvYXRQb2lu
dChwb2x5Z29uLnNoYXBlTG9naWNhbEJvdW5kaW5nQm94KCkueCgpLCBtaW5Mb2dpY2FsSW50ZXJ2
YWxUb3ApICsgb2Zmc2V0KQorICAgICAgICAsIG1fdmVydGV4MihGbG9hdFBvaW50KHBvbHlnb24u
c2hhcGVMb2dpY2FsQm91bmRpbmdCb3goKS5tYXhYKCksIG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCkg
KyBvZmZzZXQpCisgICAgICAgICwgbV9lZGdlSW5kZXgocG9seWdvbi5udW1iZXJPZkVkZ2VzKCkp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdmVydGV4MTsgfQorICAgIHZpcnR1YWwgY29uc3Qg
RmxvYXRQb2ludCYgdmVydGV4MigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdmVydGV4Mjsg
fQorICAgIHVuc2lnbmVkIGVkZ2VJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZUluZGV4OyB9
CisKK3ByaXZhdGU6CisgICAgRmxvYXRQb2ludCBtX3ZlcnRleDE7CisgICAgRmxvYXRQb2ludCBt
X3ZlcnRleDI7CisgICAgdW5zaWduZWQgbV9lZGdlSW5kZXg7Cit9OworCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFeGNsdXNpb25Qb2x5Z29uX2gK
</data>
<flag name="review"
          id="202784"
          type_id="1"
          status="-"
          setter="krit"
    />
    <flag name="commit-queue"
          id="202785"
          type_id="3"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184277</attachid>
            <date>2013-01-23 12:11:08 -0800</date>
            <delta_ts>2013-01-23 13:51:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>27929</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMDMxMTJjLi5iMTlmNGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDEt
MjIgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIGZpcnN0IGluY2x1ZGVkIGludGVydmFs
IHBvc2l0aW9uIGZvciBwb2x5Z29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAzNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsIG9mIHRoZSBleGlzdGluZyBzaGFwZS1pbnNpZGUgdGVzdHMgZXhl
cmNpc2UgdGhlIG5ldyBjb2RlLiAgQWRkZWQgbmV3IHRlc3RzIHdoaWNoCisgICAgICAgIHZlcmlm
eSB0aGF0IGxheW91dCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBsYXlvdXQgY2FuIG5vdCBiZWdpbiBh
dCB0aGUgc2hhcGUncyBsb2dpY2FsIHRvcC4KKyAgICAgICAgVGVzdCAwMDEgYWRkaXRpb25hbGx5
IGNoZWNrcyBhbGwgd3JpdGluZy1tb2RlcywgdGVzdCAwMDIgdmVyaWZpZXMgdGhhdCB0aGUgdG9w
bW9zdC9sZWZ0bW9zdAorICAgICAgICBydWxlIGlzIGZvbGxvd2VkLCBhbmQgdGVzdDMgY2hlY2tz
IGEgc2VsZi1pbnRlcnNlY3RpbmcgcG9seWdvbi4KKworICAgICAgICAqIGZhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtZmlyc3QtZml0LTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAyLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LWZpcnN0LWZpdC0wMDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMy1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1m
aXJzdC1maXQtMDAzLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTIyICBUb255IENoYW5nICA8dG9u
eUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0MDE3
MS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEtZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzQ2ODAzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNTIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAuc2hhcGUt
aW5zaWRlIHsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3aWR0aDogMjAw
cHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIGZvbnQ6IDUwcHgvMSBBaGVtLCBz
YW5zLXNlcmlmOworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgfQorCisgICAgLmJsdWUgewor
ICAgICAgICBjb2xvcjogYmx1ZTsKKyAgICAgfQorCisgICAgLnNoYXBlLW91dGxpbmUgeworICAg
ICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMHB4OworICAgICAgICBsZWZ0
OiAwcHg7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAg
ICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGhlIHNvbGlkIGdyZWVuIGFu
ZCBibHVlIHJlY3RhbmdsZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBieSB0aGUgYmx1ZSB0cmlhbmds
ZSBvdXRsaW5lcy48L3A+CisgICAgPGRpdiBjbGFzcz0ic2hhcGUtaW5zaWRlIj4KKyAgICAgICAg
PHN2ZyBjbGFzcz0ic2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIj4KKyAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDIwMCwyMDAgMCwyMDAiIHN0
cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIvPgorICAgICAgICA8L3N2Zz4KKyAgICAgICAgPGJyLz5Y
PGJyLz48c3BhbiBjbGFzcz0iYmx1ZSI+WFg8L3NwYW4+PGJyLz5YWFgKKyAgICA8L2Rpdj4KKyAg
ICA8cD5Xcml0aW5nLW1vZGUgaXMgaG9yaXpvbnRhbC10YjwvcD4KKworICAgIDxkaXYgY2xhc3M9
InNoYXBlLWluc2lkZSIgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybCI+
CisgICAgICAgIDxzdmcgY2xhc3M9InNoYXBlLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAyMDAsMjAw
IDAsMjAwIiBzdHJva2U9ImJsdWUiIGZpbGw9Im5vbmUiLz4KKyAgICAgICAgPC9zdmc+CisgICAg
ICAgIDwvYnIvPiZuYnNwOyZuYnNwOyZuYnNwO1g8YnIvPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNz
PSJibHVlIj5YWDwvc3Bhbj48YnIvPiZuYnNwO1hYWAorICAgIDwvZGl2PgorICAgIDxwPldyaXRp
bmctbW9kZSBpcyB2ZXJ0aWNhbC1ybC48L3A+CisKKyAgICA8ZGl2IGNsYXNzPSJzaGFwZS1pbnNp
ZGUiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtbHIiPgorICAgICAgICA8
c3ZnIGNsYXNzPSJzaGFwZS1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciPgorICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIwLDAgMjAwLDIwMCAwLDIwMCIgc3Ry
b2tlPSJibHVlIiBmaWxsPSJub25lIi8+CisgICAgICAgIDwvc3ZnPgorICAgICAgICAmbmJzcDtY
WFg8YnIvPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJibHVlIj5YWDwvc3Bhbj48YnIvPiZuYnNw
OyZuYnNwOyZuYnNwO1gKKyAgICA8L2Rpdj4KKyAgICA8cD5Xcml0aW5nLW1vZGUgaXMgdmVydGlj
YWwtbHIuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
Zmlyc3QtZml0LTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2
OTZmYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAxLmh0bWwKQEAgLTAsMCArMSw1NyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NF
eGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAgIC5zaGFwZS1p
bnNpZGUgeworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIHdpZHRoOiAyMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1pbnNpZGU6
IHBvbHlnb24oMHB4IDBweCwgMjAwcHggMjAwcHgsIDBweCAyMDBweCk7CisgICAgICAgIGZvbnQ6
IDUwcHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgfQor
CisgICAgLmJsdWUgeworICAgICAgICBjb2xvcjogYmx1ZTsKKyAgICAgfQorCisgICAgLnNoYXBl
LW91dGxpbmUgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMHB4
OworICAgICAgICBsZWZ0OiAwcHg7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAyMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGhl
IHNvbGlkIGdyZWVuIGFuZCBibHVlIHJlY3RhbmdsZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBieSB0
aGUgYmx1ZSB0cmlhbmdsZSBvdXRsaW5lcy48L3A+CisgICAgPGRpdiBjbGFzcz0ic2hhcGUtaW5z
aWRlIj4KKyAgICAgICAgPHN2ZyBjbGFzcz0ic2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDIw
MCwyMDAgMCwyMDAiIHN0cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIvPgorICAgICAgICA8L3N2Zz4K
KyAgICAgICAgWCA8c3BhbiBjbGFzcz0iYmx1ZSI+WFg8L3NwYW4+IFhYWAorICAgIDwvZGl2Pgor
ICAgIDxwPldyaXRpbmctbW9kZSBpcyBob3Jpem9udGFsLXRiPC9wPgorCisgICAgPGRpdiBjbGFz
cz0ic2hhcGUtaW5zaWRlIiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJs
Ij4KKyAgICAgICAgPHN2ZyBjbGFzcz0ic2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDIwMCwy
MDAgMCwyMDAiIHN0cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIvPgorICAgICAgICA8L3N2Zz4KKyAg
ICAgICAgWCA8c3BhbiBjbGFzcz0iYmx1ZSI+WFg8L3NwYW4+IFhYWAorICAgIDwvZGl2PgorICAg
IDxwPldyaXRpbmctbW9kZSBpcyB2ZXJ0aWNhbC1ybC48L3A+CisKKyAgICA8ZGl2IGNsYXNzPSJz
aGFwZS1pbnNpZGUiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtbHIiPgor
ICAgICAgICA8c3ZnIGNsYXNzPSJzaGFwZS1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciPgorICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIwLDAgMjAwLDIwMCAw
LDIwMCIgc3Ryb2tlPSJibHVlIiBmaWxsPSJub25lIi8+CisgICAgICAgIDwvc3ZnPgorICAgICAg
ICBYWFggPHNwYW4gY2xhc3M9ImJsdWUiPlhYPC9zcGFuPiBYCisgICAgPC9kaXY+CisgICAgPHA+
V3JpdGluZy1tb2RlIGlzIHZlcnRpY2FsLWxyLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLWZpcnN0LWZpdC0wMDItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDItZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGYyYTU1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtZmlyc3QtZml0LTAwMi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAjc2hhcGUtaW5zaWRlIHsK
KyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIH0KKworICAgICNzaGFwZS1vdXRsaW5l
IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsKKyAgICAg
ICAgbGVmdDogMHB4OworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgfQorCisgICAgI3NoYXBlLWNvbnRlbnRzIHsKKyAgICAgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgICAgICB0b3A6IDBweDsKKyAgICAgICAgbGVmdDogMHB4OworICAgICAgICBm
b250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAg
IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD5UaGUgc29saWQgZ3JlZW4gcmVj
dGFuZ2xlcyBzaG91bGQgYmUgY29udGFpbmVkIGJ5IHRoZSBibHVlIG91dGxpbmUuPC9wPgorICAg
IDxkaXYgaWQ9InNoYXBlLWluc2lkZSI+CisgICAgICAgIDxwcmUgaWQ9InNoYXBlLWNvbnRlbnRz
Ij4KK1ggICAgWAorWFggIFhYCitYWFhYWFggIDwvcHJlPgorICAgICAgICA8c3ZnIGlkPSJzaGFw
ZS1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAg
ICAgPHBvbHlnb24gcG9pbnRzPSIwLDAgMTUwLDE1MCAzMDAsMCAzMDAsMjAwIDAsMjAwIiBzdHJv
a2U9ImJsdWUiIGZpbGw9Im5vbmUiLz4KKyAgICAgICAgPC9zdmc+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1maXJzdC1maXQtMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBiZjZjOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0
LWZpdC0wMDIuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOworPC9z
Y3JpcHQ+Cis8c3R5bGU+CisgICAgI3NoYXBlLWluc2lkZSB7CisgICAgICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4Owor
ICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogcG9seWdvbigwcHggMHB4LCAxNTBweCAxNTBw
eCwgMzAwcHggMHB4LCAzMDBweCAyMDBweCwgMHB4IDIwMHB4KTsKKyAgICAgICAgZm9udDogNTBw
eC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9CisKKyAg
ICAjc2hhcGUtb3V0bGluZSB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAg
dG9wOiAwcHg7CisgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
ICA8cD5UaGUgc29saWQgZ3JlZW4gcmVjdGFuZ2xlcyBzaG91bGQgYmUgY29udGFpbmVkIGJ5IHRo
ZSBibHVlIG91dGxpbmUuPC9wPgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZSI+CisgICAgICAg
IDxzdmcgaWQ9InNoYXBlLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyI+CisgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAxNTAsMTUwIDMwMCwwIDMwMCwy
MDAgMCwyMDAiIHN0cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIvPgorICAgICAgICA8L3N2Zz4KKyAg
ICAgICAgWCBYIFhYIFhYIFhYWFhYWAorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtZmlyc3QtZml0LTAwMy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMy1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkYTMwMzAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1maXJzdC1maXQtMDAzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNzaGFwZS1pbnNpZGUg
eworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgfQorCisgICAgI3NoYXBlLW91dGxp
bmUgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMHB4OworICAg
ICAgICBsZWZ0OiAwcHg7CisgICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiAy
MDBweDsKKyAgICB9CisgICAgCisgICAgI3NoYXBlLWNvbnRlbnRzIHsKKyAgICAgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsKKyAgICAgICAgbGVmdDogMHB4OworICAg
ICAgICBmb250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVu
OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD5UaGUgc29saWQgZ3Jl
ZW4gcmVjdGFuZ2xlcyBzaG91bGQgYmUgY29udGFpbmVkIGJ5IHRoZSBibHVlIG91dGxpbmUuPC9w
PgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZSI+CisgICAgICAgIDxwcmUgaWQ9InNoYXBlLWNv
bnRlbnRzIj4KK1ggICAgICBYCisgICBYWCAgIDwvcHJlPgorICAgICAgICA8c3ZnIGlkPSJzaGFw
ZS1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAg
ICAgPHBvbHlnb24gcG9pbnRzPSIwLDAgMjAwLDIwMCA0MDAsMCA0MDAsMTAwIDAsMTAwIiBzdHJv
a2U9ImJsdWUiIGZpbGw9Im5vbmUiLz4KKyAgICAgICAgPC9zdmc+CisgICAgPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAzLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkzNjBiNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUt
aW5zaWRlLWZpcnN0LWZpdC0wMDMuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVk
KHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgI3NoYXBlLWluc2lkZSB7CisgICAgICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgd2lkdGg6IDQwMHB4OworICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogcG9seWdvbigwcHggMHB4
LCAyMDBweCAyMDBweCwgNDAwcHggMHB4LCA0MDBweCAxMDBweCwgMHB4IDEwMHB4KTsKKyAgICAg
ICAgZm9udDogNTBweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsK
KyAgICB9CisKKyAgICAjc2hhcGUtb3V0bGluZSB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICAgICAgdG9wOiAwcHg7CisgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgICAgd2lkdGg6
IDQwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8cD5UaGUgc29saWQgZ3JlZW4gcmVjdGFuZ2xlcyBzaG91bGQgYmUgY29u
dGFpbmVkIGJ5IHRoZSBibHVlIG91dGxpbmUuPC9wPgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lk
ZSI+CisgICAgICAgIDxzdmcgaWQ9InNoYXBlLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAyMDAsMjAw
IDQwMCwwIDQwMCwxMDAgMCwxMDAiIHN0cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIvPgorICAgICAg
ICA8L3N2Zz4KKyAgICAgICAgWCBYIFhYCisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZGE2NWQ3ZC4uYzA0ZDY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBA
CisyMDEzLTAxLTIyICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAg
IFtDU1MgRXhjbHVzaW9uc10gQWRkIHN1cHBvcnQgZm9yIGNvbXB1dGluZyBmaXJzdCBpbmNsdWRl
ZCBpbnRlcnZhbCBwb3NpdGlvbiBmb3IgcG9seWdvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGNvbXB1dGluZyB0aGUg
ImZpcnN0IGZpdCIgbG9jYXRpb24sIGkuZS4gdGhlIGxvZ2ljYWwgc2hhcGUtaW5zaWRlCisgICAg
ICAgIGxvY2F0aW9uIHdoZXJlIGEgbGluZSdzIGxheW91dCBiZWdpbnMuIFRoZSBhbGdvcml0aG0g
Zm9yIGRvaW5nIHNvIGlzIGRlc2NyaWJlZCBoZXJlOgorICAgICAgICBodHRwOi8vaGFuc211bGxl
ci13ZWJraXQuYmxvZ3Nwb3QuY29tLzIwMTIvMDgvcmV2aXNlZC1hbGdvcml0aG0tZm9yLWZpbmRp
bmctZmlyc3QuaHRtbC4KKworICAgICAgICBUZXN0czogZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMS5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAyLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LWZpcnN0LWZpdC0wMDMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciopOiBTY2FsZSBhIEZsb2F0U2l6ZS4g
VGhpcyBzaW1wbGlmaWVkIHRoZSBmaW5hbCBleHByZXNzaW9uIGluIFZlcnRleFBhaXI6OmludGVy
c2VjdGlvbigpLgorICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzUG9pbnRPbkxpbmVTZWdtZW50KTogUmV0dXJucyB0cnVlIGlmIHRo
ZSBzcGVjaWZpZWQgcG9pbnQgaXMgY29sbGluZWFyIGFuZCB3aXRoaW4gdGhlIGxpbmUgc2VnZW1l
bnQncyBib3VuZHMuCisgICAgICAgIChXZWJDb3JlOjpsZWZ0U2lkZSk6IFJldHVybiBhIHZhbHVl
ID4gMCBpZiBwb2ludCBpcyBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBsaW5lIHNlZ21lbnQsIDwg
MCBpZiBpdCdzIG9uIHRoZSByaWdodCwgMCBpZiBpdCdzIGNvbGxpbmVhci4KKyAgICAgICAgKFdl
YkNvcmU6OkV4Y2x1c2lvblBvbHlnb246OmNvbnRhaW5zKTogUmV0dXJuIHRydWUgaWYgdGhlIHBv
aW50IGlzIHdpdGhpbiB0aGUgcG9seWdvbiBvciBvbiBhbiBlZGdlLgorICAgICAgICAoV2ViQ29y
ZTo6VmVydGV4UGFpcjo6b3ZlcmxhcHNSZWN0KTogUmV0dXJucyB0cnVlIGlmIHRoZSBsaW5lIHNl
Z21lbnQgZnJvbSB2ZXJ0ZXgxIHRvIHZlcnRleDIgb3ZlcmxhcHMgdGhlIHNwZWNpZmllZCBGbG9h
dFJlY3QuCisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhQYWlyOjppbnRlcnNlY3Rpb24pOiBGaW5k
cyB0aGUgaW50ZXJzZWN0aW9uIG9mIGEgcGFpciBvZiBsaW5lIHNlZ21lbnRzIGRlZmluZWQgYnkg
VmVydGV4UGFpcnMuCisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5Z29uOjpmaXJzdEZp
dFJlY3RJblBvbHlnb24pOiBSZXR1cm5zIHRydWUgaWYgbm9uZSBvZiB0aGUgcG9seWdvbidzIGVk
Z2VzLCBleGNlcHQgdGhlIHR3byB1c2VkCisgICAgICAgICAgICB0byBkZWZpbmUgYnkgdGhlIG9m
ZnNldCBlZGdlcywgb3ZlcmxhcCB0aGUgRmxvYXRSZWN0LgorICAgICAgICAoV2ViQ29yZTo6YWJv
dmVPclRvVGhlTGVmdCk6IERlZmluZXMgdGhlIHRvcC9sZWZ0IHByZWZlcmVuY2UgZm9yICJmaXJz
dCBmaXQiIGxvY2F0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblBvbHlnb246OmZp
cnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3ApOiBSZXBsYWNlZCB0aGUgc3R1YiBpbXBsZW1l
bnRhdGlvbiBvZiB0aGlzIG1ldGhvZC4KKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uUG9s
eWdvbi5oOgorICAgICAgICAoRXhjbHVzaW9uUG9seWdvbik6IEFkZGVkIGRlY2xhcmF0aW9ucyBu
b3RlZCBhYm92ZS4KKyAgICAgICAgKFZlcnRleFBhaXIpOiBBYnN0cmFjdCBjbGFzcyB0aGF0IGRl
ZmluZXMgYSBwYWlyIG9mIEZsb2F0UG9pbnRzLgorICAgICAgICAoT2Zmc2V0UG9seWdvbkVkZ2Up
OiBSZXByZXNlbnRzIGFuIGVkZ2UgdGhhdCdzIGhvcml6b250YWxseSBvZmZzZXQgZnJvbSBhIHBv
bHlnb24gZWRnZS4KKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNldFBvbHlnb25FZGdlOjplZGdlSW5k
ZXgpOiBUaGUgRXhjbHVzaW9uUG9seWdvbiBlZGdlIGluZGV4IHVzZWQgdG8gZGVmaW5lIHRoaXMg
T2Zmc2V0RWRnZS4KKwogMjAxMy0wMS0yMiAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEZpeCBhc3NlcnRpb25zIGluIG1ha2U4Qml0RnJvbTE2Qml0U291
cmNlKCkgd2l0aCB0aHJlYWRlZCBwYXJzZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRTaXplLmgKaW5kZXggMmNhMjJjZC4uNjAxMDIxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKQEAgLTE3NSw2ICsxNzUsMTYgQEAg
aW5saW5lIEZsb2F0U2l6ZSBvcGVyYXRvci0oY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIHJl
dHVybiBGbG9hdFNpemUoLXNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpOwogfQogCitpbmxp
bmUgRmxvYXRTaXplIG9wZXJhdG9yKihjb25zdCBGbG9hdFNpemUmIGEsIGNvbnN0IGZsb2F0IGIp
Cit7CisgICAgcmV0dXJuIEZsb2F0U2l6ZShhLndpZHRoKCkgKiBiLCBhLmhlaWdodCgpICogYik7
Cit9CisKK2lubGluZSBGbG9hdFNpemUgb3BlcmF0b3IqKGNvbnN0IGZsb2F0IGEsIGNvbnN0IEZs
b2F0U2l6ZSYgYikKK3sKKyAgICByZXR1cm4gRmxvYXRTaXplKGEgKiBiLndpZHRoKCksIGEgKiBi
LmhlaWdodCgpKTsKK30KKwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFNpemUm
IGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKIHsKICAgICByZXR1cm4gYS53aWR0aCgpID09IGIud2lk
dGgoKSAmJiBhLmhlaWdodCgpID09IGIuaGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAKaW5kZXggYTUyMjMyZi4uZmI0MTVjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcApAQCAtNjIsNiAr
NjIsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGFyZUNvaW5jaWRlbnRQb2ludHMoY29uc3QgRmxv
YXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAKICAgICByZXR1cm4gcDAueCgpID09IHAx
LngoKSAmJiBwMC55KCkgPT0gcDEueSgpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNQb2lu
dE9uTGluZVNlZ21lbnQoY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSwgY29uc3QgRmxvYXRQb2lu
dCYgdmVydGV4MiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuIHBvaW50
LngoKSA+PSBzdGQ6Om1pbih2ZXJ0ZXgxLngoKSwgdmVydGV4Mi54KCkpCisgICAgICAgICYmIHBv
aW50LngoKSA8PSBzdGQ6Om1heCh2ZXJ0ZXgxLngoKSwgdmVydGV4Mi54KCkpCisgICAgICAgICYm
IGFyZUNvbGxpbmVhclBvaW50cyh2ZXJ0ZXgxLCB2ZXJ0ZXgyLCBwb2ludCk7Cit9CisKIHN0YXRp
YyBpbmxpbmUgdW5zaWduZWQgbmV4dFZlcnRleEluZGV4KHVuc2lnbmVkIHZlcnRleEluZGV4LCB1
bnNpZ25lZCBuVmVydGljZXMsIGJvb2wgY2xvY2t3aXNlKQogewogICAgIHJldHVybiAoKGNsb2Nr
d2lzZSkgPyB2ZXJ0ZXhJbmRleCArIDEgOiB2ZXJ0ZXhJbmRleCAtIDEgKyBuVmVydGljZXMpICUg
blZlcnRpY2VzOwpAQCAtMTE5LDcgKzEyNiw3IEBAIEV4Y2x1c2lvblBvbHlnb246OkV4Y2x1c2lv
blBvbHlnb24oUGFzc093blB0cjxWZWN0b3I8RmxvYXRQb2ludD4gPiB2ZXJ0aWNlcywgV2luCiAg
ICAgICAgIG1fZWRnZXNbZWRnZUluZGV4XS5tX3ZlcnRleEluZGV4MSA9IHZlcnRleEluZGV4MTsK
ICAgICAgICAgbV9lZGdlc1tlZGdlSW5kZXhdLm1fdmVydGV4SW5kZXgyID0gdmVydGV4SW5kZXgy
OwogICAgICAgICBtX2VkZ2VzW2VkZ2VJbmRleF0ubV9lZGdlSW5kZXggPSBlZGdlSW5kZXg7Ci0g
ICAgICAgIGVkZ2VJbmRleCsrOworICAgICAgICArK2VkZ2VJbmRleDsKICAgICAgICAgdmVydGV4
SW5kZXgxID0gdmVydGV4SW5kZXgyOwogICAgIH0gd2hpbGUgKHZlcnRleEluZGV4MSk7CiAKQEAg
LTEzOCw3ICsxNDUsNyBAQCBFeGNsdXNpb25Qb2x5Z29uOjpFeGNsdXNpb25Qb2x5Z29uKFBhc3NP
d25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+ID4gdmVydGljZXMsIFdpbgogICAgIGlmIChtX2VtcHR5
KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lZGdl
cy5zaXplKCk7IGkrKykgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VkZ2VzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIEV4Y2x1c2lvblBvbHlnb25FZGdlKiBlZGdlID0gJm1fZWRn
ZXNbaV07CiAgICAgICAgIG1fZWRnZVRyZWUuYWRkKEVkZ2VJbnRlcnZhbChlZGdlLT5taW5ZKCks
IGVkZ2UtPm1heFkoKSwgZWRnZSkpOwogICAgIH0KQEAgLTIyNiw3ICsyMzMsNyBAQCB2b2lkIEV4
Y2x1c2lvblBvbHlnb246OmNvbXB1dGVYSW50ZXJzZWN0aW9ucyhmbG9hdCB5LCBib29sIGlzTWlu
WSwgVmVjdG9yPEV4Y2x1cwogCiAgICAgVmVjdG9yPEVkZ2VJbnRlcnNlY3Rpb24+IGludGVyc2Vj
dGlvbnM7CiAgICAgRWRnZUludGVyc2VjdGlvbiBpbnRlcnNlY3Rpb247Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG92ZXJsYXBwaW5nRWRnZXMuc2l6ZSgpOyBpKyspIHsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmdFZGdlcy5zaXplKCk7ICsraSkgewogICAg
ICAgICBFeGNsdXNpb25Qb2x5Z29uRWRnZSogZWRnZSA9IHN0YXRpY19jYXN0PEV4Y2x1c2lvblBv
bHlnb25FZGdlKj4ob3ZlcmxhcHBpbmdFZGdlc1tpXS5kYXRhKCkpOwogICAgICAgICBpZiAoY29t
cHV0ZVhJbnRlcnNlY3Rpb24oZWRnZSwgeSwgaW50ZXJzZWN0aW9uKSAmJiBpbnRlcnNlY3Rpb24u
dHlwZSAhPSBWZXJ0ZXhZQm90aCkKICAgICAgICAgICAgIGludGVyc2VjdGlvbnMuYXBwZW5kKGlu
dGVyc2VjdGlvbik7CkBAIC0yNTAsNyArMjU3LDcgQEAgdm9pZCBFeGNsdXNpb25Qb2x5Z29uOjpj
b21wdXRlWEludGVyc2VjdGlvbnMoZmxvYXQgeSwgYm9vbCBpc01pblksIFZlY3RvcjxFeGNsdXMK
ICAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gMjsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHBhaXJzIG9mIGludGVyc2VjdGlvbnMg
d2hvc2UgdHlwZXMgYXJlIFZlcnRleE1pblksVmVydGV4TWF4WSBvciBWZXJ0ZXhNYXhZLFZlcnRl
eE1pblkgd2l0aCBvbmUgaW50ZXJzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICBpbmRleCsr
OworICAgICAgICAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTI4NCw3ICsyOTEsNyBAQCB2
b2lkIEV4Y2x1c2lvblBvbHlnb246OmNvbXB1dGVYSW50ZXJzZWN0aW9ucyhmbG9hdCB5LCBib29s
IGlzTWluWSwgVmVjdG9yPEV4Y2x1cwogICAgICAgICAgICAgICAgIGluc2lkZSA9IGFwcGVuZElu
dGVydmFsWCh0aGlzSW50ZXJzZWN0aW9uLnBvaW50LngoKSwgaW5zaWRlLCByZXN1bHQpOwogICAg
ICAgICB9CiAKLSAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgKytpbmRleDsKICAgICB9CiB9CiAK
QEAgLTI5NSw3ICszMDIsNyBAQCB2b2lkIEV4Y2x1c2lvblBvbHlnb246OmNvbXB1dGVFZGdlSW50
ZXJzZWN0aW9ucyhmbG9hdCB5MSwgZmxvYXQgeTIsIFZlY3RvcjxFeGNsdQogICAgIG1fZWRnZVRy
ZWUuYWxsT3ZlcmxhcHMoRXhjbHVzaW9uUG9seWdvbjo6RWRnZUludGVydmFsKHkxLCB5MiwgMCks
IG92ZXJsYXBwaW5nRWRnZXMpOwogCiAgICAgRWRnZUludGVyc2VjdGlvbiBpbnRlcnNlY3Rpb247
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG92ZXJsYXBwaW5nRWRnZXMuc2l6ZSgpOyBp
KyspIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmdFZGdlcy5zaXpl
KCk7ICsraSkgewogICAgICAgICBjb25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSAqZWRnZSA9IHN0
YXRpY19jYXN0PEV4Y2x1c2lvblBvbHlnb25FZGdlKj4ob3ZlcmxhcHBpbmdFZGdlc1tpXS5kYXRh
KCkpOwogICAgICAgICBmbG9hdCB4MTsKICAgICAgICAgZmxvYXQgeDI7CkBAIC0zNDMsNyArMzUw
LDcgQEAgdm9pZCBFeGNsdXNpb25Qb2x5Z29uOjpnZXRFeGNsdWRlZEludGVydmFscyhmbG9hdCBs
b2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2gKICAgICBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2
YWw+IGV4Y2x1ZGVkSW50ZXJ2YWxzOwogICAgIG1lcmdlRXhjbHVzaW9uSW50ZXJ2YWxzKG1lcmdl
ZEludGVydmFscywgZWRnZUludGVydmFscywgZXhjbHVkZWRJbnRlcnZhbHMpOwogCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4Y2x1ZGVkSW50ZXJ2YWxzLnNpemUoKTsgaSsrKSB7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4Y2x1ZGVkSW50ZXJ2YWxzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIEV4Y2x1c2lvbkludGVydmFsIGludGVydmFsID0gZXhjbHVkZWRJbnRlcnZh
bHNbaV07CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoaW50ZXJ2YWwueDEsIGlu
dGVydmFsLngyKSk7CiAgICAgfQpAQCAtMzcwLDI2ICszNzcsMTc0IEBAIHZvaWQgRXhjbHVzaW9u
UG9seWdvbjo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9n
aWNhbEhlaWdoCiAgICAgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiBpbmNsdWRlZEludGVydmFs
czsKICAgICBzdWJ0cmFjdEV4Y2x1c2lvbkludGVydmFscyhjb21tb25JbnRlcnZhbHMsIGVkZ2VJ
bnRlcnZhbHMsIGluY2x1ZGVkSW50ZXJ2YWxzKTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBpbmNsdWRlZEludGVydmFscy5zaXplKCk7IGkrKykgeworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBpbmNsdWRlZEludGVydmFscy5zaXplKCk7ICsraSkgewogICAgICAgICBFeGNs
dXNpb25JbnRlcnZhbCBpbnRlcnZhbCA9IGluY2x1ZGVkSW50ZXJ2YWxzW2ldOwogICAgICAgICBy
ZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KGludGVydmFsLngxLCBpbnRlcnZhbC54MikpOwogICAg
IH0KIH0KIAotYm9vbCBFeGNsdXNpb25Qb2x5Z29uOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dp
Y2FsVG9wKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRTaXplJiBtaW5M
b2dpY2FsSW50ZXJ2YWxTaXplLCBmbG9hdCYgcmVzdWx0KSBjb25zdAorc3RhdGljIGlubGluZSBm
bG9hdCBsZWZ0U2lkZShjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgxLCBjb25zdCBGbG9hdFBvaW50
JiB2ZXJ0ZXgyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4gKChwb2lu
dC54KCkgLSB2ZXJ0ZXgxLngoKSkgKiAodmVydGV4Mi55KCkgLSB2ZXJ0ZXgxLnkoKSkpIC0gKCh2
ZXJ0ZXgyLngoKSAtIHZlcnRleDEueCgpKSAqIChwb2ludC55KCkgLSB2ZXJ0ZXgxLnkoKSkpOwor
fQorCitib29sIEV4Y2x1c2lvblBvbHlnb246OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50KSBjb25zdAoreworICAgIGlmICghbV9ib3VuZGluZ0JveC5jb250YWlucyhwb2ludCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCB3aW5kaW5nTnVtYmVyID0gMDsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZFZGdlcygpOyArK2kpIHsKKyAgICAgICAg
Y29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSA9IGVkZ2VBdChpKS52ZXJ0ZXgxKCk7CisgICAgICAg
IGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleDIgPSBlZGdlQXQoaSkudmVydGV4MigpOworICAgICAg
ICBpZiAoaXNQb2ludE9uTGluZVNlZ21lbnQodmVydGV4MSwgdmVydGV4MiwgcG9pbnQpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICh2ZXJ0ZXgyLnkoKSA8IHBvaW50Lnko
KSkgeworICAgICAgICAgICAgaWYgKCh2ZXJ0ZXgxLnkoKSA+IHBvaW50LnkoKSkgJiYgKGxlZnRT
aWRlKHZlcnRleDEsIHZlcnRleDIsIHBvaW50KSA+IDApKQorICAgICAgICAgICAgICAgICsrd2lu
ZGluZ051bWJlcjsKKyAgICAgICAgfSBlbHNlIGlmICh2ZXJ0ZXgyLnkoKSA+IHBvaW50LnkoKSkg
eworICAgICAgICAgICAgaWYgKCh2ZXJ0ZXgxLnkoKSA8PSBwb2ludC55KCkpICYmIChsZWZ0U2lk
ZSh2ZXJ0ZXgxLCB2ZXJ0ZXgyLCBwb2ludCkgPCAwKSkKKyAgICAgICAgICAgICAgICAtLXdpbmRp
bmdOdW1iZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gd2luZGluZ051bWJlcjsK
K30KKworYm9vbCBWZXJ0ZXhQYWlyOjpvdmVybGFwc1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KSBjb25zdAoreworICAgIGJvb2wgYm91bmRzT3ZlcmxhcCA9IChtaW5YKCkgPCByZWN0Lm1heFgo
KSkgJiYgKG1heFgoKSA+IHJlY3QueCgpKSAmJiAobWluWSgpIDwgcmVjdC5tYXhZKCkpICYmICht
YXhZKCkgPiByZWN0LnkoKSk7CisgICAgaWYgKCFib3VuZHNPdmVybGFwKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBmbG9hdCBsZWZ0U2lkZVZhbHVlc1s0XSA9IHsKKyAgICAgICAgbGVm
dFNpZGUodmVydGV4MSgpLCB2ZXJ0ZXgyKCksIHJlY3QubWluWE1pbllDb3JuZXIoKSksCisgICAg
ICAgIGxlZnRTaWRlKHZlcnRleDEoKSwgdmVydGV4MigpLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCkp
LAorICAgICAgICBsZWZ0U2lkZSh2ZXJ0ZXgxKCksIHZlcnRleDIoKSwgcmVjdC5taW5YTWF4WUNv
cm5lcigpKSwKKyAgICAgICAgbGVmdFNpZGUodmVydGV4MSgpLCB2ZXJ0ZXgyKCksIHJlY3QubWF4
WE1heFlDb3JuZXIoKSkKKyAgICB9OworCisgICAgaW50IGN1cnJlbnRMZWZ0U2lkZVNpZ24gPSAw
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgICAgICAgaWYgKCFs
ZWZ0U2lkZVZhbHVlc1tpXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpbnQgbGVm
dFNpZGVTaWduID0gbGVmdFNpZGVWYWx1ZXNbaV0gPiAwID8gMSA6IC0xOworICAgICAgICBpZiAo
IWN1cnJlbnRMZWZ0U2lkZVNpZ24pCisgICAgICAgICAgICBjdXJyZW50TGVmdFNpZGVTaWduID0g
bGVmdFNpZGVTaWduOworICAgICAgICBlbHNlIGlmIChjdXJyZW50TGVmdFNpZGVTaWduICE9IGxl
ZnRTaWRlU2lnbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBWZXJ0ZXhQYWlyOjppbnRlcnNlY3Rpb24oY29uc3QgVmVydGV4
UGFpciYgb3RoZXIsIEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGp1c3QgYSB0ZW1wb3Jhcnkgc3R1YiwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMzQyOQorICAgIC8vIFNlZTogaHR0cDovL3BhdWxib3Vya2UubmV0L2dl
b21ldHJ5L3BvaW50bGluZXBsYW5lLywgIkludGVyc2VjdGlvbiBwb2ludCBvZiB0d28gbGluZXMg
aW4gMiBkaW1lbnNpb25zIgorCisgICAgY29uc3QgRmxvYXRTaXplJiB0aGlzRGVsdGEgPSB2ZXJ0
ZXgyKCkgLSB2ZXJ0ZXgxKCk7CisgICAgY29uc3QgRmxvYXRTaXplJiBvdGhlckRlbHRhID0gb3Ro
ZXIudmVydGV4MigpIC0gb3RoZXIudmVydGV4MSgpOworICAgIGZsb2F0IGRlbm9taW5hdG9yID0g
ZGV0ZXJtaW5hbnQodGhpc0RlbHRhLCBvdGhlckRlbHRhKTsKKyAgICBpZiAoIWRlbm9taW5hdG9y
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGUgdHdvIGxpbmUgc2VnbWVudHM6
ICJ0aGlzIiB2ZXJ0ZXgxLHZlcnRleDIgYW5kICJvdGhlciIgdmVydGV4MSx2ZXJ0ZXgyLCBoYXZl
IGJlZW4gZGVmaW5lZAorICAgIC8vIGluIHBhcmFtZXRyaWMgZm9ybS4gIEVlYWNoIHBvaW50IG9u
IHRoZSBsaW5lIHNlZ21lbnQgaXM6IHZlcnRleDEgKyB1ICogKHZlcnRleDIgLSB2ZXJ0ZXgxKSwK
KyAgICAvLyB3aGVuIDAgPD0gdSA8PSAxLiBXZSdyZSBjb21wdXRpbmcgdGhlIHZhbHVlcyBvZiB1
IGZvciBlYWNoIGxpbmUgYXQgdGhlaXIgaW50ZXJzZWN0aW9uIHBvaW50LgorCisgICAgY29uc3Qg
RmxvYXRTaXplJiB2ZXJ0ZXgxRGVsdGEgPSB2ZXJ0ZXgxKCkgLSBvdGhlci52ZXJ0ZXgxKCk7Cisg
ICAgZmxvYXQgdVRoaXNMaW5lID0gZGV0ZXJtaW5hbnQob3RoZXJEZWx0YSwgdmVydGV4MURlbHRh
KSAvIGRlbm9taW5hdG9yOworICAgIGZsb2F0IHVPdGhlckxpbmUgPSBkZXRlcm1pbmFudCh0aGlz
RGVsdGEsIHZlcnRleDFEZWx0YSkgLyBkZW5vbWluYXRvcjsKKworICAgIGlmICh1VGhpc0xpbmUg
PCAwIHx8IHVPdGhlckxpbmUgPCAwIHx8IHVUaGlzTGluZSA+IDEgfHwgdU90aGVyTGluZSA+IDEp
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIHBvaW50ID0gdmVydGV4MSgpICsgdVRoaXNM
aW5lICogdGhpc0RlbHRhOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEV4Y2x1c2lvblBv
bHlnb246OmZpcnN0Rml0UmVjdEluUG9seWdvbihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIHVuc2ln
bmVkIG9mZnNldEVkZ2VJbmRleDEsIHVuc2lnbmVkIG9mZnNldEVkZ2VJbmRleDIpIGNvbnN0Cit7
CisgICAgVmVjdG9yPEV4Y2x1c2lvblBvbHlnb246OkVkZ2VJbnRlcnZhbD4gb3ZlcmxhcHBpbmdF
ZGdlczsKKyAgICBtX2VkZ2VUcmVlLmFsbE92ZXJsYXBzKEV4Y2x1c2lvblBvbHlnb246OkVkZ2VJ
bnRlcnZhbChyZWN0LnkoKSwgcmVjdC5tYXhZKCksIDApLCBvdmVybGFwcGluZ0VkZ2VzKTsKKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvdmVybGFwcGluZ0VkZ2VzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlKiBlZGdlID0gc3RhdGljX2Nh
c3Q8RXhjbHVzaW9uUG9seWdvbkVkZ2UqPihvdmVybGFwcGluZ0VkZ2VzW2ldLmRhdGEoKSk7Cisg
ICAgICAgIGlmIChlZGdlLT5lZGdlSW5kZXgoKSAhPSBvZmZzZXRFZGdlSW5kZXgxICYmIGVkZ2Ut
PmVkZ2VJbmRleCgpICE9IG9mZnNldEVkZ2VJbmRleDIgJiYgZWRnZS0+b3ZlcmxhcHNSZWN0KHJl
Y3QpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgYWJvdmVPclRvVGhlTGVmdChjb25zdCBGbG9hdFJl
Y3QmIHIxLCBjb25zdCBGbG9hdFJlY3QmIHIyKQoreworICAgIGlmIChyMS55KCkgPCByMi55KCkp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChyMS55KCkgPT0gcjIueSgpKQorICAgICAg
ICByZXR1cm4gcjEueCgpIDwgcjIueCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBF
eGNsdXNpb25Qb2x5Z29uOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKGZsb2F0IG1p
bkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxT
aXplLCBmbG9hdCYgcmVzdWx0KSBjb25zdAorewogICAgIGlmIChtaW5Mb2dpY2FsSW50ZXJ2YWxT
aXplLndpZHRoKCkgPiBtX2JvdW5kaW5nQm94LndpZHRoKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGZsb2F0IG1pblkgPSBzdGQ6Om1heChtX2JvdW5kaW5nQm94LnkoKSwgbWluTG9n
aWNhbEludGVydmFsVG9wKTsKICAgICBmbG9hdCBtYXhZID0gbWluWSArIG1pbkxvZ2ljYWxJbnRl
cnZhbFNpemUuaGVpZ2h0KCk7Ci0gICAgaWYgKG1pblkgPCBtX2JvdW5kaW5nQm94LnkoKSB8fCBt
YXhZID4gbV9ib3VuZGluZ0JveC5tYXhZKCkpCisKKyAgICBpZiAobWF4WSA+IG1fYm91bmRpbmdC
b3gubWF4WSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBtaW5Mb2dp
Y2FsSW50ZXJ2YWxUb3A7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgZmxvYXQgZHggPSBtaW5Mb2dp
Y2FsSW50ZXJ2YWxTaXplLndpZHRoKCkgLyAyOworICAgIGZsb2F0IGR5ID0gbWluTG9naWNhbElu
dGVydmFsU2l6ZS5oZWlnaHQoKSAvIDI7CisgICAgVmVjdG9yPE9mZnNldFBvbHlnb25FZGdlPiBv
ZmZzZXRFZGdlczsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkVkZ2Vz
KCk7ICsraSkgeworICAgICAgICBjb25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSYgZWRnZSA9IGVk
Z2VBdChpKTsKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSA9IGVkZ2UudmVydGV4
MSgpOworICAgICAgICBjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgyID0gZWRnZS52ZXJ0ZXgyKCk7
CisgICAgICAgIFZlY3RvcjxPZmZzZXRQb2x5Z29uRWRnZT4gb2Zmc2V0RWRnZVBhaXI7CisKKyAg
ICAgICAgaWYgKHZlcnRleDIueSgpID4gdmVydGV4MS55KCkgPyB2ZXJ0ZXgyLngoKSA+PSB2ZXJ0
ZXgxLngoKSA6IHZlcnRleDEueCgpID49IHZlcnRleDIueCgpKSB7CisgICAgICAgICAgICBvZmZz
ZXRFZGdlUGFpci5hcHBlbmQoT2Zmc2V0UG9seWdvbkVkZ2UoZWRnZSwgRmxvYXRTaXplKGR4LCAt
ZHkpKSk7CisgICAgICAgICAgICBvZmZzZXRFZGdlUGFpci5hcHBlbmQoT2Zmc2V0UG9seWdvbkVk
Z2UoZWRnZSwgRmxvYXRTaXplKC1keCwgZHkpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBvZmZzZXRFZGdlUGFpci5hcHBlbmQoT2Zmc2V0UG9seWdvbkVkZ2UoZWRnZSwgRmxvYXRT
aXplKGR4LCBkeSkpKTsKKyAgICAgICAgICAgIG9mZnNldEVkZ2VQYWlyLmFwcGVuZChPZmZzZXRQ
b2x5Z29uRWRnZShlZGdlLCBGbG9hdFNpemUoLWR4LCAtZHkpKSk7CisgICAgICAgIH0KKworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgb2Zmc2V0RWRnZVBhaXIuc2l6ZSgpOyArK2op
CisgICAgICAgICAgICBpZiAob2Zmc2V0RWRnZVBhaXJbal0ubWF4WSgpID49IG1pblkpCisgICAg
ICAgICAgICAgICAgb2Zmc2V0RWRnZXMuYXBwZW5kKG9mZnNldEVkZ2VQYWlyW2pdKTsKKyAgICB9
CisKKyAgICBvZmZzZXRFZGdlcy5hcHBlbmQoT2Zmc2V0UG9seWdvbkVkZ2UoKnRoaXMsIG1pbkxv
Z2ljYWxJbnRlcnZhbFRvcCwgRmxvYXRTaXplKDAsIGR5KSkpOworCisgICAgRmxvYXRQb2ludCBv
ZmZzZXRFZGdlc0ludGVyc2VjdGlvbjsKKyAgICBGbG9hdFJlY3QgZmlyc3RGaXRSZWN0OworICAg
IGJvb2wgZmlyc3RGaXRGb3VuZCA9IGZhbHNlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG9mZnNldEVkZ2VzLnNpemUoKSAtIDE7ICsraSkgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSBpICsgMTsgaiA8IG9mZnNldEVkZ2VzLnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICBp
ZiAob2Zmc2V0RWRnZXNbaV0uaW50ZXJzZWN0aW9uKG9mZnNldEVkZ2VzW2pdLCBvZmZzZXRFZGdl
c0ludGVyc2VjdGlvbikpIHsKKyAgICAgICAgICAgICAgICBGbG9hdFBvaW50IHBvdGVudGlhbEZp
cnN0Rml0TG9jYXRpb24ob2Zmc2V0RWRnZXNJbnRlcnNlY3Rpb24ueCgpIC0gZHgsIG9mZnNldEVk
Z2VzSW50ZXJzZWN0aW9uLnkoKSAtIGR5KTsKKyAgICAgICAgICAgICAgICBGbG9hdFJlY3QgcG90
ZW50aWFsRmlyc3RGaXRSZWN0KHBvdGVudGlhbEZpcnN0Rml0TG9jYXRpb24sIG1pbkxvZ2ljYWxJ
bnRlcnZhbFNpemUpOworICAgICAgICAgICAgICAgIGlmICgocG90ZW50aWFsRmlyc3RGaXRMb2Nh
dGlvbi55KCkgPj0gbWluTG9naWNhbEludGVydmFsVG9wKQorICAgICAgICAgICAgICAgICAgICAm
JiAoIWZpcnN0Rml0Rm91bmQgfHwgYWJvdmVPclRvVGhlTGVmdChwb3RlbnRpYWxGaXJzdEZpdFJl
Y3QsIGZpcnN0Rml0UmVjdCkpCisgICAgICAgICAgICAgICAgICAgICYmIGNvbnRhaW5zKG9mZnNl
dEVkZ2VzSW50ZXJzZWN0aW9uKQorICAgICAgICAgICAgICAgICAgICAmJiBmaXJzdEZpdFJlY3RJ
blBvbHlnb24ocG90ZW50aWFsRmlyc3RGaXRSZWN0LCBvZmZzZXRFZGdlc1tpXS5lZGdlSW5kZXgo
KSwgb2Zmc2V0RWRnZXNbal0uZWRnZUluZGV4KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZp
cnN0Rml0Rm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBmaXJzdEZpdFJlY3QgPSBw
b3RlbnRpYWxGaXJzdEZpdFJlY3Q7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGZpcnN0Rml0Rm91bmQpCisgICAgICAgIHJlc3Vs
dCA9IGZpcnN0Rml0UmVjdC55KCk7CisgICAgcmV0dXJuIGZpcnN0Rml0Rm91bmQ7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FeGNsdXNpb25Qb2x5Z29uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9u
UG9seWdvbi5oCmluZGV4IGM5NzNjMzUuLjUzM2U1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaApAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgRXhjbHVzaW9uUG9seWdvbkVkZ2UmIGVkZ2VBdCh1bnNpZ25lZCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gbV9lZGdlc1tpbmRleF07IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkVkZ2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9lZGdlcy5zaXplKCk7IH0KIAorICAgIGJvb2wgY29udGFpbnMoY29u
c3QgRmxvYXRQb2ludCYpIGNvbnN0OworCiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc2hhcGVMb2dp
Y2FsQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2JvdW5kaW5nQm94OyB9
CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Vt
cHR5OyB9CiAgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2lj
YWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7
CkBAIC03Miw2ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlWEludGVyc2VjdGlv
bnMoZmxvYXQgeSwgYm9vbCBpc01pblksIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mKSBjb25z
dDsKICAgICB2b2lkIGNvbXB1dGVFZGdlSW50ZXJzZWN0aW9ucyhmbG9hdCBtaW5ZLCBmbG9hdCBt
YXhZLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JikgY29uc3Q7CiAgICAgdW5zaWduZWQgZmlu
ZE5leHRFZGdlVmVydGV4SW5kZXgodW5zaWduZWQgdmVydGV4SW5kZXgxLCBib29sIGNsb2Nrd2lz
ZSkgY29uc3Q7CisgICAgYm9vbCBmaXJzdEZpdFJlY3RJblBvbHlnb24oY29uc3QgRmxvYXRSZWN0
JiwgdW5zaWduZWQgb2Zmc2V0RWRnZUluZGV4MSwgdW5zaWduZWQgb2Zmc2V0RWRnZUluZGV4KSBj
b25zdDsKIAogICAgIHR5cGVkZWYgUE9ESW50ZXJ2YWw8ZmxvYXQsIEV4Y2x1c2lvblBvbHlnb25F
ZGdlKj4gRWRnZUludGVydmFsOwogICAgIHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlPGZsb2F0LCBF
eGNsdXNpb25Qb2x5Z29uRWRnZSo+IEVkZ2VJbnRlcnZhbFRyZWU7CkBAIC05NSw2ICs5OCw5IEBA
IHB1YmxpYzoKICAgICBmbG9hdCBtaW5ZKCkgY29uc3QgeyByZXR1cm4gc3RkOjptaW4odmVydGV4
MSgpLnkoKSwgdmVydGV4MigpLnkoKSk7IH0KICAgICBmbG9hdCBtYXhYKCkgY29uc3QgeyByZXR1
cm4gc3RkOjptYXgodmVydGV4MSgpLngoKSwgdmVydGV4MigpLngoKSk7IH0KICAgICBmbG9hdCBt
YXhZKCkgY29uc3QgeyByZXR1cm4gc3RkOjptYXgodmVydGV4MSgpLnkoKSwgdmVydGV4MigpLnko
KSk7IH0KKworICAgIGJvb2wgb3ZlcmxhcHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0Owor
ICAgIGJvb2wgaW50ZXJzZWN0aW9uKGNvbnN0IFZlcnRleFBhaXImLCBGbG9hdFBvaW50JikgY29u
c3Q7CiB9OwogCiAvLyBFZGdlSW50ZXJ2YWxUcmVlIG5vZGVzIHN0b3JlIG1pblksIG1heFksIGFu
ZCBhICgiVXNlckRhdGEiKSBwb2ludGVyIHRvIGFuIEV4Y2x1c2lvblBvbHlnb25FZGdlLiBFZGdl
IHZlcnRleApAQCAtMTUwLDYgKzE1NiwzMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBWYWx1ZVRvU3Ry
aW5nPEV4Y2x1c2lvblBvbHlnb25FZGdlKj4gewogfTsKICNlbmRpZgogCitjbGFzcyBPZmZzZXRQ
b2x5Z29uRWRnZSA6IHB1YmxpYyBWZXJ0ZXhQYWlyIHsKK3B1YmxpYzoKKyAgICBPZmZzZXRQb2x5
Z29uRWRnZShjb25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSYgZWRnZSwgY29uc3QgRmxvYXRTaXpl
JiBvZmZzZXQpCisgICAgICAgIDogbV92ZXJ0ZXgxKGVkZ2UudmVydGV4MSgpICsgb2Zmc2V0KQor
ICAgICAgICAsIG1fdmVydGV4MihlZGdlLnZlcnRleDIoKSArIG9mZnNldCkKKyAgICAgICAgLCBt
X2VkZ2VJbmRleChlZGdlLmVkZ2VJbmRleCgpKQorICAgIHsKKyAgICB9CisKKyAgICBPZmZzZXRQ
b2x5Z29uRWRnZShjb25zdCBFeGNsdXNpb25Qb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCBtaW5Mb2dp
Y2FsSW50ZXJ2YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQorICAgICAgICA6IG1fdmVy
dGV4MShGbG9hdFBvaW50KHBvbHlnb24uc2hhcGVMb2dpY2FsQm91bmRpbmdCb3goKS54KCksIG1p
bkxvZ2ljYWxJbnRlcnZhbFRvcCkgKyBvZmZzZXQpCisgICAgICAgICwgbV92ZXJ0ZXgyKEZsb2F0
UG9pbnQocG9seWdvbi5zaGFwZUxvZ2ljYWxCb3VuZGluZ0JveCgpLm1heFgoKSwgbWluTG9naWNh
bEludGVydmFsVG9wKSArIG9mZnNldCkKKyAgICAgICAgLCBtX2VkZ2VJbmRleChwb2x5Z29uLm51
bWJlck9mRWRnZXMoKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBjb25zdCBGbG9hdFBv
aW50JiB2ZXJ0ZXgxKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92ZXJ0ZXgxOyB9CisgICAg
dmlydHVhbCBjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gbV92ZXJ0ZXgyOyB9CisgICAgdW5zaWduZWQgZWRnZUluZGV4KCkgY29uc3QgeyByZXR1cm4g
bV9lZGdlSW5kZXg7IH0KKworcHJpdmF0ZToKKyAgICBGbG9hdFBvaW50IG1fdmVydGV4MTsKKyAg
ICBGbG9hdFBvaW50IG1fdmVydGV4MjsKKyAgICB1bnNpZ25lZCBtX2VkZ2VJbmRleDsKK307CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEV4Y2x1c2lvblBvbHlnb25faAo=
</data>
<flag name="review"
          id="202963"
          type_id="1"
          status="+"
          setter="krit"
    />
    <flag name="commit-queue"
          id="202964"
          type_id="3"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184303</attachid>
            <date>2013-01-23 13:51:20 -0800</date>
            <delta_ts>2013-01-23 15:13:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>27927</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMDMxMTJjLi5iMTlmNGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDEt
MjIgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIGZpcnN0IGluY2x1ZGVkIGludGVydmFs
IHBvc2l0aW9uIGZvciBwb2x5Z29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAzNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsIG9mIHRoZSBleGlzdGluZyBzaGFwZS1pbnNpZGUgdGVzdHMgZXhl
cmNpc2UgdGhlIG5ldyBjb2RlLiAgQWRkZWQgbmV3IHRlc3RzIHdoaWNoCisgICAgICAgIHZlcmlm
eSB0aGF0IGxheW91dCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBsYXlvdXQgY2FuIG5vdCBiZWdpbiBh
dCB0aGUgc2hhcGUncyBsb2dpY2FsIHRvcC4KKyAgICAgICAgVGVzdCAwMDEgYWRkaXRpb25hbGx5
IGNoZWNrcyBhbGwgd3JpdGluZy1tb2RlcywgdGVzdCAwMDIgdmVyaWZpZXMgdGhhdCB0aGUgdG9w
bW9zdC9sZWZ0bW9zdAorICAgICAgICBydWxlIGlzIGZvbGxvd2VkLCBhbmQgdGVzdDMgY2hlY2tz
IGEgc2VsZi1pbnRlcnNlY3RpbmcgcG9seWdvbi4KKworICAgICAgICAqIGZhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtZmlyc3QtZml0LTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAyLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LWZpcnN0LWZpdC0wMDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMy1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1m
aXJzdC1maXQtMDAzLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTIyICBUb255IENoYW5nICA8dG9u
eUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0MDE3
MS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDEtZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzQ2ODAzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNTIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAuc2hhcGUt
aW5zaWRlIHsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3aWR0aDogMjAw
cHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIGZvbnQ6IDUwcHgvMSBBaGVtLCBz
YW5zLXNlcmlmOworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgfQorCisgICAgLmJsdWUgewor
ICAgICAgICBjb2xvcjogYmx1ZTsKKyAgICAgfQorCisgICAgLnNoYXBlLW91dGxpbmUgeworICAg
ICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMHB4OworICAgICAgICBsZWZ0
OiAwcHg7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAg
ICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGhlIHNvbGlkIGdyZWVuIGFu
ZCBibHVlIHJlY3RhbmdsZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBieSB0aGUgYmx1ZSB0cmlhbmds
ZSBvdXRsaW5lcy48L3A+CisgICAgPGRpdiBjbGFzcz0ic2hhcGUtaW5zaWRlIj4KKyAgICAgICAg
PHN2ZyBjbGFzcz0ic2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIj4KKyAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDIwMCwyMDAgMCwyMDAiIHN0
cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIvPgorICAgICAgICA8L3N2Zz4KKyAgICAgICAgPGJyLz5Y
PGJyLz48c3BhbiBjbGFzcz0iYmx1ZSI+WFg8L3NwYW4+PGJyLz5YWFgKKyAgICA8L2Rpdj4KKyAg
ICA8cD5Xcml0aW5nLW1vZGUgaXMgaG9yaXpvbnRhbC10YjwvcD4KKworICAgIDxkaXYgY2xhc3M9
InNoYXBlLWluc2lkZSIgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybCI+
CisgICAgICAgIDxzdmcgY2xhc3M9InNoYXBlLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAyMDAsMjAw
IDAsMjAwIiBzdHJva2U9ImJsdWUiIGZpbGw9Im5vbmUiLz4KKyAgICAgICAgPC9zdmc+CisgICAg
ICAgIDwvYnIvPiZuYnNwOyZuYnNwOyZuYnNwO1g8YnIvPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNz
PSJibHVlIj5YWDwvc3Bhbj48YnIvPiZuYnNwO1hYWAorICAgIDwvZGl2PgorICAgIDxwPldyaXRp
bmctbW9kZSBpcyB2ZXJ0aWNhbC1ybC48L3A+CisKKyAgICA8ZGl2IGNsYXNzPSJzaGFwZS1pbnNp
ZGUiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtbHIiPgorICAgICAgICA8
c3ZnIGNsYXNzPSJzaGFwZS1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciPgorICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIwLDAgMjAwLDIwMCAwLDIwMCIgc3Ry
b2tlPSJibHVlIiBmaWxsPSJub25lIi8+CisgICAgICAgIDwvc3ZnPgorICAgICAgICAmbmJzcDtY
WFg8YnIvPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJibHVlIj5YWDwvc3Bhbj48YnIvPiZuYnNw
OyZuYnNwOyZuYnNwO1gKKyAgICA8L2Rpdj4KKyAgICA8cD5Xcml0aW5nLW1vZGUgaXMgdmVydGlj
YWwtbHIuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
Zmlyc3QtZml0LTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2
OTZmYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAxLmh0bWwKQEAgLTAsMCArMSw1NyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NF
eGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAgIC5zaGFwZS1p
bnNpZGUgeworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIHdpZHRoOiAyMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1pbnNpZGU6
IHBvbHlnb24oMHB4IDBweCwgMjAwcHggMjAwcHgsIDBweCAyMDBweCk7CisgICAgICAgIGZvbnQ6
IDUwcHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgfQor
CisgICAgLmJsdWUgeworICAgICAgICBjb2xvcjogYmx1ZTsKKyAgICAgfQorCisgICAgLnNoYXBl
LW91dGxpbmUgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMHB4
OworICAgICAgICBsZWZ0OiAwcHg7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVp
Z2h0OiAyMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGhl
IHNvbGlkIGdyZWVuIGFuZCBibHVlIHJlY3RhbmdsZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBieSB0
aGUgYmx1ZSB0cmlhbmdsZSBvdXRsaW5lcy48L3A+CisgICAgPGRpdiBjbGFzcz0ic2hhcGUtaW5z
aWRlIj4KKyAgICAgICAgPHN2ZyBjbGFzcz0ic2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDIw
MCwyMDAgMCwyMDAiIHN0cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIvPgorICAgICAgICA8L3N2Zz4K
KyAgICAgICAgWCA8c3BhbiBjbGFzcz0iYmx1ZSI+WFg8L3NwYW4+IFhYWAorICAgIDwvZGl2Pgor
ICAgIDxwPldyaXRpbmctbW9kZSBpcyBob3Jpem9udGFsLXRiPC9wPgorCisgICAgPGRpdiBjbGFz
cz0ic2hhcGUtaW5zaWRlIiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJs
Ij4KKyAgICAgICAgPHN2ZyBjbGFzcz0ic2hhcGUtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iMCwwIDIwMCwy
MDAgMCwyMDAiIHN0cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIvPgorICAgICAgICA8L3N2Zz4KKyAg
ICAgICAgWCA8c3BhbiBjbGFzcz0iYmx1ZSI+WFg8L3NwYW4+IFhYWAorICAgIDwvZGl2PgorICAg
IDxwPldyaXRpbmctbW9kZSBpcyB2ZXJ0aWNhbC1ybC48L3A+CisKKyAgICA8ZGl2IGNsYXNzPSJz
aGFwZS1pbnNpZGUiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtbHIiPgor
ICAgICAgICA8c3ZnIGNsYXNzPSJzaGFwZS1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciPgorICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIwLDAgMjAwLDIwMCAw
LDIwMCIgc3Ryb2tlPSJibHVlIiBmaWxsPSJub25lIi8+CisgICAgICAgIDwvc3ZnPgorICAgICAg
ICBYWFggPHNwYW4gY2xhc3M9ImJsdWUiPlhYPC9zcGFuPiBYCisgICAgPC9kaXY+CisgICAgPHA+
V3JpdGluZy1tb2RlIGlzIHZlcnRpY2FsLWxyLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLWZpcnN0LWZpdC0wMDItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0LWZpdC0wMDItZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGYyYTU1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtZmlyc3QtZml0LTAwMi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAjc2hhcGUtaW5zaWRlIHsK
KyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIH0KKworICAgICNzaGFwZS1vdXRsaW5l
IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsKKyAgICAg
ICAgbGVmdDogMHB4OworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgfQorCisgICAgI3NoYXBlLWNvbnRlbnRzIHsKKyAgICAgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgICAgICB0b3A6IDBweDsKKyAgICAgICAgbGVmdDogMHB4OworICAgICAgICBm
b250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAg
IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD5UaGUgc29saWQgZ3JlZW4gcmVj
dGFuZ2xlcyBzaG91bGQgYmUgY29udGFpbmVkIGJ5IHRoZSBibHVlIG91dGxpbmUuPC9wPgorICAg
IDxkaXYgaWQ9InNoYXBlLWluc2lkZSI+CisgICAgICAgIDxwcmUgaWQ9InNoYXBlLWNvbnRlbnRz
Ij4KK1ggICAgWAorWFggIFhYCitYWFhYWFggIDwvcHJlPgorICAgICAgICA8c3ZnIGlkPSJzaGFw
ZS1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAg
ICAgPHBvbHlnb24gcG9pbnRzPSIwLDAgMTUwLDE1MCAzMDAsMCAzMDAsMjAwIDAsMjAwIiBzdHJv
a2U9ImJsdWUiIGZpbGw9Im5vbmUiLz4KKyAgICAgICAgPC9zdmc+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1maXJzdC1maXQtMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBiZjZjOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWZpcnN0
LWZpdC0wMDIuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOworPC9z
Y3JpcHQ+Cis8c3R5bGU+CisgICAgI3NoYXBlLWluc2lkZSB7CisgICAgICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4Owor
ICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogcG9seWdvbigwcHggMHB4LCAxNTBweCAxNTBw
eCwgMzAwcHggMHB4LCAzMDBweCAyMDBweCwgMHB4IDIwMHB4KTsKKyAgICAgICAgZm9udDogNTBw
eC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9CisKKyAg
ICAjc2hhcGUtb3V0bGluZSB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAg
dG9wOiAwcHg7CisgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
ICA8cD5UaGUgc29saWQgZ3JlZW4gcmVjdGFuZ2xlcyBzaG91bGQgYmUgY29udGFpbmVkIGJ5IHRo
ZSBibHVlIG91dGxpbmUuPC9wPgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZSI+CisgICAgICAg
IDxzdmcgaWQ9InNoYXBlLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyI+CisgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAxNTAsMTUwIDMwMCwwIDMwMCwy
MDAgMCwyMDAiIHN0cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIvPgorICAgICAgICA8L3N2Zz4KKyAg
ICAgICAgWCBYIFhYIFhYIFhYWFhYWAorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtZmlyc3QtZml0LTAwMy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMy1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkYTMwMzAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1maXJzdC1maXQtMDAzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNzaGFwZS1pbnNpZGUg
eworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgfQorCisgICAgI3NoYXBlLW91dGxp
bmUgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMHB4OworICAg
ICAgICBsZWZ0OiAwcHg7CisgICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiAy
MDBweDsKKyAgICB9CisgICAgCisgICAgI3NoYXBlLWNvbnRlbnRzIHsKKyAgICAgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgICAgICB0b3A6IDBweDsKKyAgICAgICAgbGVmdDogMHB4OworICAg
ICAgICBmb250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVu
OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD5UaGUgc29saWQgZ3Jl
ZW4gcmVjdGFuZ2xlcyBzaG91bGQgYmUgY29udGFpbmVkIGJ5IHRoZSBibHVlIG91dGxpbmUuPC9w
PgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lkZSI+CisgICAgICAgIDxwcmUgaWQ9InNoYXBlLWNv
bnRlbnRzIj4KK1ggICAgICBYCisgICBYWCAgIDwvcHJlPgorICAgICAgICA8c3ZnIGlkPSJzaGFw
ZS1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgICAgICAg
ICAgPHBvbHlnb24gcG9pbnRzPSIwLDAgMjAwLDIwMCA0MDAsMCA0MDAsMTAwIDAsMTAwIiBzdHJv
a2U9ImJsdWUiIGZpbGw9Im5vbmUiLz4KKyAgICAgICAgPC9zdmc+CisgICAgPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAzLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkzNjBiNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUt
aW5zaWRlLWZpcnN0LWZpdC0wMDMuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNFbmFibGVk
KHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgI3NoYXBlLWluc2lkZSB7CisgICAgICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgd2lkdGg6IDQwMHB4OworICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogcG9seWdvbigwcHggMHB4
LCAyMDBweCAyMDBweCwgNDAwcHggMHB4LCA0MDBweCAxMDBweCwgMHB4IDEwMHB4KTsKKyAgICAg
ICAgZm9udDogNTBweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsK
KyAgICB9CisKKyAgICAjc2hhcGUtb3V0bGluZSB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICAgICAgdG9wOiAwcHg7CisgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgICAgd2lkdGg6
IDQwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8cD5UaGUgc29saWQgZ3JlZW4gcmVjdGFuZ2xlcyBzaG91bGQgYmUgY29u
dGFpbmVkIGJ5IHRoZSBibHVlIG91dGxpbmUuPC9wPgorICAgIDxkaXYgaWQ9InNoYXBlLWluc2lk
ZSI+CisgICAgICAgIDxzdmcgaWQ9InNoYXBlLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMCAyMDAsMjAw
IDQwMCwwIDQwMCwxMDAgMCwxMDAiIHN0cm9rZT0iYmx1ZSIgZmlsbD0ibm9uZSIvPgorICAgICAg
ICA8L3N2Zz4KKyAgICAgICAgWCBYIFhYCisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZGE2NWQ3ZC4uYzA0ZDY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBA
CisyMDEzLTAxLTIyICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAg
IFtDU1MgRXhjbHVzaW9uc10gQWRkIHN1cHBvcnQgZm9yIGNvbXB1dGluZyBmaXJzdCBpbmNsdWRl
ZCBpbnRlcnZhbCBwb3NpdGlvbiBmb3IgcG9seWdvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGNvbXB1dGluZyB0aGUg
ImZpcnN0IGZpdCIgbG9jYXRpb24sIGkuZS4gdGhlIGxvZ2ljYWwgc2hhcGUtaW5zaWRlCisgICAg
ICAgIGxvY2F0aW9uIHdoZXJlIGEgbGluZSdzIGxheW91dCBiZWdpbnMuIFRoZSBhbGdvcml0aG0g
Zm9yIGRvaW5nIHNvIGlzIGRlc2NyaWJlZCBoZXJlOgorICAgICAgICBodHRwOi8vaGFuc211bGxl
ci13ZWJraXQuYmxvZ3Nwb3QuY29tLzIwMTIvMDgvcmV2aXNlZC1hbGdvcml0aG0tZm9yLWZpbmRp
bmctZmlyc3QuaHRtbC4KKworICAgICAgICBUZXN0czogZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtZmlyc3QtZml0LTAwMS5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAyLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LWZpcnN0LWZpdC0wMDMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciopOiBTY2FsZSBhIEZsb2F0U2l6ZS4g
VGhpcyBzaW1wbGlmaWVkIHRoZSBmaW5hbCBleHByZXNzaW9uIGluIFZlcnRleFBhaXI6OmludGVy
c2VjdGlvbigpLgorICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzUG9pbnRPbkxpbmVTZWdtZW50KTogUmV0dXJucyB0cnVlIGlmIHRo
ZSBzcGVjaWZpZWQgcG9pbnQgaXMgY29sbGluZWFyIGFuZCB3aXRoaW4gdGhlIGxpbmUgc2VnZW1l
bnQncyBib3VuZHMuCisgICAgICAgIChXZWJDb3JlOjpsZWZ0U2lkZSk6IFJldHVybiBhIHZhbHVl
ID4gMCBpZiBwb2ludCBpcyBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBsaW5lIHNlZ21lbnQsIDwg
MCBpZiBpdCdzIG9uIHRoZSByaWdodCwgMCBpZiBpdCdzIGNvbGxpbmVhci4KKyAgICAgICAgKFdl
YkNvcmU6OkV4Y2x1c2lvblBvbHlnb246OmNvbnRhaW5zKTogUmV0dXJuIHRydWUgaWYgdGhlIHBv
aW50IGlzIHdpdGhpbiB0aGUgcG9seWdvbiBvciBvbiBhbiBlZGdlLgorICAgICAgICAoV2ViQ29y
ZTo6VmVydGV4UGFpcjo6b3ZlcmxhcHNSZWN0KTogUmV0dXJucyB0cnVlIGlmIHRoZSBsaW5lIHNl
Z21lbnQgZnJvbSB2ZXJ0ZXgxIHRvIHZlcnRleDIgb3ZlcmxhcHMgdGhlIHNwZWNpZmllZCBGbG9h
dFJlY3QuCisgICAgICAgIChXZWJDb3JlOjpWZXJ0ZXhQYWlyOjppbnRlcnNlY3Rpb24pOiBGaW5k
cyB0aGUgaW50ZXJzZWN0aW9uIG9mIGEgcGFpciBvZiBsaW5lIHNlZ21lbnRzIGRlZmluZWQgYnkg
VmVydGV4UGFpcnMuCisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5Z29uOjpmaXJzdEZp
dFJlY3RJblBvbHlnb24pOiBSZXR1cm5zIHRydWUgaWYgbm9uZSBvZiB0aGUgcG9seWdvbidzIGVk
Z2VzLCBleGNlcHQgdGhlIHR3byB1c2VkCisgICAgICAgICAgICB0byBkZWZpbmUgYnkgdGhlIG9m
ZnNldCBlZGdlcywgb3ZlcmxhcCB0aGUgRmxvYXRSZWN0LgorICAgICAgICAoV2ViQ29yZTo6YWJv
dmVPclRvVGhlTGVmdCk6IERlZmluZXMgdGhlIHRvcC9sZWZ0IHByZWZlcmVuY2UgZm9yICJmaXJz
dCBmaXQiIGxvY2F0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblBvbHlnb246OmZp
cnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3ApOiBSZXBsYWNlZCB0aGUgc3R1YiBpbXBsZW1l
bnRhdGlvbiBvZiB0aGlzIG1ldGhvZC4KKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uUG9s
eWdvbi5oOgorICAgICAgICAoRXhjbHVzaW9uUG9seWdvbik6IEFkZGVkIGRlY2xhcmF0aW9ucyBu
b3RlZCBhYm92ZS4KKyAgICAgICAgKFZlcnRleFBhaXIpOiBBYnN0cmFjdCBjbGFzcyB0aGF0IGRl
ZmluZXMgYSBwYWlyIG9mIEZsb2F0UG9pbnRzLgorICAgICAgICAoT2Zmc2V0UG9seWdvbkVkZ2Up
OiBSZXByZXNlbnRzIGFuIGVkZ2UgdGhhdCdzIGhvcml6b250YWxseSBvZmZzZXQgZnJvbSBhIHBv
bHlnb24gZWRnZS4KKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNldFBvbHlnb25FZGdlOjplZGdlSW5k
ZXgpOiBUaGUgRXhjbHVzaW9uUG9seWdvbiBlZGdlIGluZGV4IHVzZWQgdG8gZGVmaW5lIHRoaXMg
T2Zmc2V0RWRnZS4KKwogMjAxMy0wMS0yMiAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEZpeCBhc3NlcnRpb25zIGluIG1ha2U4Qml0RnJvbTE2Qml0U291
cmNlKCkgd2l0aCB0aHJlYWRlZCBwYXJzZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRTaXplLmgKaW5kZXggMmNhMjJjZC4uNjAxMDIxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKQEAgLTE3NSw2ICsxNzUsMTYgQEAg
aW5saW5lIEZsb2F0U2l6ZSBvcGVyYXRvci0oY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIHJl
dHVybiBGbG9hdFNpemUoLXNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpOwogfQogCitpbmxp
bmUgRmxvYXRTaXplIG9wZXJhdG9yKihjb25zdCBGbG9hdFNpemUmIGEsIGNvbnN0IGZsb2F0IGIp
Cit7CisgICAgcmV0dXJuIEZsb2F0U2l6ZShhLndpZHRoKCkgKiBiLCBhLmhlaWdodCgpICogYik7
Cit9CisKK2lubGluZSBGbG9hdFNpemUgb3BlcmF0b3IqKGNvbnN0IGZsb2F0IGEsIGNvbnN0IEZs
b2F0U2l6ZSYgYikKK3sKKyAgICByZXR1cm4gRmxvYXRTaXplKGEgKiBiLndpZHRoKCksIGEgKiBi
LmhlaWdodCgpKTsKK30KKwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFNpemUm
IGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKIHsKICAgICByZXR1cm4gYS53aWR0aCgpID09IGIud2lk
dGgoKSAmJiBhLmhlaWdodCgpID09IGIuaGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAKaW5kZXggYTUyMjMyZi4uYTlmMGE0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcApAQCAtNjIsNiAr
NjIsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGFyZUNvaW5jaWRlbnRQb2ludHMoY29uc3QgRmxv
YXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAKICAgICByZXR1cm4gcDAueCgpID09IHAx
LngoKSAmJiBwMC55KCkgPT0gcDEueSgpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNQb2lu
dE9uTGluZVNlZ21lbnQoY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSwgY29uc3QgRmxvYXRQb2lu
dCYgdmVydGV4MiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuIHBvaW50
LngoKSA+PSBzdGQ6Om1pbih2ZXJ0ZXgxLngoKSwgdmVydGV4Mi54KCkpCisgICAgICAgICYmIHBv
aW50LngoKSA8PSBzdGQ6Om1heCh2ZXJ0ZXgxLngoKSwgdmVydGV4Mi54KCkpCisgICAgICAgICYm
IGFyZUNvbGxpbmVhclBvaW50cyh2ZXJ0ZXgxLCB2ZXJ0ZXgyLCBwb2ludCk7Cit9CisKIHN0YXRp
YyBpbmxpbmUgdW5zaWduZWQgbmV4dFZlcnRleEluZGV4KHVuc2lnbmVkIHZlcnRleEluZGV4LCB1
bnNpZ25lZCBuVmVydGljZXMsIGJvb2wgY2xvY2t3aXNlKQogewogICAgIHJldHVybiAoKGNsb2Nr
d2lzZSkgPyB2ZXJ0ZXhJbmRleCArIDEgOiB2ZXJ0ZXhJbmRleCAtIDEgKyBuVmVydGljZXMpICUg
blZlcnRpY2VzOwpAQCAtMTE5LDcgKzEyNiw3IEBAIEV4Y2x1c2lvblBvbHlnb246OkV4Y2x1c2lv
blBvbHlnb24oUGFzc093blB0cjxWZWN0b3I8RmxvYXRQb2ludD4gPiB2ZXJ0aWNlcywgV2luCiAg
ICAgICAgIG1fZWRnZXNbZWRnZUluZGV4XS5tX3ZlcnRleEluZGV4MSA9IHZlcnRleEluZGV4MTsK
ICAgICAgICAgbV9lZGdlc1tlZGdlSW5kZXhdLm1fdmVydGV4SW5kZXgyID0gdmVydGV4SW5kZXgy
OwogICAgICAgICBtX2VkZ2VzW2VkZ2VJbmRleF0ubV9lZGdlSW5kZXggPSBlZGdlSW5kZXg7Ci0g
ICAgICAgIGVkZ2VJbmRleCsrOworICAgICAgICArK2VkZ2VJbmRleDsKICAgICAgICAgdmVydGV4
SW5kZXgxID0gdmVydGV4SW5kZXgyOwogICAgIH0gd2hpbGUgKHZlcnRleEluZGV4MSk7CiAKQEAg
LTEzOCw3ICsxNDUsNyBAQCBFeGNsdXNpb25Qb2x5Z29uOjpFeGNsdXNpb25Qb2x5Z29uKFBhc3NP
d25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+ID4gdmVydGljZXMsIFdpbgogICAgIGlmIChtX2VtcHR5
KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lZGdl
cy5zaXplKCk7IGkrKykgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VkZ2VzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIEV4Y2x1c2lvblBvbHlnb25FZGdlKiBlZGdlID0gJm1fZWRn
ZXNbaV07CiAgICAgICAgIG1fZWRnZVRyZWUuYWRkKEVkZ2VJbnRlcnZhbChlZGdlLT5taW5ZKCks
IGVkZ2UtPm1heFkoKSwgZWRnZSkpOwogICAgIH0KQEAgLTIyNiw3ICsyMzMsNyBAQCB2b2lkIEV4
Y2x1c2lvblBvbHlnb246OmNvbXB1dGVYSW50ZXJzZWN0aW9ucyhmbG9hdCB5LCBib29sIGlzTWlu
WSwgVmVjdG9yPEV4Y2x1cwogCiAgICAgVmVjdG9yPEVkZ2VJbnRlcnNlY3Rpb24+IGludGVyc2Vj
dGlvbnM7CiAgICAgRWRnZUludGVyc2VjdGlvbiBpbnRlcnNlY3Rpb247Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG92ZXJsYXBwaW5nRWRnZXMuc2l6ZSgpOyBpKyspIHsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmdFZGdlcy5zaXplKCk7ICsraSkgewogICAg
ICAgICBFeGNsdXNpb25Qb2x5Z29uRWRnZSogZWRnZSA9IHN0YXRpY19jYXN0PEV4Y2x1c2lvblBv
bHlnb25FZGdlKj4ob3ZlcmxhcHBpbmdFZGdlc1tpXS5kYXRhKCkpOwogICAgICAgICBpZiAoY29t
cHV0ZVhJbnRlcnNlY3Rpb24oZWRnZSwgeSwgaW50ZXJzZWN0aW9uKSAmJiBpbnRlcnNlY3Rpb24u
dHlwZSAhPSBWZXJ0ZXhZQm90aCkKICAgICAgICAgICAgIGludGVyc2VjdGlvbnMuYXBwZW5kKGlu
dGVyc2VjdGlvbik7CkBAIC0yNTAsNyArMjU3LDcgQEAgdm9pZCBFeGNsdXNpb25Qb2x5Z29uOjpj
b21wdXRlWEludGVyc2VjdGlvbnMoZmxvYXQgeSwgYm9vbCBpc01pblksIFZlY3RvcjxFeGNsdXMK
ICAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gMjsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHBhaXJzIG9mIGludGVyc2VjdGlvbnMg
d2hvc2UgdHlwZXMgYXJlIFZlcnRleE1pblksVmVydGV4TWF4WSBvciBWZXJ0ZXhNYXhZLFZlcnRl
eE1pblkgd2l0aCBvbmUgaW50ZXJzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICBpbmRleCsr
OworICAgICAgICAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTI4NCw3ICsyOTEsNyBAQCB2
b2lkIEV4Y2x1c2lvblBvbHlnb246OmNvbXB1dGVYSW50ZXJzZWN0aW9ucyhmbG9hdCB5LCBib29s
IGlzTWluWSwgVmVjdG9yPEV4Y2x1cwogICAgICAgICAgICAgICAgIGluc2lkZSA9IGFwcGVuZElu
dGVydmFsWCh0aGlzSW50ZXJzZWN0aW9uLnBvaW50LngoKSwgaW5zaWRlLCByZXN1bHQpOwogICAg
ICAgICB9CiAKLSAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgKytpbmRleDsKICAgICB9CiB9CiAK
QEAgLTI5NSw3ICszMDIsNyBAQCB2b2lkIEV4Y2x1c2lvblBvbHlnb246OmNvbXB1dGVFZGdlSW50
ZXJzZWN0aW9ucyhmbG9hdCB5MSwgZmxvYXQgeTIsIFZlY3RvcjxFeGNsdQogICAgIG1fZWRnZVRy
ZWUuYWxsT3ZlcmxhcHMoRXhjbHVzaW9uUG9seWdvbjo6RWRnZUludGVydmFsKHkxLCB5MiwgMCks
IG92ZXJsYXBwaW5nRWRnZXMpOwogCiAgICAgRWRnZUludGVyc2VjdGlvbiBpbnRlcnNlY3Rpb247
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG92ZXJsYXBwaW5nRWRnZXMuc2l6ZSgpOyBp
KyspIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmdFZGdlcy5zaXpl
KCk7ICsraSkgewogICAgICAgICBjb25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSAqZWRnZSA9IHN0
YXRpY19jYXN0PEV4Y2x1c2lvblBvbHlnb25FZGdlKj4ob3ZlcmxhcHBpbmdFZGdlc1tpXS5kYXRh
KCkpOwogICAgICAgICBmbG9hdCB4MTsKICAgICAgICAgZmxvYXQgeDI7CkBAIC0zNDMsNyArMzUw
LDcgQEAgdm9pZCBFeGNsdXNpb25Qb2x5Z29uOjpnZXRFeGNsdWRlZEludGVydmFscyhmbG9hdCBs
b2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2gKICAgICBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2
YWw+IGV4Y2x1ZGVkSW50ZXJ2YWxzOwogICAgIG1lcmdlRXhjbHVzaW9uSW50ZXJ2YWxzKG1lcmdl
ZEludGVydmFscywgZWRnZUludGVydmFscywgZXhjbHVkZWRJbnRlcnZhbHMpOwogCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4Y2x1ZGVkSW50ZXJ2YWxzLnNpemUoKTsgaSsrKSB7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4Y2x1ZGVkSW50ZXJ2YWxzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIEV4Y2x1c2lvbkludGVydmFsIGludGVydmFsID0gZXhjbHVkZWRJbnRlcnZh
bHNbaV07CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoaW50ZXJ2YWwueDEsIGlu
dGVydmFsLngyKSk7CiAgICAgfQpAQCAtMzcwLDI2ICszNzcsMTc0IEBAIHZvaWQgRXhjbHVzaW9u
UG9seWdvbjo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9n
aWNhbEhlaWdoCiAgICAgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiBpbmNsdWRlZEludGVydmFs
czsKICAgICBzdWJ0cmFjdEV4Y2x1c2lvbkludGVydmFscyhjb21tb25JbnRlcnZhbHMsIGVkZ2VJ
bnRlcnZhbHMsIGluY2x1ZGVkSW50ZXJ2YWxzKTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBpbmNsdWRlZEludGVydmFscy5zaXplKCk7IGkrKykgeworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBpbmNsdWRlZEludGVydmFscy5zaXplKCk7ICsraSkgewogICAgICAgICBFeGNs
dXNpb25JbnRlcnZhbCBpbnRlcnZhbCA9IGluY2x1ZGVkSW50ZXJ2YWxzW2ldOwogICAgICAgICBy
ZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KGludGVydmFsLngxLCBpbnRlcnZhbC54MikpOwogICAg
IH0KIH0KIAotYm9vbCBFeGNsdXNpb25Qb2x5Z29uOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dp
Y2FsVG9wKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRTaXplJiBtaW5M
b2dpY2FsSW50ZXJ2YWxTaXplLCBmbG9hdCYgcmVzdWx0KSBjb25zdAorc3RhdGljIGlubGluZSBm
bG9hdCBsZWZ0U2lkZShjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgxLCBjb25zdCBGbG9hdFBvaW50
JiB2ZXJ0ZXgyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4gKChwb2lu
dC54KCkgLSB2ZXJ0ZXgxLngoKSkgKiAodmVydGV4Mi55KCkgLSB2ZXJ0ZXgxLnkoKSkpIC0gKCh2
ZXJ0ZXgyLngoKSAtIHZlcnRleDEueCgpKSAqIChwb2ludC55KCkgLSB2ZXJ0ZXgxLnkoKSkpOwor
fQorCitib29sIEV4Y2x1c2lvblBvbHlnb246OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50KSBjb25zdAoreworICAgIGlmICghbV9ib3VuZGluZ0JveC5jb250YWlucyhwb2ludCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCB3aW5kaW5nTnVtYmVyID0gMDsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZFZGdlcygpOyArK2kpIHsKKyAgICAgICAg
Y29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSA9IGVkZ2VBdChpKS52ZXJ0ZXgxKCk7CisgICAgICAg
IGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleDIgPSBlZGdlQXQoaSkudmVydGV4MigpOworICAgICAg
ICBpZiAoaXNQb2ludE9uTGluZVNlZ21lbnQodmVydGV4MSwgdmVydGV4MiwgcG9pbnQpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICh2ZXJ0ZXgyLnkoKSA8IHBvaW50Lnko
KSkgeworICAgICAgICAgICAgaWYgKCh2ZXJ0ZXgxLnkoKSA+IHBvaW50LnkoKSkgJiYgKGxlZnRT
aWRlKHZlcnRleDEsIHZlcnRleDIsIHBvaW50KSA+IDApKQorICAgICAgICAgICAgICAgICsrd2lu
ZGluZ051bWJlcjsKKyAgICAgICAgfSBlbHNlIGlmICh2ZXJ0ZXgyLnkoKSA+IHBvaW50LnkoKSkg
eworICAgICAgICAgICAgaWYgKCh2ZXJ0ZXgxLnkoKSA8PSBwb2ludC55KCkpICYmIChsZWZ0U2lk
ZSh2ZXJ0ZXgxLCB2ZXJ0ZXgyLCBwb2ludCkgPCAwKSkKKyAgICAgICAgICAgICAgICAtLXdpbmRp
bmdOdW1iZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gd2luZGluZ051bWJlcjsK
K30KKworYm9vbCBWZXJ0ZXhQYWlyOjpvdmVybGFwc1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KSBjb25zdAoreworICAgIGJvb2wgYm91bmRzT3ZlcmxhcCA9IChtaW5YKCkgPCByZWN0Lm1heFgo
KSkgJiYgKG1heFgoKSA+IHJlY3QueCgpKSAmJiAobWluWSgpIDwgcmVjdC5tYXhZKCkpICYmICht
YXhZKCkgPiByZWN0LnkoKSk7CisgICAgaWYgKCFib3VuZHNPdmVybGFwKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBmbG9hdCBsZWZ0U2lkZVZhbHVlc1s0XSA9IHsKKyAgICAgICAgbGVm
dFNpZGUodmVydGV4MSgpLCB2ZXJ0ZXgyKCksIHJlY3QubWluWE1pbllDb3JuZXIoKSksCisgICAg
ICAgIGxlZnRTaWRlKHZlcnRleDEoKSwgdmVydGV4MigpLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCkp
LAorICAgICAgICBsZWZ0U2lkZSh2ZXJ0ZXgxKCksIHZlcnRleDIoKSwgcmVjdC5taW5YTWF4WUNv
cm5lcigpKSwKKyAgICAgICAgbGVmdFNpZGUodmVydGV4MSgpLCB2ZXJ0ZXgyKCksIHJlY3QubWF4
WE1heFlDb3JuZXIoKSkKKyAgICB9OworCisgICAgaW50IGN1cnJlbnRMZWZ0U2lkZVNpZ24gPSAw
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgICAgICAgaWYgKCFs
ZWZ0U2lkZVZhbHVlc1tpXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpbnQgbGVm
dFNpZGVTaWduID0gbGVmdFNpZGVWYWx1ZXNbaV0gPiAwID8gMSA6IC0xOworICAgICAgICBpZiAo
IWN1cnJlbnRMZWZ0U2lkZVNpZ24pCisgICAgICAgICAgICBjdXJyZW50TGVmdFNpZGVTaWduID0g
bGVmdFNpZGVTaWduOworICAgICAgICBlbHNlIGlmIChjdXJyZW50TGVmdFNpZGVTaWduICE9IGxl
ZnRTaWRlU2lnbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBWZXJ0ZXhQYWlyOjppbnRlcnNlY3Rpb24oY29uc3QgVmVydGV4
UGFpciYgb3RoZXIsIEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGp1c3QgYSB0ZW1wb3Jhcnkgc3R1YiwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMzQyOQorICAgIC8vIFNlZTogaHR0cDovL3BhdWxib3Vya2UubmV0L2dl
b21ldHJ5L3BvaW50bGluZXBsYW5lLywgIkludGVyc2VjdGlvbiBwb2ludCBvZiB0d28gbGluZXMg
aW4gMiBkaW1lbnNpb25zIgorCisgICAgY29uc3QgRmxvYXRTaXplJiB0aGlzRGVsdGEgPSB2ZXJ0
ZXgyKCkgLSB2ZXJ0ZXgxKCk7CisgICAgY29uc3QgRmxvYXRTaXplJiBvdGhlckRlbHRhID0gb3Ro
ZXIudmVydGV4MigpIC0gb3RoZXIudmVydGV4MSgpOworICAgIGZsb2F0IGRlbm9taW5hdG9yID0g
ZGV0ZXJtaW5hbnQodGhpc0RlbHRhLCBvdGhlckRlbHRhKTsKKyAgICBpZiAoIWRlbm9taW5hdG9y
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGUgdHdvIGxpbmUgc2VnbWVudHM6
ICJ0aGlzIiB2ZXJ0ZXgxLHZlcnRleDIgYW5kICJvdGhlciIgdmVydGV4MSx2ZXJ0ZXgyLCBoYXZl
IGJlZW4gZGVmaW5lZAorICAgIC8vIGluIHBhcmFtZXRyaWMgZm9ybS4gRWFjaCBwb2ludCBvbiB0
aGUgbGluZSBzZWdtZW50IGlzOiB2ZXJ0ZXgxICsgdSAqICh2ZXJ0ZXgyIC0gdmVydGV4MSksCisg
ICAgLy8gd2hlbiAwIDw9IHUgPD0gMS4gV2UncmUgY29tcHV0aW5nIHRoZSB2YWx1ZXMgb2YgdSBm
b3IgZWFjaCBsaW5lIGF0IHRoZWlyIGludGVyc2VjdGlvbiBwb2ludC4KKworICAgIGNvbnN0IEZs
b2F0U2l6ZSYgdmVydGV4MURlbHRhID0gdmVydGV4MSgpIC0gb3RoZXIudmVydGV4MSgpOworICAg
IGZsb2F0IHVUaGlzTGluZSA9IGRldGVybWluYW50KG90aGVyRGVsdGEsIHZlcnRleDFEZWx0YSkg
LyBkZW5vbWluYXRvcjsKKyAgICBmbG9hdCB1T3RoZXJMaW5lID0gZGV0ZXJtaW5hbnQodGhpc0Rl
bHRhLCB2ZXJ0ZXgxRGVsdGEpIC8gZGVub21pbmF0b3I7CisKKyAgICBpZiAodVRoaXNMaW5lIDwg
MCB8fCB1T3RoZXJMaW5lIDwgMCB8fCB1VGhpc0xpbmUgPiAxIHx8IHVPdGhlckxpbmUgPiAxKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBwb2ludCA9IHZlcnRleDEoKSArIHVUaGlzTGlu
ZSAqIHRoaXNEZWx0YTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBFeGNsdXNpb25Qb2x5
Z29uOjpmaXJzdEZpdFJlY3RJblBvbHlnb24oY29uc3QgRmxvYXRSZWN0JiByZWN0LCB1bnNpZ25l
ZCBvZmZzZXRFZGdlSW5kZXgxLCB1bnNpZ25lZCBvZmZzZXRFZGdlSW5kZXgyKSBjb25zdAorewor
ICAgIFZlY3RvcjxFeGNsdXNpb25Qb2x5Z29uOjpFZGdlSW50ZXJ2YWw+IG92ZXJsYXBwaW5nRWRn
ZXM7CisgICAgbV9lZGdlVHJlZS5hbGxPdmVybGFwcyhFeGNsdXNpb25Qb2x5Z29uOjpFZGdlSW50
ZXJ2YWwocmVjdC55KCksIHJlY3QubWF4WSgpLCAwKSwgb3ZlcmxhcHBpbmdFZGdlcyk7CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmdFZGdlcy5zaXplKCk7ICsraSkg
eworICAgICAgICBjb25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSogZWRnZSA9IHN0YXRpY19jYXN0
PEV4Y2x1c2lvblBvbHlnb25FZGdlKj4ob3ZlcmxhcHBpbmdFZGdlc1tpXS5kYXRhKCkpOworICAg
ICAgICBpZiAoZWRnZS0+ZWRnZUluZGV4KCkgIT0gb2Zmc2V0RWRnZUluZGV4MSAmJiBlZGdlLT5l
ZGdlSW5kZXgoKSAhPSBvZmZzZXRFZGdlSW5kZXgyICYmIGVkZ2UtPm92ZXJsYXBzUmVjdChyZWN0
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworc3RhdGljIGlubGluZSBib29sIGFib3ZlT3JUb1RoZUxlZnQoY29uc3QgRmxvYXRSZWN0
JiByMSwgY29uc3QgRmxvYXRSZWN0JiByMikKK3sKKyAgICBpZiAocjEueSgpIDwgcjIueSgpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocjEueSgpID09IHIyLnkoKSkKKyAgICAgICAg
cmV0dXJuIHIxLngoKSA8IHIyLngoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRXhj
bHVzaW9uUG9seWdvbjo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChmbG9hdCBtaW5M
b2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgbWluTG9naWNhbEludGVydmFsU2l6
ZSwgZmxvYXQmIHJlc3VsdCkgY29uc3QKK3sKICAgICBpZiAobWluTG9naWNhbEludGVydmFsU2l6
ZS53aWR0aCgpID4gbV9ib3VuZGluZ0JveC53aWR0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBmbG9hdCBtaW5ZID0gc3RkOjptYXgobV9ib3VuZGluZ0JveC55KCksIG1pbkxvZ2lj
YWxJbnRlcnZhbFRvcCk7CiAgICAgZmxvYXQgbWF4WSA9IG1pblkgKyBtaW5Mb2dpY2FsSW50ZXJ2
YWxTaXplLmhlaWdodCgpOwotICAgIGlmIChtaW5ZIDwgbV9ib3VuZGluZ0JveC55KCkgfHwgbWF4
WSA+IG1fYm91bmRpbmdCb3gubWF4WSgpKQorCisgICAgaWYgKG1heFkgPiBtX2JvdW5kaW5nQm94
Lm1heFkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmVzdWx0ID0gbWluTG9naWNh
bEludGVydmFsVG9wOwotICAgIHJldHVybiB0cnVlOworICAgIGZsb2F0IGR4ID0gbWluTG9naWNh
bEludGVydmFsU2l6ZS53aWR0aCgpIC8gMjsKKyAgICBmbG9hdCBkeSA9IG1pbkxvZ2ljYWxJbnRl
cnZhbFNpemUuaGVpZ2h0KCkgLyAyOworICAgIFZlY3RvcjxPZmZzZXRQb2x5Z29uRWRnZT4gb2Zm
c2V0RWRnZXM7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZFZGdlcygp
OyArK2kpIHsKKyAgICAgICAgY29uc3QgRXhjbHVzaW9uUG9seWdvbkVkZ2UmIGVkZ2UgPSBlZGdl
QXQoaSk7CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleDEgPSBlZGdlLnZlcnRleDEo
KTsKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MiA9IGVkZ2UudmVydGV4MigpOwor
ICAgICAgICBWZWN0b3I8T2Zmc2V0UG9seWdvbkVkZ2U+IG9mZnNldEVkZ2VQYWlyOworCisgICAg
ICAgIGlmICh2ZXJ0ZXgyLnkoKSA+IHZlcnRleDEueSgpID8gdmVydGV4Mi54KCkgPj0gdmVydGV4
MS54KCkgOiB2ZXJ0ZXgxLngoKSA+PSB2ZXJ0ZXgyLngoKSkgeworICAgICAgICAgICAgb2Zmc2V0
RWRnZVBhaXIuYXBwZW5kKE9mZnNldFBvbHlnb25FZGdlKGVkZ2UsIEZsb2F0U2l6ZShkeCwgLWR5
KSkpOworICAgICAgICAgICAgb2Zmc2V0RWRnZVBhaXIuYXBwZW5kKE9mZnNldFBvbHlnb25FZGdl
KGVkZ2UsIEZsb2F0U2l6ZSgtZHgsIGR5KSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgb2Zmc2V0RWRnZVBhaXIuYXBwZW5kKE9mZnNldFBvbHlnb25FZGdlKGVkZ2UsIEZsb2F0U2l6
ZShkeCwgZHkpKSk7CisgICAgICAgICAgICBvZmZzZXRFZGdlUGFpci5hcHBlbmQoT2Zmc2V0UG9s
eWdvbkVkZ2UoZWRnZSwgRmxvYXRTaXplKC1keCwgLWR5KSkpOworICAgICAgICB9CisKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IG9mZnNldEVkZ2VQYWlyLnNpemUoKTsgKytqKQor
ICAgICAgICAgICAgaWYgKG9mZnNldEVkZ2VQYWlyW2pdLm1heFkoKSA+PSBtaW5ZKQorICAgICAg
ICAgICAgICAgIG9mZnNldEVkZ2VzLmFwcGVuZChvZmZzZXRFZGdlUGFpcltqXSk7CisgICAgfQor
CisgICAgb2Zmc2V0RWRnZXMuYXBwZW5kKE9mZnNldFBvbHlnb25FZGdlKCp0aGlzLCBtaW5Mb2dp
Y2FsSW50ZXJ2YWxUb3AsIEZsb2F0U2l6ZSgwLCBkeSkpKTsKKworICAgIEZsb2F0UG9pbnQgb2Zm
c2V0RWRnZXNJbnRlcnNlY3Rpb247CisgICAgRmxvYXRSZWN0IGZpcnN0Rml0UmVjdDsKKyAgICBi
b29sIGZpcnN0Rml0Rm91bmQgPSBmYWxzZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBvZmZzZXRFZGdlcy5zaXplKCkgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gaSArIDE7IGogPCBvZmZzZXRFZGdlcy5zaXplKCk7ICsraikgeworICAgICAgICAgICAgaWYg
KG9mZnNldEVkZ2VzW2ldLmludGVyc2VjdGlvbihvZmZzZXRFZGdlc1tqXSwgb2Zmc2V0RWRnZXNJ
bnRlcnNlY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgRmxvYXRQb2ludCBwb3RlbnRpYWxGaXJz
dEZpdExvY2F0aW9uKG9mZnNldEVkZ2VzSW50ZXJzZWN0aW9uLngoKSAtIGR4LCBvZmZzZXRFZGdl
c0ludGVyc2VjdGlvbi55KCkgLSBkeSk7CisgICAgICAgICAgICAgICAgRmxvYXRSZWN0IHBvdGVu
dGlhbEZpcnN0Rml0UmVjdChwb3RlbnRpYWxGaXJzdEZpdExvY2F0aW9uLCBtaW5Mb2dpY2FsSW50
ZXJ2YWxTaXplKTsKKyAgICAgICAgICAgICAgICBpZiAoKHBvdGVudGlhbEZpcnN0Rml0TG9jYXRp
b24ueSgpID49IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCkKKyAgICAgICAgICAgICAgICAgICAgJiYg
KCFmaXJzdEZpdEZvdW5kIHx8IGFib3ZlT3JUb1RoZUxlZnQocG90ZW50aWFsRmlyc3RGaXRSZWN0
LCBmaXJzdEZpdFJlY3QpKQorICAgICAgICAgICAgICAgICAgICAmJiBjb250YWlucyhvZmZzZXRF
ZGdlc0ludGVyc2VjdGlvbikKKyAgICAgICAgICAgICAgICAgICAgJiYgZmlyc3RGaXRSZWN0SW5Q
b2x5Z29uKHBvdGVudGlhbEZpcnN0Rml0UmVjdCwgb2Zmc2V0RWRnZXNbaV0uZWRnZUluZGV4KCks
IG9mZnNldEVkZ2VzW2pdLmVkZ2VJbmRleCgpKSkgeworICAgICAgICAgICAgICAgICAgICBmaXJz
dEZpdEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZmlyc3RGaXRSZWN0ID0gcG90
ZW50aWFsRmlyc3RGaXRSZWN0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChmaXJzdEZpdEZvdW5kKQorICAgICAgICByZXN1bHQg
PSBmaXJzdEZpdFJlY3QueSgpOworICAgIHJldHVybiBmaXJzdEZpdEZvdW5kOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RXhjbHVzaW9uUG9seWdvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBv
bHlnb24uaAppbmRleCBjOTczYzM1Li41MzNlNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FeGNsdXNpb25Qb2x5Z29uLmgKQEAgLTYyLDYgKzYyLDggQEAgcHVibGljOgogICAgIGNv
bnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlJiBlZGdlQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fZWRnZXNbaW5kZXhdOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZFZGdlcygpIGNv
bnN0IHsgcmV0dXJuIG1fZWRnZXMuc2l6ZSgpOyB9CiAKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0
IEZsb2F0UG9pbnQmKSBjb25zdDsKKwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHNoYXBlTG9naWNh
bEJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ib3VuZGluZ0JveDsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9lbXB0
eTsgfQogICAgIHZpcnR1YWwgdm9pZCBnZXRFeGNsdWRlZEludGVydmFscyhmbG9hdCBsb2dpY2Fs
VG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0IE9WRVJSSURFOwpA
QCAtNzIsNiArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZVhJbnRlcnNlY3Rpb25z
KGZsb2F0IHksIGJvb2wgaXNNaW5ZLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JikgY29uc3Q7
CiAgICAgdm9pZCBjb21wdXRlRWRnZUludGVyc2VjdGlvbnMoZmxvYXQgbWluWSwgZmxvYXQgbWF4
WSwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYpIGNvbnN0OwogICAgIHVuc2lnbmVkIGZpbmRO
ZXh0RWRnZVZlcnRleEluZGV4KHVuc2lnbmVkIHZlcnRleEluZGV4MSwgYm9vbCBjbG9ja3dpc2Up
IGNvbnN0OworICAgIGJvb2wgZmlyc3RGaXRSZWN0SW5Qb2x5Z29uKGNvbnN0IEZsb2F0UmVjdCYs
IHVuc2lnbmVkIG9mZnNldEVkZ2VJbmRleDEsIHVuc2lnbmVkIG9mZnNldEVkZ2VJbmRleCkgY29u
c3Q7CiAKICAgICB0eXBlZGVmIFBPREludGVydmFsPGZsb2F0LCBFeGNsdXNpb25Qb2x5Z29uRWRn
ZSo+IEVkZ2VJbnRlcnZhbDsKICAgICB0eXBlZGVmIFBPREludGVydmFsVHJlZTxmbG9hdCwgRXhj
bHVzaW9uUG9seWdvbkVkZ2UqPiBFZGdlSW50ZXJ2YWxUcmVlOwpAQCAtOTUsNiArOTgsOSBAQCBw
dWJsaWM6CiAgICAgZmxvYXQgbWluWSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWluKHZlcnRleDEo
KS55KCksIHZlcnRleDIoKS55KCkpOyB9CiAgICAgZmxvYXQgbWF4WCgpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6bWF4KHZlcnRleDEoKS54KCksIHZlcnRleDIoKS54KCkpOyB9CiAgICAgZmxvYXQgbWF4
WSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4KHZlcnRleDEoKS55KCksIHZlcnRleDIoKS55KCkp
OyB9CisKKyAgICBib29sIG92ZXJsYXBzUmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAg
ICBib29sIGludGVyc2VjdGlvbihjb25zdCBWZXJ0ZXhQYWlyJiwgRmxvYXRQb2ludCYpIGNvbnN0
OwogfTsKIAogLy8gRWRnZUludGVydmFsVHJlZSBub2RlcyBzdG9yZSBtaW5ZLCBtYXhZLCBhbmQg
YSAoIlVzZXJEYXRhIikgcG9pbnRlciB0byBhbiBFeGNsdXNpb25Qb2x5Z29uRWRnZS4gRWRnZSB2
ZXJ0ZXgKQEAgLTE1MCw2ICsxNTYsMzIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmFsdWVUb1N0cmlu
ZzxFeGNsdXNpb25Qb2x5Z29uRWRnZSo+IHsKIH07CiAjZW5kaWYKIAorY2xhc3MgT2Zmc2V0UG9s
eWdvbkVkZ2UgOiBwdWJsaWMgVmVydGV4UGFpciB7CitwdWJsaWM6CisgICAgT2Zmc2V0UG9seWdv
bkVkZ2UoY29uc3QgRXhjbHVzaW9uUG9seWdvbkVkZ2UmIGVkZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
b2Zmc2V0KQorICAgICAgICA6IG1fdmVydGV4MShlZGdlLnZlcnRleDEoKSArIG9mZnNldCkKKyAg
ICAgICAgLCBtX3ZlcnRleDIoZWRnZS52ZXJ0ZXgyKCkgKyBvZmZzZXQpCisgICAgICAgICwgbV9l
ZGdlSW5kZXgoZWRnZS5lZGdlSW5kZXgoKSkKKyAgICB7CisgICAgfQorCisgICAgT2Zmc2V0UG9s
eWdvbkVkZ2UoY29uc3QgRXhjbHVzaW9uUG9seWdvbiYgcG9seWdvbiwgZmxvYXQgbWluTG9naWNh
bEludGVydmFsVG9wLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCkKKyAgICAgICAgOiBtX3ZlcnRl
eDEoRmxvYXRQb2ludChwb2x5Z29uLnNoYXBlTG9naWNhbEJvdW5kaW5nQm94KCkueCgpLCBtaW5M
b2dpY2FsSW50ZXJ2YWxUb3ApICsgb2Zmc2V0KQorICAgICAgICAsIG1fdmVydGV4MihGbG9hdFBv
aW50KHBvbHlnb24uc2hhcGVMb2dpY2FsQm91bmRpbmdCb3goKS5tYXhYKCksIG1pbkxvZ2ljYWxJ
bnRlcnZhbFRvcCkgKyBvZmZzZXQpCisgICAgICAgICwgbV9lZGdlSW5kZXgocG9seWdvbi5udW1i
ZXJPZkVkZ2VzKCkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgY29uc3QgRmxvYXRQb2lu
dCYgdmVydGV4MSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdmVydGV4MTsgfQorICAgIHZp
cnR1YWwgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IG1fdmVydGV4MjsgfQorICAgIHVuc2lnbmVkIGVkZ2VJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZWRnZUluZGV4OyB9CisKK3ByaXZhdGU6CisgICAgRmxvYXRQb2ludCBtX3ZlcnRleDE7CisgICAg
RmxvYXRQb2ludCBtX3ZlcnRleDI7CisgICAgdW5zaWduZWQgbV9lZGdlSW5kZXg7Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFeGNsdXNpb25Qb2x5Z29uX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>