<?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>120381</bug_id>
          
          <creation_ts>2013-08-27 16:02:03 -0700</creation_ts>
          <short_desc>[CSS Shapes] Redefine the ShapeIntervals class as a template</short_desc>
          <delta_ts>2013-08-30 11:57:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>120211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Muller">giles_joplin</reporter>
          <assigned_to name="Hans Muller">giles_joplin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>921719</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-27 16:02:03 -0700</bug_when>
    <thetext>To enable PolygonShape and RasterShape to use the ShapeInterval set operations we need to support ShapeInterval&lt;float&gt; and ShapeInterval&lt;int&gt;.

See https://bugs.webkit.org/show_bug.cgi?id=120211 for more information .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922209</commentid>
    <comment_count>1</comment_count>
      <attachid>209924</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-28 15:16:19 -0700</bug_when>
    <thetext>Created attachment 209924
Patch

The existing ShapeIntervals class has been converted into a template whose type specifies the type of the interval&apos;s x1 and x2 horizontal endpoints (formerly float). There were several other minor changes, all in the realm of refactoring:

- The original type was a struct with public x1 and x2 fields. It&apos;s now a class with x1 and x2 accessors. ASSERTS are now used to maintain the x2 &gt;= x1 invariant.  In the original code the invariant was not checked.

- The logical comparison operators have been overloaded for ShapeInterval. This obviates the IntervalX1Comparator class which has been removed.

- The names of the global ShapeInterval Vector set operation methods have been changed to reflect the fact that they&apos;re now members of the template class, rather than globals.

PolygonShape.cpp depended on the ShapeInterval class. In the one or two places where an interval&apos;s x1 or x1 fields had been set explicitly, ShapeInterval::set() is now used to set both fields. This also enables the invariant check mentioned earlier. The other changes to this class are syntatic, to account for the ShapeInterval class&apos;s changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922212</commentid>
    <comment_count>2</comment_count>
      <attachid>209924</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-28 15:19:53 -0700</bug_when>
    <thetext>Comment on attachment 209924
Patch

Attachment 209924 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1630015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922221</commentid>
    <comment_count>3</comment_count>
      <attachid>209926</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-28 15:38:11 -0700</bug_when>
    <thetext>Created attachment 209926
Patch

Updated Target.pri for Qt build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922227</commentid>
    <comment_count>4</comment_count>
      <attachid>209926</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-28 16:16:40 -0700</bug_when>
    <thetext>Comment on attachment 209926
Patch

Attachment 209926 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/1628408</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922252</commentid>
    <comment_count>5</comment_count>
      <attachid>209933</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-28 16:48:10 -0700</bug_when>
    <thetext>Created attachment 209933
Patch.

Hopefully correct the win build problem by removing the ShapeInterval.cpp entry from Source/WebCore/WebCore.vcxproj.filters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922462</commentid>
    <comment_count>6</comment_count>
      <attachid>209980</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-29 07:55:18 -0700</bug_when>
    <thetext>Created attachment 209980
Patch

Restored the three mysterious bytes at the top of WebCore.vcxproj.filters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922935</commentid>
    <comment_count>7</comment_count>
      <attachid>209980</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-08-30 07:18:55 -0700</bug_when>
    <thetext>Comment on attachment 209980
Patch

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

Thanks. There are a couple of changes that need to be done.

&gt; Source/WebCore/rendering/shapes/PolygonShape.cpp:228
&gt; +static inline bool appendIntervalX(float x, bool inside, Vector&lt;FloatShapeInterval&gt;&amp; result)

nit: might look better if you typedef Vector&lt;FloatShapeInterval&gt; to FloatShapeIntervals. Maybe next patch as there were already a couple of changes in this patch.

&gt; Source/WebCore/rendering/shapes/PolygonShape.cpp:233
&gt; +        result.last().set(result.last().x1(), x);

nit: Why not just rersult.last().setX2(x) ?

&gt; Source/WebCore/rendering/shapes/PolygonShape.cpp:400
&gt; +        FloatShapeInterval interval = includedIntervals[i];

nit: you may want to use const FloatShapeInterval&amp; inteval = includedIntervals[i]; to avoid the copy.

&gt; Source/WebCore/rendering/shapes/ShapeInterval.h:62
&gt; +    bool intersect(const ShapeInterval&lt;T&gt;&amp; i, ShapeInterval&lt;T&gt;&amp; rv) const

Use full names for the parameters.

I would also convert it to something like this:
if (a.overalps(b)) {
    ShapeInterval&lt;T&gt; intersection = a.intersect(b); // the assert inside the constructor will prevent the usage when they don&apos;t overlap.
}

&gt; Source/WebCore/rendering/shapes/ShapeInterval.h:64
&gt; +        if (x2() &lt; i.x1() || x1() &gt; i.x2())

it looks like this is just if (!overlaps(i)) return false. That would be less code to read.

&gt; Source/WebCore/rendering/shapes/ShapeInterval.h:72
&gt; +    typedef Vector&lt;ShapeInterval&lt;T&gt; &gt; ShapeIntervalVector;
&gt; +    typedef typename Vector&lt;ShapeInterval&lt;T&gt; &gt;::const_iterator const_iterator;
&gt; +    typedef typename Vector&lt;ShapeInterval&lt;T&gt; &gt;::iterator iterator;

You can typedef ShapeInterval&lt;T&gt; to avoid moving T all over the place.

&gt; Source/WebCore/rendering/shapes/ShapeInterval.h:104
&gt; +            }

nit: This } is missplaced.

&gt; Source/WebCore/rendering/shapes/ShapeInterval.h:173
&gt; +                    rv.insert(i1, ShapeInterval(interval1.x1(), interval2.x1()));

nit: You may want to use the appropriate type here. C++ matched it for you, but I would rather use the typedef for ShapeInterval&lt;T&gt; to make it look the same way.

&gt; Source/WebCore/rendering/shapes/ShapeInterval.h:197
&gt; +template&lt;typename T&gt; inline bool operator==(const ShapeInterval&lt;T&gt;&amp; lhs, const ShapeInterval&lt;T&gt;&amp; rhs) { return lhs.x1() == rhs.x1() &amp;&amp; lhs.x2() == rhs.x2(); }
&gt; +template&lt;typename T&gt; inline bool operator!=(const ShapeInterval&lt;T&gt;&amp; lhs, const ShapeInterval&lt;T&gt;&amp; rhs) { return !operator==(lhs, rhs); }
&gt; +template&lt;typename T&gt; inline bool operator&lt; (const ShapeInterval&lt;T&gt;&amp; lhs, const ShapeInterval&lt;T&gt;&amp; rhs) { return lhs.x1() &lt; rhs.x1(); }
&gt; +template&lt;typename T&gt; inline bool operator&gt; (const ShapeInterval&lt;T&gt;&amp; lhs, const ShapeInterval&lt;T&gt;&amp; rhs) { return operator&lt; (rhs, lhs); }
&gt; +template&lt;typename T&gt; inline bool operator&lt;=(const ShapeInterval&lt;T&gt;&amp; lhs, const ShapeInterval&lt;T&gt;&amp; rhs) { return !operator&gt; (lhs, rhs); }
&gt; +template&lt;typename T&gt; inline bool operator&gt;=(const ShapeInterval&lt;T&gt;&amp; lhs, const ShapeInterval&lt;T&gt;&amp; rhs) { return !operator&lt; (lhs, rhs); }

You can keep these inside the class definition to avoid all the template&lt;&gt; stuff. Just compare &quot;this&quot; and &quot;other&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922986</commentid>
    <comment_count>8</comment_count>
      <attachid>209980</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-08-30 09:11:50 -0700</bug_when>
    <thetext>Comment on attachment 209980
Patch

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

&gt; Source/WebCore/rendering/shapes/ShapeInterval.h:102
&gt; +            if (interval)

I wonder when is the case when you don&apos;t have an interval != 0 here. &quot;v&quot; has the size of v1 + v2, which are both non-zero, so it should always have one.

Maybe you could rewrite the loop to start from 1 instead and make sure that interval always starts at v[0].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923066</commentid>
    <comment_count>9</comment_count>
      <attachid>210132</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-30 10:47:43 -0700</bug_when>
    <thetext>Created attachment 210132
Patch

I&apos;ve made all of the suggested changes, except the ones that affect code which is just going to be replaced by https://bugs.webkit.org/show_bug.cgi?id=120439.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923075</commentid>
    <comment_count>10</comment_count>
      <attachid>210134</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-30 10:58:49 -0700</bug_when>
    <thetext>Created attachment 210134
Patch

Added one more requested change that I&apos;d missed in the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923099</commentid>
    <comment_count>11</comment_count>
      <attachid>210134</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-08-30 11:19:50 -0700</bug_when>
    <thetext>Comment on attachment 210134
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923119</commentid>
    <comment_count>12</comment_count>
      <attachid>210134</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-30 11:57:49 -0700</bug_when>
    <thetext>Comment on attachment 210134
Patch

Clearing flags on attachment: 210134

Committed r154904: &lt;http://trac.webkit.org/changeset/154904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923120</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-30 11:57:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209924</attachid>
            <date>2013-08-28 15:16:19 -0700</date>
            <delta_ts>2013-08-28 15:38:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>26689</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmY0NDI3Ny4uYWNmZmJlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMTYsNyArMjIxNiw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNw
cAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcAotICAgIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0
c2lkZUluZm8uY3BwCiAKICAgICByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNzJjYjllNC4uNDVjYWE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisy
MDEzLTA4LTI4ICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhcGVzXSBSZWRlZmluZSB0aGUgU2hhcGVJbnRlcnZhbHMgY2xhc3MgYXMgYSB0ZW1wbGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCB0aGlzIHdhcyBqdXN0IGFuIGludGVybmFsIHJlZmFjdG9yaW5nLgorCisgICAgICAg
IFRoZSBleGlzdGluZyBTaGFwZUludGVydmFscyBjbGFzcyBoYXMgYmVlbiBjb252ZXJ0ZWQgaW50
byBhIHRlbXBsYXRlIHdob3NlCisgICAgICAgIHR5cGUgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRo
ZSBpbnRlcnZhbCdzIHgxIGFuZCB4MiBob3Jpem9udGFsIGVuZHBvaW50cworICAgICAgICAoZm9y
bWVybHkgZmxvYXQpLiBUaGVyZSB3ZXJlIHNldmVyYWwgb3RoZXIgbWlub3IgY2hhbmdlcywgYWxs
IGluIHRoZSByZWFsbQorICAgICAgICBvZiByZWZhY3RvcmluZzoKKworICAgICAgICAtIFRoZSBv
cmlnaW5hbCB0eXBlIHdhcyBhIHN0cnVjdCB3aXRoIHB1YmxpYyB4MSBhbmQgeDIgZmllbGRzLiBJ
dCdzIG5vdyBhIGNsYXNzCisgICAgICAgIHdpdGggeDEgYW5kIHgyIGFjY2Vzc29ycy4gQVNTRVJU
UyBhcmUgbm93IHVzZWQgdG8gbWFpbnRhaW4gdGhlIHgyID49IHgxIGludmFyaWFudC4KKyAgICAg
ICAgSW4gdGhlIG9yaWdpbmFsIGNvZGUgdGhlIGludmFyaWFudCB3YXMgbm90IGNoZWNrZWQuCisK
KyAgICAgICAgLSBUaGUgbG9naWNhbCBjb21wYXJpc29uIG9wZXJhdG9ycyBoYXZlIGJlZW4gb3Zl
cmxvYWRlZCBmb3IgU2hhcGVJbnRlcnZhbC4KKyAgICAgICAgVGhpcyBvYnZpYXRlcyB0aGUgSW50
ZXJ2YWxYMUNvbXBhcmF0b3IgY2xhc3Mgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZC4KKworICAgICAg
ICAtIFRoZSBuYW1lcyBvZiB0aGUgZ2xvYmFsIFNoYXBlSW50ZXJ2YWwgVmVjdG9yIHNldCBvcGVy
YXRpb24gbWV0aG9kcyBoYXZlIGJlZW4KKyAgICAgICAgY2hhbmdlZCB0byByZWZsZWN0IHRoZSBm
YWN0IHRoYXQgdGhleSdyZSBub3cgbWVtYmVycyBvZiB0aGUgdGVtcGxhdGUgY2xhc3MsCisgICAg
ICAgIHJhdGhlciB0aGFuIGdsb2JhbHMuCisKKyAgICAgICAgUG9seWdvblNoYXBlLmNwcCBkZXBl
bmRlZCBvbiB0aGUgU2hhcGVJbnRlcnZhbCBjbGFzcy4gSW4gdGhlIG9uZSBvciB0d28gcGxhY2Vz
CisgICAgICAgIHdoZXJlIGFuIGludGVydmFsJ3MgeDEgb3IgeDEgZmllbGRzIGhhZCBiZWVuIHNl
dCBleHBsaWNpdGx5LCBTaGFwZUludGVydmFsOjpzZXQoKQorICAgICAgICBpcyBub3cgdXNlZCB0
byBzZXQgYm90aCBmaWVsZHMuIFRoaXMgYWxzbyBlbmFibGVzIHRoZSBpbnZhcmlhbnQgY2hlY2sg
bWVudGlvbmVkCisgICAgICAgIGVhcmxpZXIuIFRoZSBvdGhlciBjaGFuZ2VzIHRvIHRoaXMgY2xh
c3MgYXJlIHN5bnRhdGljLCB0byBhY2NvdW50IGZvciB0aGUgU2hhcGVJbnRlcnZhbAorICAgICAg
ICBjbGFzcydzIGNoYW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFwcGVuZEludGVydmFsWCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlWEludGVy
c2VjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9q
ZWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQb2x5Z29uU2hhcGU6OmdldEV4Y2x1ZGVkSW50
ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvbHlnb25TaGFwZTo6Z2V0SW5jbHVkZWRJbnRl
cnZhbHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaDogVGhlIGVudGlyZSBpbXBsZW1l
bnRhdGlvbiBpcyBub3cgaGVyZS4gCisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjpT
aGFwZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OngxKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OngyKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXBlSW50ZXJ2YWw6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjpvdmVy
bGFwcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjppbnRlcnNlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcGVJbnRlcnZhbDo6c29ydFZlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cGVJbnRlcnZhbDo6aW50ZXJzZWN0VmVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUlu
dGVydmFsOjpzdWJ0cmFjdFZlY3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPCApOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I+ICk6CisgICAgICAgIChXZWJDb3Jl
OjpvcGVyYXRvcjw9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPj0pOgorCiAyMDEzLTA4
LTI4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgaXMgcGFpbnRpbmcgdmlkZW8gZnJhbWVz
IHVuZGVyIHRoZSB2aWRlbyBsYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
NmQ2NGNhOS4uM2MwMmRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NTc1
LDcgKzQ1NzUsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVJbmZvLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbnNpZGVJbmZvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZUluc2lkZUluZm8uaCBcCi0JU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZUludGVydmFsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZUludGVydmFsLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCmluZGV4IGU0MjBhYzMuLjVkMjkzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTA5OTksNyArMTA5OTksNiBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFwZS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcU2hh
cGVJbnNpZGVJbmZvLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmlu
Z1xzaGFwZXNcU2hhcGVJbnRlcnZhbC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlT3V0c2lkZUluZm8uY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdQYXRoRGF0YS5jcHAiPgogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMzRmYWRkLi5h
NjllYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC01ODU3LDcgKzU4NTcsNiBAQAogCQlGRDQ1QTk1OTE3NUQ0MTcxMDBDMjFF
QzggLyogUG9seWdvblNoYXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZEMDhBODdBMTc1RDM5MjYwMDJDRDM2MCAvKiBQb2x5Z29uU2hhcGUuY3Bw
ICovOyB9OwogCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0Mx
NzVEMzkyNjAwMkNEMzYwIC8qIFJlY3RhbmdsZVNoYXBlLmNwcCAqLzsgfTsKIAkJRkQ0NUE5NUIx
NzVENDFFRTAwQzIxRUM4IC8qIFNoYXBlSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDhBODg1MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFw
ZUludGVydmFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJRkQ0NUE5NUMxNzVENDIwRDAwQzIxRUM4IC8qIFNoYXBlSW50ZXJ2YWwuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4ODQxNzVEMzky
NjAwMkNEMzYwIC8qIFNoYXBlSW50ZXJ2YWwuY3BwICovOyB9OwogCQlGRDUzNzM1MjEzN0I2NTE4
MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkQ1MzczNTAxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCAq
LzsgfTsKIAkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDUzNzM1MTEzN0I2NTE4MDAw
MDhEQ0UgLyogWmVyb1BvbGUuaCAqLzsgfTsKIAkJRkQ1MzczNTYxMzdCNjUzQjAwMDA4RENFIC8q
IER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDUzNzM1NDEzN0I2NTNCMDAwMDhEQ0UgLyogRHluYW1pY3ND
b21wcmVzc29yS2VybmVsLmNwcCAqLzsgfTsKQEAgLTEyNTUzLDcgKzEyNTUyLDYgQEAKIAkJRkQw
OEE4ODExNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFwZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkQwOEE4ODIxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW5zaWRlSW5mby5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFwZUluc2lkZUluZm8uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRDA4QTg4MzE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVJ
bnNpZGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXBlSW5zaWRl
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRDA4QTg4NDE3NUQzOTI2MDAy
Q0QzNjAgLyogU2hhcGVJbnRlcnZhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaGFwZUludGVydmFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkQwOEE4ODUxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW50ZXJ2YWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcGVJbnRlcnZhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRDA4QTg4NjE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVPdXRzaWRlSW5mby5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFwZU91dHNpZGVJbmZv
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwOEE4ODcxNzVEMzkyNjAwMkNE
MzYwIC8qIFNoYXBlT3V0c2lkZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2hhcGVPdXRzaWRlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1
MzYsNyArMjA1MzQsNiBAQAogCQkJCUZEMDhBODgxMTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUlu
Zm8uaCAqLywKIAkJCQlGRDA4QTg4MjE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVJbnNpZGVJbmZv
LmNwcCAqLywKIAkJCQlGRDA4QTg4MzE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVJbnNpZGVJbmZv
LmggKi8sCi0JCQkJRkQwOEE4ODQxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW50ZXJ2YWwuY3Bw
ICovLAogCQkJCUZEMDhBODg1MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUludGVydmFsLmggKi8s
CiAJCQkJRkQwOEE4ODYxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlT3V0c2lkZUluZm8uY3BwICov
LAogCQkJCUZEMDhBODg3MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZU91dHNpZGVJbmZvLmggKi8s
CkBAIC0yNjM4Niw3ICsyNjM4Myw2IEBACiAJCQkJRkQ0NUE5NTMxNzVEM0ZCODAwQzIxRUM4IC8q
IFNoYXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENDVBOTU0MTc1RDNGQjgwMEMyMUVDOCAv
KiBTaGFwZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ0NUE5NTUxNzVEM0ZCODAwQzIx
RUM4IC8qIFNoYXBlSW5zaWRlSW5mby5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRDQ1QTk1QzE3
NUQ0MjBEMDBDMjFFQzggLyogU2hhcGVJbnRlcnZhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RDQ1QTk1NjE3NUQzRkI4MDBDMjFFQzggLyogU2hhcGVPdXRzaWRlSW5mby5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTRBOTU0RDBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxMkREOEUzMEQ5MUUyQjQwMDBGODlFRSAvKiBTaGFyZWRCdWZm
ZXJDRi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUG9seWdvblNoYXBlLmNwcAppbmRleCBlMjEyNGZkLi5jMmRlYjNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUG9seWdvblNoYXBlLmgi
CiAKKyNpbmNsdWRlICJTaGFwZUludGVydmFsLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjI0LDEyICsyMjUsMTIgQEAgc3RhdGljIGlu
bGluZSBib29sIGdldFZlcnRleEludGVyc2VjdGlvblZlcnRpY2VzKGNvbnN0IEVkZ2VJbnRlcnNl
Y3Rpb24mIGludGVyc2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBib29s
IGFwcGVuZEludGVydmFsWChmbG9hdCB4LCBib29sIGluc2lkZSwgVmVjdG9yPFNoYXBlSW50ZXJ2
YWw+JiByZXN1bHQpCitzdGF0aWMgaW5saW5lIGJvb2wgYXBwZW5kSW50ZXJ2YWxYKGZsb2F0IHgs
IGJvb2wgaW5zaWRlLCBWZWN0b3I8RmxvYXRTaGFwZUludGVydmFsPiYgcmVzdWx0KQogewogICAg
IGlmICghaW5zaWRlKQotICAgICAgICByZXN1bHQuYXBwZW5kKFNoYXBlSW50ZXJ2YWwoeCkpOwor
ICAgICAgICByZXN1bHQuYXBwZW5kKEZsb2F0U2hhcGVJbnRlcnZhbCh4LCB4KSk7CiAgICAgZWxz
ZQotICAgICAgICByZXN1bHRbcmVzdWx0LnNpemUoKSAtIDFdLngyID0geDsKKyAgICAgICAgcmVz
dWx0Lmxhc3QoKS5zZXQocmVzdWx0Lmxhc3QoKS54MSgpLCB4KTsKIAogICAgIHJldHVybiAhaW5z
aWRlOwogfQpAQCAtMjQxLDcgKzI0Miw3IEBAIHN0YXRpYyBib29sIGNvbXBhcmVFZGdlSW50ZXJz
ZWN0aW9uWChjb25zdCBFZGdlSW50ZXJzZWN0aW9uJiBpbnRlcnNlY3Rpb24xLCBjb25zCiAgICAg
cmV0dXJuICh4MSA9PSB4MikgPyBpbnRlcnNlY3Rpb24xLnR5cGUgPCBpbnRlcnNlY3Rpb24yLnR5
cGUgOiB4MSA8IHgyOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlWEludGVyc2VjdGlvbnMoY29u
c3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCB5LCBib29sIGlzTWluWSwgVmVjdG9yPFNo
YXBlSW50ZXJ2YWw+JiByZXN1bHQpCitzdGF0aWMgdm9pZCBjb21wdXRlWEludGVyc2VjdGlvbnMo
Y29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCB5LCBib29sIGlzTWluWSwgVmVjdG9y
PEZsb2F0U2hhcGVJbnRlcnZhbD4mIHJlc3VsdCkKIHsKICAgICBWZWN0b3I8Y29uc3QgRmxvYXRQ
b2x5Z29uRWRnZSo+IGVkZ2VzOwogICAgIGlmICghcG9seWdvbi5vdmVybGFwcGluZ0VkZ2VzKHks
IHksIGVkZ2VzKSkKQEAgLTMxMSw3ICszMTIsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlWEludGVy
c2VjdGlvbnMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCB5LCBib29sIGlzTQog
ICAgIH0KIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9qZWN0aW9u
cyhjb25zdCBGbG9hdFBvbHlnb24mIHBvbHlnb24sIGZsb2F0IHkxLCBmbG9hdCB5MiwgVmVjdG9y
PFNoYXBlSW50ZXJ2YWw+JiByZXN1bHQpCitzdGF0aWMgdm9pZCBjb21wdXRlT3ZlcmxhcHBpbmdF
ZGdlWFByb2plY3Rpb25zKGNvbnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgeTEsIGZs
b2F0IHkyLCBWZWN0b3I8RmxvYXRTaGFwZUludGVydmFsPiYgcmVzdWx0KQogewogICAgIFZlY3Rv
cjxjb25zdCBGbG9hdFBvbHlnb25FZGdlKj4gZWRnZXM7CiAgICAgaWYgKCFwb2x5Z29uLm92ZXJs
YXBwaW5nRWRnZXMoeTEsIHkyLCBlZGdlcykpCkBAIC0zMzksMTAgKzM0MCwxMCBAQCBzdGF0aWMg
dm9pZCBjb21wdXRlT3ZlcmxhcHBpbmdFZGdlWFByb2plY3Rpb25zKGNvbnN0IEZsb2F0UG9seWdv
biYgcG9seWdvbiwgZmxvYQogICAgICAgICAgICAgc3RkOjpzd2FwKHgxLCB4Mik7CiAKICAgICAg
ICAgaWYgKHgyID4geDEpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFNoYXBlSW50ZXJ2YWwo
eDEsIHgyKSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEZsb2F0U2hhcGVJbnRlcnZhbCh4
MSwgeDIpKTsKICAgICB9CiAKLSAgICBzb3J0U2hhcGVJbnRlcnZhbHMocmVzdWx0KTsKKyAgICBG
bG9hdFNoYXBlSW50ZXJ2YWw6OnNvcnRWZWN0b3IocmVzdWx0KTsKIH0KIAogdm9pZCBQb2x5Z29u
U2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYgcmVzdWx0KSBjb25zdApAQCAtMzU0LDIy
ICszNTUsMjIgQEAgdm9pZCBQb2x5Z29uU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91
dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICBmbG9hdCB5MSA9IGxvZ2lj
YWxUb3A7CiAgICAgZmxvYXQgeTIgPSBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodDsKIAotICAg
IFZlY3RvcjxTaGFwZUludGVydmFsPiB5MVhJbnRlcnZhbHMsIHkyWEludGVydmFsczsKKyAgICBW
ZWN0b3I8RmxvYXRTaGFwZUludGVydmFsPiB5MVhJbnRlcnZhbHMsIHkyWEludGVydmFsczsKICAg
ICBjb21wdXRlWEludGVyc2VjdGlvbnMocG9seWdvbiwgeTEsIHRydWUsIHkxWEludGVydmFscyk7
CiAgICAgY29tcHV0ZVhJbnRlcnNlY3Rpb25zKHBvbHlnb24sIHkyLCBmYWxzZSwgeTJYSW50ZXJ2
YWxzKTsKIAotICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiBtZXJnZWRJbnRlcnZhbHM7Ci0gICAg
bWVyZ2VTaGFwZUludGVydmFscyh5MVhJbnRlcnZhbHMsIHkyWEludGVydmFscywgbWVyZ2VkSW50
ZXJ2YWxzKTsKKyAgICBWZWN0b3I8RmxvYXRTaGFwZUludGVydmFsPiBtZXJnZWRJbnRlcnZhbHM7
CisgICAgRmxvYXRTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMoeTFYSW50ZXJ2YWxzLCB5MlhJ
bnRlcnZhbHMsIG1lcmdlZEludGVydmFscyk7CiAKLSAgICBWZWN0b3I8U2hhcGVJbnRlcnZhbD4g
ZWRnZUludGVydmFsczsKKyAgICBWZWN0b3I8RmxvYXRTaGFwZUludGVydmFsPiBlZGdlSW50ZXJ2
YWxzOwogICAgIGNvbXB1dGVPdmVybGFwcGluZ0VkZ2VYUHJvamVjdGlvbnMocG9seWdvbiwgeTEs
IHkyLCBlZGdlSW50ZXJ2YWxzKTsKIAotICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiBleGNsdWRl
ZEludGVydmFsczsKLSAgICBtZXJnZVNoYXBlSW50ZXJ2YWxzKG1lcmdlZEludGVydmFscywgZWRn
ZUludGVydmFscywgZXhjbHVkZWRJbnRlcnZhbHMpOworICAgIFZlY3RvcjxGbG9hdFNoYXBlSW50
ZXJ2YWw+IGV4Y2x1ZGVkSW50ZXJ2YWxzOworICAgIEZsb2F0U2hhcGVJbnRlcnZhbDo6dW5pdGVW
ZWN0b3JzKG1lcmdlZEludGVydmFscywgZWRnZUludGVydmFscywgZXhjbHVkZWRJbnRlcnZhbHMp
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4Y2x1ZGVkSW50ZXJ2YWxzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIFNoYXBlSW50ZXJ2YWwgaW50ZXJ2YWwgPSBleGNsdWRlZEludGVy
dmFsc1tpXTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5lU2VnbWVudChpbnRlcnZhbC54MSwg
aW50ZXJ2YWwueDIpKTsKKyAgICAgICAgRmxvYXRTaGFwZUludGVydmFsIGludGVydmFsID0gZXhj
bHVkZWRJbnRlcnZhbHNbaV07CisgICAgICAgIHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoaW50
ZXJ2YWwueDEoKSwgaW50ZXJ2YWwueDIoKSkpOwogICAgIH0KIH0KIApAQCAtMzgyLDIyICszODMs
MjIgQEAgdm9pZCBQb2x5Z29uU2hhcGU6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQg
bG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICBmbG9hdCB5MSA9IGxvZ2ljYWxUb3A7
CiAgICAgZmxvYXQgeTIgPSBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodDsKIAotICAgIFZlY3Rv
cjxTaGFwZUludGVydmFsPiB5MVhJbnRlcnZhbHMsIHkyWEludGVydmFsczsKKyAgICBWZWN0b3I8
RmxvYXRTaGFwZUludGVydmFsPiB5MVhJbnRlcnZhbHMsIHkyWEludGVydmFsczsKICAgICBjb21w
dXRlWEludGVyc2VjdGlvbnMocG9seWdvbiwgeTEsIHRydWUsIHkxWEludGVydmFscyk7CiAgICAg
Y29tcHV0ZVhJbnRlcnNlY3Rpb25zKHBvbHlnb24sIHkyLCBmYWxzZSwgeTJYSW50ZXJ2YWxzKTsK
IAotICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiBjb21tb25JbnRlcnZhbHM7Ci0gICAgaW50ZXJz
ZWN0U2hhcGVJbnRlcnZhbHMoeTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZhbHMsIGNvbW1vbkludGVy
dmFscyk7CisgICAgVmVjdG9yPEZsb2F0U2hhcGVJbnRlcnZhbD4gY29tbW9uSW50ZXJ2YWxzOwor
ICAgIEZsb2F0U2hhcGVJbnRlcnZhbDo6aW50ZXJzZWN0VmVjdG9ycyh5MVhJbnRlcnZhbHMsIHky
WEludGVydmFscywgY29tbW9uSW50ZXJ2YWxzKTsKIAotICAgIFZlY3RvcjxTaGFwZUludGVydmFs
PiBlZGdlSW50ZXJ2YWxzOworICAgIFZlY3RvcjxGbG9hdFNoYXBlSW50ZXJ2YWw+IGVkZ2VJbnRl
cnZhbHM7CiAgICAgY29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9qZWN0aW9ucyhwb2x5Z29uLCB5
MSwgeTIsIGVkZ2VJbnRlcnZhbHMpOwogCi0gICAgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+IGluY2x1
ZGVkSW50ZXJ2YWxzOwotICAgIHN1YnRyYWN0U2hhcGVJbnRlcnZhbHMoY29tbW9uSW50ZXJ2YWxz
LCBlZGdlSW50ZXJ2YWxzLCBpbmNsdWRlZEludGVydmFscyk7CisgICAgVmVjdG9yPEZsb2F0U2hh
cGVJbnRlcnZhbD4gaW5jbHVkZWRJbnRlcnZhbHM7CisgICAgRmxvYXRTaGFwZUludGVydmFsOjpz
dWJ0cmFjdFZlY3RvcnMoY29tbW9uSW50ZXJ2YWxzLCBlZGdlSW50ZXJ2YWxzLCBpbmNsdWRlZElu
dGVydmFscyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5jbHVkZWRJbnRlcnZh
bHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgU2hhcGVJbnRlcnZhbCBpbnRlcnZhbCA9IGluY2x1
ZGVkSW50ZXJ2YWxzW2ldOwotICAgICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KGludGVy
dmFsLngxLCBpbnRlcnZhbC54MikpOworICAgICAgICBGbG9hdFNoYXBlSW50ZXJ2YWwgaW50ZXJ2
YWwgPSBpbmNsdWRlZEludGVydmFsc1tpXTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5lU2Vn
bWVudChpbnRlcnZhbC54MSgpLCBpbnRlcnZhbC54MigpKSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaAppbmRleCA2MjhhYzNh
Li5lZDY5ZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Bv
bHlnb25TaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdv
blNoYXBlLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9seWdvbi5oIgog
I2luY2x1ZGUgIlNoYXBlLmgiCi0jaW5jbHVkZSAiU2hhcGVJbnRlcnZhbC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbnRlcnZhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlSW50ZXJ2YWwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTU4MDM4Li4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnRlcnZh
bC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTCi0gKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAotICogSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKQotICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotICogU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAot
ICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJTaGFwZUludGVydmFsLmgiCi0KLSNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBJbnRlcnZhbFgxQ29t
cGFyYXRvciB7Ci0gICAgYm9vbCBvcGVyYXRvcigpIChjb25zdCBTaGFwZUludGVydmFsJiBpMSwg
Y29uc3QgU2hhcGVJbnRlcnZhbCYgaTIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaTEu
eDEgPCBpMi54MTsKLSAgICB9Ci19OwotCi1ib29sIFNoYXBlSW50ZXJ2YWw6OmludGVyc2VjdChj
b25zdCBTaGFwZUludGVydmFsJiBpLCBTaGFwZUludGVydmFsJiBydikgY29uc3QKLXsKLSAgICBp
ZiAoeDIgPCBpLngxIHx8IHgxID4gaS54MikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJ2
LngxID0gc3RkOjptYXgoeDEsIGkueDEpOwotICAgIHJ2LngyID0gc3RkOjptaW4oeDIsIGkueDIp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIHNvcnRTaGFwZUludGVydmFscyhWZWN0b3I8
U2hhcGVJbnRlcnZhbD4mIHYpCi17Ci0gICAgc3RkOjpzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSwg
SW50ZXJ2YWxYMUNvbXBhcmF0b3IoKSk7Ci19Ci0KLXZvaWQgbWVyZ2VTaGFwZUludGVydmFscyhj
b25zdCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mIHYxLCBjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZh
bD4mIHYyLCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mIHJ2KQotewotICAgIGlmICghdjEuc2l6ZSgp
KQotICAgICAgICBydi5hcHBlbmRSYW5nZSh2Mi5iZWdpbigpLCB2Mi5lbmQoKSk7Ci0gICAgZWxz
ZSBpZiAoIXYyLnNpemUoKSkKLSAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEu
ZW5kKCkpOwotICAgIGVsc2UgewotICAgICAgICBWZWN0b3I8U2hhcGVJbnRlcnZhbD4gdih2MS5z
aXplKCkgKyB2Mi5zaXplKCkpOwotICAgICAgICBTaGFwZUludGVydmFsKiBpbnRlcnZhbCA9IDA7
Ci0KLSAgICAgICAgc3RkOjptZXJnZSh2MS5iZWdpbigpLCB2MS5lbmQoKSwgdjIuYmVnaW4oKSwg
djIuZW5kKCksIHYuYmVnaW4oKSwgSW50ZXJ2YWxYMUNvbXBhcmF0b3IoKSk7Ci0KLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB2LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAo
IWludGVydmFsKQotICAgICAgICAgICAgICAgIGludGVydmFsID0gJnZbaV07Ci0gICAgICAgICAg
ICBlbHNlIGlmICh2W2ldLngxID49IGludGVydmFsLT54MSAmJiB2W2ldLngxIDw9IGludGVydmFs
LT54MikgLy8gRklYTUU6IDFzdCA8PSB0ZXN0IG5vdCBuZWVkZWQ/Ci0gICAgICAgICAgICAgICAg
aW50ZXJ2YWwtPngyID0gc3RkOjptYXgoaW50ZXJ2YWwtPngyLCB2W2ldLngyKTsKLSAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJ2LmFwcGVuZCgqaW50ZXJ2YWwpOwotICAgICAg
ICAgICAgICAgIGludGVydmFsID0gJnZbaV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoaW50ZXJ2YWwpCi0gICAgICAgICAgICBydi5hcHBlbmQoKmludGVydmFsKTsK
LSAgICB9Ci19Ci0KLXZvaWQgaW50ZXJzZWN0U2hhcGVJbnRlcnZhbHMoY29uc3QgVmVjdG9yPFNo
YXBlSW50ZXJ2YWw+JiB2MSwgY29uc3QgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiB2MiwgVmVjdG9y
PFNoYXBlSW50ZXJ2YWw+JiBydikKLXsKLSAgICBzaXplX3QgdjFTaXplID0gdjEuc2l6ZSgpOwot
ICAgIHNpemVfdCB2MlNpemUgPSB2Mi5zaXplKCk7Ci0KLSAgICBpZiAoIXYxU2l6ZSB8fCAhdjJT
aXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTaGFwZUludGVydmFsIGludGVydmFsOwotICAg
IGJvb2wgb3ZlcmxhcCA9IGZhbHNlOwotICAgIHNpemVfdCBpMSA9IDA7Ci0gICAgc2l6ZV90IGky
ID0gMDsKLQotICAgIHdoaWxlIChpMSA8IHYxU2l6ZSAmJiBpMiA8IHYyU2l6ZSkgewotICAgICAg
ICBTaGFwZUludGVydmFsIHYxMjsKLSAgICAgICAgaWYgKHYxW2kxXS5pbnRlcnNlY3QodjJbaTJd
LCB2MTIpKSB7Ci0gICAgICAgICAgICBpZiAoIW92ZXJsYXAgfHwgIXYxMi5pbnRlcnNlY3QoaW50
ZXJ2YWwsIGludGVydmFsKSkgewotICAgICAgICAgICAgICAgIGlmIChvdmVybGFwKQotICAgICAg
ICAgICAgICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwpOwotICAgICAgICAgICAgICAgIGludGVy
dmFsID0gdjEyOwotICAgICAgICAgICAgICAgIG92ZXJsYXAgPSB0cnVlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKHYxW2kxXS54MiA8IHYyW2kyXS54MikKLSAgICAgICAgICAgICAg
ICBpMSsrOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGkyKys7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAob3ZlcmxhcCkKLSAgICAgICAgICAgICAgICBydi5h
cHBlbmQoaW50ZXJ2YWwpOwotICAgICAgICAgICAgb3ZlcmxhcCA9IGZhbHNlOwotICAgICAgICAg
ICAgaWYgKHYxW2kxXS54MSA8IHYyW2kyXS54MSkKLSAgICAgICAgICAgICAgICBpMSsrOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGkyKys7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAob3ZlcmxhcCkKLSAgICAgICAgcnYuYXBwZW5kKGludGVydmFsKTsKLX0KLQotdm9p
ZCBzdWJ0cmFjdFNoYXBlSW50ZXJ2YWxzKGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYgdjEs
IGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYgdjIsIFZlY3RvcjxTaGFwZUludGVydmFsPiYg
cnYpCi17Ci0gICAgc2l6ZV90IHYxU2l6ZSA9IHYxLnNpemUoKTsKLSAgICBzaXplX3QgdjJTaXpl
ID0gdjIuc2l6ZSgpOwotCi0gICAgaWYgKCF2MVNpemUpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmICghdjJTaXplKQotICAgICAgICBydi5hcHBlbmRSYW5nZSh2MS5iZWdpbigpLCB2MS5lbmQo
KSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNpemVfdCBpMSA9IDAsIGkyID0gMDsKLSAgICAgICAg
cnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOwotCi0gICAgICAgIHdoaWxlIChp
MSA8IHJ2LnNpemUoKSAmJiBpMiA8IHYyU2l6ZSkgewotICAgICAgICAgICAgU2hhcGVJbnRlcnZh
bCYgaW50ZXJ2YWwxID0gcnZbaTFdOwotICAgICAgICAgICAgY29uc3QgU2hhcGVJbnRlcnZhbCYg
aW50ZXJ2YWwyID0gdjJbaTJdOwotCi0gICAgICAgICAgICBpZiAoaW50ZXJ2YWwyLngxIDw9IGlu
dGVydmFsMS54MSAmJiBpbnRlcnZhbDIueDIgPj0gaW50ZXJ2YWwxLngyKQotICAgICAgICAgICAg
ICAgIHJ2LnJlbW92ZShpMSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDIgPCBp
bnRlcnZhbDEueDEpCi0gICAgICAgICAgICAgICAgaTIgKz0gMTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGludGVydmFsMi54MSA+IGludGVydmFsMS54MikKLSAgICAgICAgICAgICAgICBpMSArPSAx
OwotICAgICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngxID4gaW50ZXJ2YWwxLngxICYmIGlu
dGVydmFsMi54MiA8IGludGVydmFsMS54MikgewotICAgICAgICAgICAgICAgIHJ2Lmluc2VydChp
MSwgU2hhcGVJbnRlcnZhbChpbnRlcnZhbDEueDEsIGludGVydmFsMi54MSkpOwotICAgICAgICAg
ICAgICAgIGludGVydmFsMS54MSA9IGludGVydmFsMi54MjsKLSAgICAgICAgICAgICAgICBpMiAr
PSAxOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnZhbDIueDEgPD0gaW50ZXJ2YWwxLngx
KSB7Ci0gICAgICAgICAgICAgICAgaW50ZXJ2YWwxLngxID0gaW50ZXJ2YWwyLngyOwotICAgICAg
ICAgICAgICAgIGkyICs9IDE7Ci0gICAgICAgICAgICB9IGVsc2UgIHsgLy8gKGludGVydmFsMi54
MiA+PSBpbnRlcnZhbDEueDIpCi0gICAgICAgICAgICAgICAgaW50ZXJ2YWwxLngyID0gaW50ZXJ2
YWwyLngxOwotICAgICAgICAgICAgICAgIGkxICs9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmgKaW5kZXggMGZmMTRkOC4uNTQzYmY3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVy
dmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFs
LmgKQEAgLTM0LDI0ICszNCwxNzAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3Qg
U2hhcGVJbnRlcnZhbCB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFNoYXBlSW50ZXJ2
YWwgewogcHVibGljOgotICAgIGZsb2F0IHgxOwotICAgIGZsb2F0IHgyOworICAgIFNoYXBlSW50
ZXJ2YWwoVCB4MSA9IDAsIFQgeDIgPSAwKQorICAgICAgICA6IG1feDEoeDEpCisgICAgICAgICwg
bV94Mih4MikKKyAgICB7CisgICAgICAgIEFTU0VSVCh4MiA+PSB4MSk7CisgICAgfQorCisgICAg
VCB4MSgpIGNvbnN0IHsgcmV0dXJuIG1feDE7IH0KKyAgICBUIHgyKCkgY29uc3QgeyByZXR1cm4g
bV94MjsgfQorCisgICAgdm9pZCBzZXQoVCB4MSwgVCB4MikKKyAgICB7CisgICAgICAgIEFTU0VS
VCh4MiA+PSB4MSk7CisgICAgICAgIG1feDEgPSB4MTsKKyAgICAgICAgbV94MiA9IHgyOworICAg
IH0KKworICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgaW50ZXJ2YWwp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4geDIoKSA+PSBpbnRlcnZhbC54MSgpICYmIHgx
KCkgPD0gaW50ZXJ2YWwueDIoKTsKKyAgICB9CisKKyAgICBib29sIGludGVyc2VjdChjb25zdCBT
aGFwZUludGVydmFsPFQ+JiBpLCBTaGFwZUludGVydmFsPFQ+JiBydikgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmICh4MigpIDwgaS54MSgpIHx8IHgxKCkgPiBpLngyKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJ2LnNldChzdGQ6Om1heCh4MSgpLCBpLngxKCkpLCBzdGQ6
Om1pbih4MigpLCBpLngyKCkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
dHlwZWRlZiBWZWN0b3I8U2hhcGVJbnRlcnZhbDxUPiA+IFNoYXBlSW50ZXJ2YWxWZWN0b3I7Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I8U2hhcGVJbnRlcnZhbDxUPiA+Ojpjb25zdF9pdGVy
YXRvciBjb25zdF9pdGVyYXRvcjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3RvcjxTaGFwZUlu
dGVydmFsPFQ+ID46Oml0ZXJhdG9yIGl0ZXJhdG9yOworCisgICAgc3RhdGljIHZvaWQgc29ydFZl
Y3RvcihTaGFwZUludGVydmFsVmVjdG9yJiBpbnRlcnZhbHMpCisgICAgeworICAgICAgICBzdGQ6
OnNvcnQoaW50ZXJ2YWxzLmJlZ2luKCksIGludGVydmFscy5lbmQoKSk7CisgICAgfQorCisgICAg
c3RhdGljIHZvaWQgdW5pdGVWZWN0b3JzKGNvbnN0IFNoYXBlSW50ZXJ2YWxWZWN0b3ImIHYxLCBj
b25zdCBTaGFwZUludGVydmFsVmVjdG9yJiB2MiwgU2hhcGVJbnRlcnZhbFZlY3RvciYgcnYpCisg
ICAgeworICAgICAgICBpZiAoIXYxLnNpemUoKSkKKyAgICAgICAgICAgIHJ2LmFwcGVuZFJhbmdl
KHYyLmJlZ2luKCksIHYyLmVuZCgpKTsKKyAgICAgICAgZWxzZSBpZiAoIXYyLnNpemUoKSkKKyAg
ICAgICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBTaGFwZUludGVydmFsVmVjdG9yIHYodjEuc2l6ZSgpICsgdjIu
c2l6ZSgpKTsKKyAgICAgICAgICAgIFNoYXBlSW50ZXJ2YWw8VD4qIGludGVydmFsID0gMDsKKwor
ICAgICAgICAgICAgc3RkOjptZXJnZSh2MS5iZWdpbigpLCB2MS5lbmQoKSwgdjIuYmVnaW4oKSwg
djIuZW5kKCksIHYuYmVnaW4oKSk7CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdi5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmICghaW50ZXJ2YWwpCisgICAg
ICAgICAgICAgICAgICAgIGludGVydmFsID0gJnZbaV07CisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAodltpXS54MSgpID49IGludGVydmFsLT54MSgpICYmIHZbaV0ueDEoKSA8PSBpbnRlcnZhbC0+
eDIoKSkgLy8gRklYTUU6IDFzdCA8PSB0ZXN0IG5vdCBuZWVkZWQ/CisgICAgICAgICAgICAgICAg
ICAgIGludGVydmFsLT5zZXQoaW50ZXJ2YWwtPngxKCksIHN0ZDo6bWF4PFQ+KGludGVydmFsLT54
MigpLCB2W2ldLngyKCkpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgcnYuYXBwZW5kKCppbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgICAgIGludGVydmFs
ID0gJnZbaV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoaW50ZXJ2YWwpCisgICAgICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRlcnZhbCk7Cisg
ICAgICAgICAgICB9CisgICAgfQogCi0gICAgU2hhcGVJbnRlcnZhbChmbG9hdCB4MSA9IDAsIGZs
b2F0IHgyID0gMCkKLSAgICAgICAgOiB4MSh4MSkKLSAgICAgICAgLCB4Mih4MikKKyAgICBzdGF0
aWMgdm9pZCBpbnRlcnNlY3RWZWN0b3JzKGNvbnN0IFNoYXBlSW50ZXJ2YWxWZWN0b3ImIHYxLCBj
b25zdCBTaGFwZUludGVydmFsVmVjdG9yJiB2MiwgU2hhcGVJbnRlcnZhbFZlY3RvciYgcnYpCiAg
ICAgeworICAgICAgICBzaXplX3QgdjFTaXplID0gdjEuc2l6ZSgpOworICAgICAgICBzaXplX3Qg
djJTaXplID0gdjIuc2l6ZSgpOworCisgICAgICAgIGlmICghdjFTaXplIHx8ICF2MlNpemUpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgU2hhcGVJbnRlcnZhbDxUPiBpbnRlcnZhbDsK
KyAgICAgICAgYm9vbCBvdmVybGFwID0gZmFsc2U7CisgICAgICAgIHNpemVfdCBpMSA9IDA7Cisg
ICAgICAgIHNpemVfdCBpMiA9IDA7CisKKyAgICAgICAgd2hpbGUgKGkxIDwgdjFTaXplICYmIGky
IDwgdjJTaXplKSB7CisgICAgICAgICAgICBTaGFwZUludGVydmFsPFQ+IHYxMjsKKyAgICAgICAg
ICAgIGlmICh2MVtpMV0uaW50ZXJzZWN0KHYyW2kyXSwgdjEyKSkgeworICAgICAgICAgICAgICAg
IGlmICghb3ZlcmxhcCB8fCAhdjEyLmludGVyc2VjdChpbnRlcnZhbCwgaW50ZXJ2YWwpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChvdmVybGFwKQorICAgICAgICAgICAgICAgICAgICAgICAg
cnYuYXBwZW5kKGludGVydmFsKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSB2MTI7
CisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXAgPSB0cnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBpZiAodjFbaTFdLngyKCkgPCB2MltpMl0ueDIoKSkKKyAgICAgICAg
ICAgICAgICAgICAgaTErKzsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGkyKys7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChvdmVy
bGFwKQorICAgICAgICAgICAgICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwpOworICAgICAgICAg
ICAgICAgIG92ZXJsYXAgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAodjFbaTFdLngxKCkg
PCB2MltpMl0ueDEoKSkKKyAgICAgICAgICAgICAgICAgICAgaTErKzsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGkyKys7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBpZiAob3ZlcmxhcCkKKyAgICAgICAgICAgIHJ2LmFwcGVuZChpbnRlcnZh
bCk7CiAgICAgfQogCi0gICAgYm9vbCBpbnRlcnNlY3QoY29uc3QgU2hhcGVJbnRlcnZhbCYsIFNo
YXBlSW50ZXJ2YWwmKSBjb25zdDsKKyAgICBzdGF0aWMgdm9pZCBzdWJ0cmFjdFZlY3RvcnMoY29u
c3QgU2hhcGVJbnRlcnZhbFZlY3RvciYgdjEsIGNvbnN0IFNoYXBlSW50ZXJ2YWxWZWN0b3ImIHYy
LCBTaGFwZUludGVydmFsVmVjdG9yJiBydikKKyAgICB7CisgICAgICAgIHNpemVfdCB2MVNpemUg
PSB2MS5zaXplKCk7CisgICAgICAgIHNpemVfdCB2MlNpemUgPSB2Mi5zaXplKCk7CisKKyAgICAg
ICAgaWYgKCF2MVNpemUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCF2MlNp
emUpCisgICAgICAgICAgICBydi5hcHBlbmRSYW5nZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2l6ZV90IGkxID0gMCwgaTIgPSAwOworICAgICAg
ICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOworCisgICAgICAgICAg
ICB3aGlsZSAoaTEgPCBydi5zaXplKCkgJiYgaTIgPCB2MlNpemUpIHsKKyAgICAgICAgICAgICAg
ICBTaGFwZUludGVydmFsPFQ+JiBpbnRlcnZhbDEgPSBydltpMV07CisgICAgICAgICAgICAgICAg
Y29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgaW50ZXJ2YWwyID0gdjJbaTJdOworCisgICAgICAgICAg
ICAgICAgaWYgKGludGVydmFsMi54MSgpIDw9IGludGVydmFsMS54MSgpICYmIGludGVydmFsMi54
MigpID49IGludGVydmFsMS54MigpKQorICAgICAgICAgICAgICAgICAgICBydi5yZW1vdmUoaTEp
OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGludGVydmFsMi54MigpIDwgaW50ZXJ2YWwxLngx
KCkpCisgICAgICAgICAgICAgICAgICAgIGkyICs9IDE7CisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoaW50ZXJ2YWwyLngxKCkgPiBpbnRlcnZhbDEueDIoKSkKKyAgICAgICAgICAgICAgICAgICAg
aTEgKz0gMTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDEoKSA+IGludGVy
dmFsMS54MSgpICYmIGludGVydmFsMi54MigpIDwgaW50ZXJ2YWwxLngyKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcnYuaW5zZXJ0KGkxLCBTaGFwZUludGVydmFsKGludGVydmFsMS54MSgpLCBp
bnRlcnZhbDIueDEoKSkpOworICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbDEuc2V0KGludGVy
dmFsMi54MigpLCBpbnRlcnZhbDEueDIoKSk7CisgICAgICAgICAgICAgICAgICAgIGkyICs9IDE7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnZhbDIueDEoKSA8PSBpbnRlcnZhbDEu
eDEoKSkgeworICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbDEuc2V0KGludGVydmFsMi54Migp
LCBpbnRlcnZhbDEueDIoKSk7CisgICAgICAgICAgICAgICAgICAgIGkyICs9IDE7CisgICAgICAg
ICAgICAgICAgfSBlbHNlICB7IC8vIChpbnRlcnZhbDIueDIoKSA+PSBpbnRlcnZhbDEueDIoKSkK
KyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwxLnNldChpbnRlcnZhbDEueDEoKSwgaW50ZXJ2
YWwyLngxKCkpOworICAgICAgICAgICAgICAgICAgICBpMSArPSAxOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBUIG1f
eDE7CisgICAgVCBtX3gyOwogfTsKIAotdm9pZCBzb3J0U2hhcGVJbnRlcnZhbHMoVmVjdG9yPFNo
YXBlSW50ZXJ2YWw+Jik7Ci12b2lkIG1lcmdlU2hhcGVJbnRlcnZhbHMoY29uc3QgVmVjdG9yPFNo
YXBlSW50ZXJ2YWw+JiwgY29uc3QgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiwgVmVjdG9yPFNoYXBl
SW50ZXJ2YWw+Jik7Ci12b2lkIGludGVyc2VjdFNoYXBlSW50ZXJ2YWxzKGNvbnN0IFZlY3RvcjxT
aGFwZUludGVydmFsPiYsIGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYsIFZlY3RvcjxTaGFw
ZUludGVydmFsPiYpOwotdm9pZCBzdWJ0cmFjdFNoYXBlSW50ZXJ2YWxzKGNvbnN0IFZlY3RvcjxT
aGFwZUludGVydmFsPiYsIGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYsIFZlY3RvcjxTaGFw
ZUludGVydmFsPiYpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTaGFwZUludGVydmFsPFQ+JiBsaHMsIGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIHJo
cykgeyByZXR1cm4gbGhzLngxKCkgPT0gcmhzLngxKCkgJiYgbGhzLngyKCkgPT0gcmhzLngyKCk7
IH0KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hh
cGVJbnRlcnZhbDxUPiYgbGhzLCBjb25zdCBTaGFwZUludGVydmFsPFQ+JiByaHMpIHsgcmV0dXJu
ICFvcGVyYXRvcj09KGxocywgcmhzKTsgfQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJv
b2wgb3BlcmF0b3I8IChjb25zdCBTaGFwZUludGVydmFsPFQ+JiBsaHMsIGNvbnN0IFNoYXBlSW50
ZXJ2YWw8VD4mIHJocykgeyByZXR1cm4gbGhzLngxKCkgPCByaHMueDEoKTsgfQordGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I+IChjb25zdCBTaGFwZUludGVydmFsPFQ+
JiBsaHMsIGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIHJocykgeyByZXR1cm4gb3BlcmF0b3I8IChy
aHMsIGxocyk7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPD0o
Y29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgbGhzLCBjb25zdCBTaGFwZUludGVydmFsPFQ+JiByaHMp
IHsgcmV0dXJuICFvcGVyYXRvcj4gKGxocywgcmhzKTsgfQordGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBTaGFwZUludGVydmFsPFQ+JiBsaHMsIGNvbnN0
IFNoYXBlSW50ZXJ2YWw8VD4mIHJocykgeyByZXR1cm4gIW9wZXJhdG9yPCAobGhzLCByaHMpOyB9
CisKK3R5cGVkZWYgU2hhcGVJbnRlcnZhbDxpbnQ+IEludFNoYXBlSW50ZXJ2YWw7Cit0eXBlZGVm
IFNoYXBlSW50ZXJ2YWw8ZmxvYXQ+IEZsb2F0U2hhcGVJbnRlcnZhbDsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCg==
</data>
<flag name="commit-queue"
          id="231996"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209926</attachid>
            <date>2013-08-28 15:38:11 -0700</date>
            <delta_ts>2013-08-28 16:48:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>27166</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmY0NDI3Ny4uYWNmZmJlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMTYsNyArMjIxNiw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNw
cAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcAotICAgIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0
c2lkZUluZm8uY3BwCiAKICAgICByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNzJjYjllNC4uNDVjYWE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisy
MDEzLTA4LTI4ICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhcGVzXSBSZWRlZmluZSB0aGUgU2hhcGVJbnRlcnZhbHMgY2xhc3MgYXMgYSB0ZW1wbGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCB0aGlzIHdhcyBqdXN0IGFuIGludGVybmFsIHJlZmFjdG9yaW5nLgorCisgICAgICAg
IFRoZSBleGlzdGluZyBTaGFwZUludGVydmFscyBjbGFzcyBoYXMgYmVlbiBjb252ZXJ0ZWQgaW50
byBhIHRlbXBsYXRlIHdob3NlCisgICAgICAgIHR5cGUgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRo
ZSBpbnRlcnZhbCdzIHgxIGFuZCB4MiBob3Jpem9udGFsIGVuZHBvaW50cworICAgICAgICAoZm9y
bWVybHkgZmxvYXQpLiBUaGVyZSB3ZXJlIHNldmVyYWwgb3RoZXIgbWlub3IgY2hhbmdlcywgYWxs
IGluIHRoZSByZWFsbQorICAgICAgICBvZiByZWZhY3RvcmluZzoKKworICAgICAgICAtIFRoZSBv
cmlnaW5hbCB0eXBlIHdhcyBhIHN0cnVjdCB3aXRoIHB1YmxpYyB4MSBhbmQgeDIgZmllbGRzLiBJ
dCdzIG5vdyBhIGNsYXNzCisgICAgICAgIHdpdGggeDEgYW5kIHgyIGFjY2Vzc29ycy4gQVNTRVJU
UyBhcmUgbm93IHVzZWQgdG8gbWFpbnRhaW4gdGhlIHgyID49IHgxIGludmFyaWFudC4KKyAgICAg
ICAgSW4gdGhlIG9yaWdpbmFsIGNvZGUgdGhlIGludmFyaWFudCB3YXMgbm90IGNoZWNrZWQuCisK
KyAgICAgICAgLSBUaGUgbG9naWNhbCBjb21wYXJpc29uIG9wZXJhdG9ycyBoYXZlIGJlZW4gb3Zl
cmxvYWRlZCBmb3IgU2hhcGVJbnRlcnZhbC4KKyAgICAgICAgVGhpcyBvYnZpYXRlcyB0aGUgSW50
ZXJ2YWxYMUNvbXBhcmF0b3IgY2xhc3Mgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZC4KKworICAgICAg
ICAtIFRoZSBuYW1lcyBvZiB0aGUgZ2xvYmFsIFNoYXBlSW50ZXJ2YWwgVmVjdG9yIHNldCBvcGVy
YXRpb24gbWV0aG9kcyBoYXZlIGJlZW4KKyAgICAgICAgY2hhbmdlZCB0byByZWZsZWN0IHRoZSBm
YWN0IHRoYXQgdGhleSdyZSBub3cgbWVtYmVycyBvZiB0aGUgdGVtcGxhdGUgY2xhc3MsCisgICAg
ICAgIHJhdGhlciB0aGFuIGdsb2JhbHMuCisKKyAgICAgICAgUG9seWdvblNoYXBlLmNwcCBkZXBl
bmRlZCBvbiB0aGUgU2hhcGVJbnRlcnZhbCBjbGFzcy4gSW4gdGhlIG9uZSBvciB0d28gcGxhY2Vz
CisgICAgICAgIHdoZXJlIGFuIGludGVydmFsJ3MgeDEgb3IgeDEgZmllbGRzIGhhZCBiZWVuIHNl
dCBleHBsaWNpdGx5LCBTaGFwZUludGVydmFsOjpzZXQoKQorICAgICAgICBpcyBub3cgdXNlZCB0
byBzZXQgYm90aCBmaWVsZHMuIFRoaXMgYWxzbyBlbmFibGVzIHRoZSBpbnZhcmlhbnQgY2hlY2sg
bWVudGlvbmVkCisgICAgICAgIGVhcmxpZXIuIFRoZSBvdGhlciBjaGFuZ2VzIHRvIHRoaXMgY2xh
c3MgYXJlIHN5bnRhdGljLCB0byBhY2NvdW50IGZvciB0aGUgU2hhcGVJbnRlcnZhbAorICAgICAg
ICBjbGFzcydzIGNoYW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFwcGVuZEludGVydmFsWCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlWEludGVy
c2VjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9q
ZWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQb2x5Z29uU2hhcGU6OmdldEV4Y2x1ZGVkSW50
ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvbHlnb25TaGFwZTo6Z2V0SW5jbHVkZWRJbnRl
cnZhbHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaDogVGhlIGVudGlyZSBpbXBsZW1l
bnRhdGlvbiBpcyBub3cgaGVyZS4gCisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjpT
aGFwZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OngxKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OngyKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXBlSW50ZXJ2YWw6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjpvdmVy
bGFwcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjppbnRlcnNlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcGVJbnRlcnZhbDo6c29ydFZlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cGVJbnRlcnZhbDo6aW50ZXJzZWN0VmVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUlu
dGVydmFsOjpzdWJ0cmFjdFZlY3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPCApOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I+ICk6CisgICAgICAgIChXZWJDb3Jl
OjpvcGVyYXRvcjw9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPj0pOgorCiAyMDEzLTA4
LTI4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgaXMgcGFpbnRpbmcgdmlkZW8gZnJhbWVz
IHVuZGVyIHRoZSB2aWRlbyBsYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
NmQ2NGNhOS4uM2MwMmRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NTc1
LDcgKzQ1NzUsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVJbmZvLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbnNpZGVJbmZvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZUluc2lkZUluZm8uaCBcCi0JU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZUludGVydmFsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZUludGVydmFsLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDY0NDUzMjguLjUyZjUyNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQpAQCAtMTI0MCw3ICsxMjQwLDYgQEAgU09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHAgXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcCBcCiAgICAg
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwIFwKLSAgICByZW5kZXJpbmcvc2hh
cGVzL1NoYXBlSW50ZXJ2YWwuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lk
ZUluZm8uY3BwIFwKICAgICByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwIFwKICAgICBy
ZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGU0MjBhYzMuLjVkMjkzZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTA5
OTksNyArMTA5OTksNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNo
YXBlc1xSZWN0YW5nbGVTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
ZW5kZXJpbmdcc2hhcGVzXFNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xzaGFwZXNcU2hhcGVJbnNpZGVJbmZvLmNwcCIgLz4KLSAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcU2hhcGVJbnRlcnZhbC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlT3V0c2lkZUluZm8u
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdQYXRo
RGF0YS5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBmMzRmYWRkLi5hNjllYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01ODU3LDcgKzU4NTcsNiBAQAogCQlG
RDQ1QTk1OTE3NUQ0MTcxMDBDMjFFQzggLyogUG9seWdvblNoYXBlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDhBODdBMTc1RDM5MjYwMDJDRDM2
MCAvKiBQb2x5Z29uU2hhcGUuY3BwICovOyB9OwogCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzgg
LyogUmVjdGFuZ2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQwOEE4N0MxNzVEMzkyNjAwMkNEMzYwIC8qIFJlY3RhbmdsZVNoYXBlLmNw
cCAqLzsgfTsKIAkJRkQ0NUE5NUIxNzVENDFFRTAwQzIxRUM4IC8qIFNoYXBlSW50ZXJ2YWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDhBODg1MTc1
RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUludGVydmFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRkQ0NUE5NUMxNzVENDIwRDAwQzIxRUM4IC8qIFNo
YXBlSW50ZXJ2YWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkQwOEE4ODQxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW50ZXJ2YWwuY3BwICovOyB9
OwogCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ1MzczNTAxMzdCNjUxODAwMDA4
RENFIC8qIFplcm9Qb2xlLmNwcCAqLzsgfTsKIAkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8q
IFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRDUzNzM1MTEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCAqLzsgfTsKIAkJRkQ1Mzcz
NTYxMzdCNjUzQjAwMDA4RENFIC8qIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDUzNzM1NDEzN0I2NTNC
MDAwMDhEQ0UgLyogRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcCAqLzsgfTsKQEAgLTEyNTUz
LDcgKzEyNTUyLDYgQEAKIAkJRkQwOEE4ODExNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFwZUluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwOEE4ODIxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW5z
aWRlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFwZUlu
c2lkZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDA4QTg4MzE3NUQz
OTI2MDAyQ0QzNjAgLyogU2hhcGVJbnNpZGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYXBlSW5zaWRlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlGRDA4QTg4NDE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVJbnRlcnZhbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFwZUludGVydmFsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwOEE4ODUxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW50
ZXJ2YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcGVJbnRlcnZhbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDA4QTg4NjE3NUQzOTI2MDAyQ0QzNjAg
LyogU2hhcGVPdXRzaWRlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaGFwZU91dHNpZGVJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkQwOEE4ODcxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlT3V0c2lkZUluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcGVPdXRzaWRlSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA1MzYsNyArMjA1MzQsNiBAQAogCQkJCUZEMDhBODgxMTc1RDM5
MjYwMDJDRDM2MCAvKiBTaGFwZUluZm8uaCAqLywKIAkJCQlGRDA4QTg4MjE3NUQzOTI2MDAyQ0Qz
NjAgLyogU2hhcGVJbnNpZGVJbmZvLmNwcCAqLywKIAkJCQlGRDA4QTg4MzE3NUQzOTI2MDAyQ0Qz
NjAgLyogU2hhcGVJbnNpZGVJbmZvLmggKi8sCi0JCQkJRkQwOEE4ODQxNzVEMzkyNjAwMkNEMzYw
IC8qIFNoYXBlSW50ZXJ2YWwuY3BwICovLAogCQkJCUZEMDhBODg1MTc1RDM5MjYwMDJDRDM2MCAv
KiBTaGFwZUludGVydmFsLmggKi8sCiAJCQkJRkQwOEE4ODYxNzVEMzkyNjAwMkNEMzYwIC8qIFNo
YXBlT3V0c2lkZUluZm8uY3BwICovLAogCQkJCUZEMDhBODg3MTc1RDM5MjYwMDJDRDM2MCAvKiBT
aGFwZU91dHNpZGVJbmZvLmggKi8sCkBAIC0yNjM4Niw3ICsyNjM4Myw2IEBACiAJCQkJRkQ0NUE5
NTMxNzVEM0ZCODAwQzIxRUM4IC8qIFNoYXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENDVB
OTU0MTc1RDNGQjgwMEMyMUVDOCAvKiBTaGFwZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkQ0NUE5NTUxNzVEM0ZCODAwQzIxRUM4IC8qIFNoYXBlSW5zaWRlSW5mby5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQlGRDQ1QTk1QzE3NUQ0MjBEMDBDMjFFQzggLyogU2hhcGVJbnRlcnZhbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1NjE3NUQzRkI4MDBDMjFFQzggLyogU2hhcGVPdXRz
aWRlSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBOTU0RDBCNEVEQ0NCMDAyRDhDM0Mg
LyogU2hhcmVkQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMkREOEUzMEQ5MUUyQjQw
MDBGODlFRSAvKiBTaGFyZWRCdWZmZXJDRi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAppbmRleCBlMjEyNGZk
Li5jMmRlYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Bv
bHlnb25TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5
Z29uU2hhcGUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUG9seWdvblNoYXBlLmgiCiAKKyNpbmNsdWRlICJTaGFwZUludGVydmFsLmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjI0LDEy
ICsyMjUsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGdldFZlcnRleEludGVyc2VjdGlvblZlcnRp
Y2VzKGNvbnN0IEVkZ2VJbnRlcnNlY3Rpb24mIGludGVyc2UKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGlubGluZSBib29sIGFwcGVuZEludGVydmFsWChmbG9hdCB4LCBib29sIGluc2lk
ZSwgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiByZXN1bHQpCitzdGF0aWMgaW5saW5lIGJvb2wgYXBw
ZW5kSW50ZXJ2YWxYKGZsb2F0IHgsIGJvb2wgaW5zaWRlLCBWZWN0b3I8RmxvYXRTaGFwZUludGVy
dmFsPiYgcmVzdWx0KQogewogICAgIGlmICghaW5zaWRlKQotICAgICAgICByZXN1bHQuYXBwZW5k
KFNoYXBlSW50ZXJ2YWwoeCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKEZsb2F0U2hhcGVJbnRl
cnZhbCh4LCB4KSk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHRbcmVzdWx0LnNpemUoKSAtIDFd
LngyID0geDsKKyAgICAgICAgcmVzdWx0Lmxhc3QoKS5zZXQocmVzdWx0Lmxhc3QoKS54MSgpLCB4
KTsKIAogICAgIHJldHVybiAhaW5zaWRlOwogfQpAQCAtMjQxLDcgKzI0Miw3IEBAIHN0YXRpYyBi
b29sIGNvbXBhcmVFZGdlSW50ZXJzZWN0aW9uWChjb25zdCBFZGdlSW50ZXJzZWN0aW9uJiBpbnRl
cnNlY3Rpb24xLCBjb25zCiAgICAgcmV0dXJuICh4MSA9PSB4MikgPyBpbnRlcnNlY3Rpb24xLnR5
cGUgPCBpbnRlcnNlY3Rpb24yLnR5cGUgOiB4MSA8IHgyOwogfQogCi1zdGF0aWMgdm9pZCBjb21w
dXRlWEludGVyc2VjdGlvbnMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCB5LCBi
b29sIGlzTWluWSwgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiByZXN1bHQpCitzdGF0aWMgdm9pZCBj
b21wdXRlWEludGVyc2VjdGlvbnMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCB5
LCBib29sIGlzTWluWSwgVmVjdG9yPEZsb2F0U2hhcGVJbnRlcnZhbD4mIHJlc3VsdCkKIHsKICAg
ICBWZWN0b3I8Y29uc3QgRmxvYXRQb2x5Z29uRWRnZSo+IGVkZ2VzOwogICAgIGlmICghcG9seWdv
bi5vdmVybGFwcGluZ0VkZ2VzKHksIHksIGVkZ2VzKSkKQEAgLTMxMSw3ICszMTIsNyBAQCBzdGF0
aWMgdm9pZCBjb21wdXRlWEludGVyc2VjdGlvbnMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29u
LCBmbG9hdCB5LCBib29sIGlzTQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZU92ZXJs
YXBwaW5nRWRnZVhQcm9qZWN0aW9ucyhjb25zdCBGbG9hdFBvbHlnb24mIHBvbHlnb24sIGZsb2F0
IHkxLCBmbG9hdCB5MiwgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiByZXN1bHQpCitzdGF0aWMgdm9p
ZCBjb21wdXRlT3ZlcmxhcHBpbmdFZGdlWFByb2plY3Rpb25zKGNvbnN0IEZsb2F0UG9seWdvbiYg
cG9seWdvbiwgZmxvYXQgeTEsIGZsb2F0IHkyLCBWZWN0b3I8RmxvYXRTaGFwZUludGVydmFsPiYg
cmVzdWx0KQogewogICAgIFZlY3Rvcjxjb25zdCBGbG9hdFBvbHlnb25FZGdlKj4gZWRnZXM7CiAg
ICAgaWYgKCFwb2x5Z29uLm92ZXJsYXBwaW5nRWRnZXMoeTEsIHkyLCBlZGdlcykpCkBAIC0zMzks
MTAgKzM0MCwxMCBAQCBzdGF0aWMgdm9pZCBjb21wdXRlT3ZlcmxhcHBpbmdFZGdlWFByb2plY3Rp
b25zKGNvbnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYQogICAgICAgICAgICAgc3RkOjpz
d2FwKHgxLCB4Mik7CiAKICAgICAgICAgaWYgKHgyID4geDEpCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKFNoYXBlSW50ZXJ2YWwoeDEsIHgyKSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KEZsb2F0U2hhcGVJbnRlcnZhbCh4MSwgeDIpKTsKICAgICB9CiAKLSAgICBzb3J0U2hhcGVJbnRl
cnZhbHMocmVzdWx0KTsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6OnNvcnRWZWN0b3IocmVzdWx0
KTsKIH0KIAogdm9pZCBQb2x5Z29uU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVu
aXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYgcmVz
dWx0KSBjb25zdApAQCAtMzU0LDIyICszNTUsMjIgQEAgdm9pZCBQb2x5Z29uU2hhcGU6OmdldEV4
Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2EK
ICAgICBmbG9hdCB5MSA9IGxvZ2ljYWxUb3A7CiAgICAgZmxvYXQgeTIgPSBsb2dpY2FsVG9wICsg
bG9naWNhbEhlaWdodDsKIAotICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiB5MVhJbnRlcnZhbHMs
IHkyWEludGVydmFsczsKKyAgICBWZWN0b3I8RmxvYXRTaGFwZUludGVydmFsPiB5MVhJbnRlcnZh
bHMsIHkyWEludGVydmFsczsKICAgICBjb21wdXRlWEludGVyc2VjdGlvbnMocG9seWdvbiwgeTEs
IHRydWUsIHkxWEludGVydmFscyk7CiAgICAgY29tcHV0ZVhJbnRlcnNlY3Rpb25zKHBvbHlnb24s
IHkyLCBmYWxzZSwgeTJYSW50ZXJ2YWxzKTsKIAotICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiBt
ZXJnZWRJbnRlcnZhbHM7Ci0gICAgbWVyZ2VTaGFwZUludGVydmFscyh5MVhJbnRlcnZhbHMsIHky
WEludGVydmFscywgbWVyZ2VkSW50ZXJ2YWxzKTsKKyAgICBWZWN0b3I8RmxvYXRTaGFwZUludGVy
dmFsPiBtZXJnZWRJbnRlcnZhbHM7CisgICAgRmxvYXRTaGFwZUludGVydmFsOjp1bml0ZVZlY3Rv
cnMoeTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZhbHMsIG1lcmdlZEludGVydmFscyk7CiAKLSAgICBW
ZWN0b3I8U2hhcGVJbnRlcnZhbD4gZWRnZUludGVydmFsczsKKyAgICBWZWN0b3I8RmxvYXRTaGFw
ZUludGVydmFsPiBlZGdlSW50ZXJ2YWxzOwogICAgIGNvbXB1dGVPdmVybGFwcGluZ0VkZ2VYUHJv
amVjdGlvbnMocG9seWdvbiwgeTEsIHkyLCBlZGdlSW50ZXJ2YWxzKTsKIAotICAgIFZlY3RvcjxT
aGFwZUludGVydmFsPiBleGNsdWRlZEludGVydmFsczsKLSAgICBtZXJnZVNoYXBlSW50ZXJ2YWxz
KG1lcmdlZEludGVydmFscywgZWRnZUludGVydmFscywgZXhjbHVkZWRJbnRlcnZhbHMpOworICAg
IFZlY3RvcjxGbG9hdFNoYXBlSW50ZXJ2YWw+IGV4Y2x1ZGVkSW50ZXJ2YWxzOworICAgIEZsb2F0
U2hhcGVJbnRlcnZhbDo6dW5pdGVWZWN0b3JzKG1lcmdlZEludGVydmFscywgZWRnZUludGVydmFs
cywgZXhjbHVkZWRJbnRlcnZhbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4
Y2x1ZGVkSW50ZXJ2YWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFNoYXBlSW50ZXJ2YWwgaW50
ZXJ2YWwgPSBleGNsdWRlZEludGVydmFsc1tpXTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5l
U2VnbWVudChpbnRlcnZhbC54MSwgaW50ZXJ2YWwueDIpKTsKKyAgICAgICAgRmxvYXRTaGFwZUlu
dGVydmFsIGludGVydmFsID0gZXhjbHVkZWRJbnRlcnZhbHNbaV07CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoTGluZVNlZ21lbnQoaW50ZXJ2YWwueDEoKSwgaW50ZXJ2YWwueDIoKSkpOwogICAgIH0K
IH0KIApAQCAtMzgyLDIyICszODMsMjIgQEAgdm9pZCBQb2x5Z29uU2hhcGU6OmdldEluY2x1ZGVk
SW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICBm
bG9hdCB5MSA9IGxvZ2ljYWxUb3A7CiAgICAgZmxvYXQgeTIgPSBsb2dpY2FsVG9wICsgbG9naWNh
bEhlaWdodDsKIAotICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiB5MVhJbnRlcnZhbHMsIHkyWElu
dGVydmFsczsKKyAgICBWZWN0b3I8RmxvYXRTaGFwZUludGVydmFsPiB5MVhJbnRlcnZhbHMsIHky
WEludGVydmFsczsKICAgICBjb21wdXRlWEludGVyc2VjdGlvbnMocG9seWdvbiwgeTEsIHRydWUs
IHkxWEludGVydmFscyk7CiAgICAgY29tcHV0ZVhJbnRlcnNlY3Rpb25zKHBvbHlnb24sIHkyLCBm
YWxzZSwgeTJYSW50ZXJ2YWxzKTsKIAotICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiBjb21tb25J
bnRlcnZhbHM7Ci0gICAgaW50ZXJzZWN0U2hhcGVJbnRlcnZhbHMoeTFYSW50ZXJ2YWxzLCB5MlhJ
bnRlcnZhbHMsIGNvbW1vbkludGVydmFscyk7CisgICAgVmVjdG9yPEZsb2F0U2hhcGVJbnRlcnZh
bD4gY29tbW9uSW50ZXJ2YWxzOworICAgIEZsb2F0U2hhcGVJbnRlcnZhbDo6aW50ZXJzZWN0VmVj
dG9ycyh5MVhJbnRlcnZhbHMsIHkyWEludGVydmFscywgY29tbW9uSW50ZXJ2YWxzKTsKIAotICAg
IFZlY3RvcjxTaGFwZUludGVydmFsPiBlZGdlSW50ZXJ2YWxzOworICAgIFZlY3RvcjxGbG9hdFNo
YXBlSW50ZXJ2YWw+IGVkZ2VJbnRlcnZhbHM7CiAgICAgY29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQ
cm9qZWN0aW9ucyhwb2x5Z29uLCB5MSwgeTIsIGVkZ2VJbnRlcnZhbHMpOwogCi0gICAgVmVjdG9y
PFNoYXBlSW50ZXJ2YWw+IGluY2x1ZGVkSW50ZXJ2YWxzOwotICAgIHN1YnRyYWN0U2hhcGVJbnRl
cnZhbHMoY29tbW9uSW50ZXJ2YWxzLCBlZGdlSW50ZXJ2YWxzLCBpbmNsdWRlZEludGVydmFscyk7
CisgICAgVmVjdG9yPEZsb2F0U2hhcGVJbnRlcnZhbD4gaW5jbHVkZWRJbnRlcnZhbHM7CisgICAg
RmxvYXRTaGFwZUludGVydmFsOjpzdWJ0cmFjdFZlY3RvcnMoY29tbW9uSW50ZXJ2YWxzLCBlZGdl
SW50ZXJ2YWxzLCBpbmNsdWRlZEludGVydmFscyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgaW5jbHVkZWRJbnRlcnZhbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgU2hhcGVJbnRl
cnZhbCBpbnRlcnZhbCA9IGluY2x1ZGVkSW50ZXJ2YWxzW2ldOwotICAgICAgICByZXN1bHQuYXBw
ZW5kKExpbmVTZWdtZW50KGludGVydmFsLngxLCBpbnRlcnZhbC54MikpOworICAgICAgICBGbG9h
dFNoYXBlSW50ZXJ2YWwgaW50ZXJ2YWwgPSBpbmNsdWRlZEludGVydmFsc1tpXTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChMaW5lU2VnbWVudChpbnRlcnZhbC54MSgpLCBpbnRlcnZhbC54MigpKSk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1BvbHlnb25TaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29u
U2hhcGUuaAppbmRleCA2MjhhYzNhLi5lZDY5ZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1
ZGUgIkZsb2F0UG9seWdvbi5oIgogI2luY2x1ZGUgIlNoYXBlLmgiCi0jaW5jbHVkZSAiU2hhcGVJ
bnRlcnZhbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiNTU4MDM4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCi0gKiBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotICogQ09QWVJJ
R0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAotICog
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotICogSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotICog
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRAotICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFwZUludGVydmFsLmgi
Ci0KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0cnVjdCBJbnRlcnZhbFgxQ29tcGFyYXRvciB7Ci0gICAgYm9vbCBvcGVyYXRvcigpIChjb25z
dCBTaGFwZUludGVydmFsJiBpMSwgY29uc3QgU2hhcGVJbnRlcnZhbCYgaTIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gaTEueDEgPCBpMi54MTsKLSAgICB9Ci19OwotCi1ib29sIFNoYXBl
SW50ZXJ2YWw6OmludGVyc2VjdChjb25zdCBTaGFwZUludGVydmFsJiBpLCBTaGFwZUludGVydmFs
JiBydikgY29uc3QKLXsKLSAgICBpZiAoeDIgPCBpLngxIHx8IHgxID4gaS54MikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJ2LngxID0gc3RkOjptYXgoeDEsIGkueDEpOwotICAgIHJ2Lngy
ID0gc3RkOjptaW4oeDIsIGkueDIpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIHNvcnRT
aGFwZUludGVydmFscyhWZWN0b3I8U2hhcGVJbnRlcnZhbD4mIHYpCi17Ci0gICAgc3RkOjpzb3J0
KHYuYmVnaW4oKSwgdi5lbmQoKSwgSW50ZXJ2YWxYMUNvbXBhcmF0b3IoKSk7Ci19Ci0KLXZvaWQg
bWVyZ2VTaGFwZUludGVydmFscyhjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mIHYxLCBjb25z
dCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mIHYyLCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mIHJ2KQot
ewotICAgIGlmICghdjEuc2l6ZSgpKQotICAgICAgICBydi5hcHBlbmRSYW5nZSh2Mi5iZWdpbigp
LCB2Mi5lbmQoKSk7Ci0gICAgZWxzZSBpZiAoIXYyLnNpemUoKSkKLSAgICAgICAgcnYuYXBwZW5k
UmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOwotICAgIGVsc2UgewotICAgICAgICBWZWN0b3I8
U2hhcGVJbnRlcnZhbD4gdih2MS5zaXplKCkgKyB2Mi5zaXplKCkpOwotICAgICAgICBTaGFwZUlu
dGVydmFsKiBpbnRlcnZhbCA9IDA7Ci0KLSAgICAgICAgc3RkOjptZXJnZSh2MS5iZWdpbigpLCB2
MS5lbmQoKSwgdjIuYmVnaW4oKSwgdjIuZW5kKCksIHYuYmVnaW4oKSwgSW50ZXJ2YWxYMUNvbXBh
cmF0b3IoKSk7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2LnNpemUoKTsgaSsr
KSB7Ci0gICAgICAgICAgICBpZiAoIWludGVydmFsKQotICAgICAgICAgICAgICAgIGludGVydmFs
ID0gJnZbaV07Ci0gICAgICAgICAgICBlbHNlIGlmICh2W2ldLngxID49IGludGVydmFsLT54MSAm
JiB2W2ldLngxIDw9IGludGVydmFsLT54MikgLy8gRklYTUU6IDFzdCA8PSB0ZXN0IG5vdCBuZWVk
ZWQ/Ci0gICAgICAgICAgICAgICAgaW50ZXJ2YWwtPngyID0gc3RkOjptYXgoaW50ZXJ2YWwtPngy
LCB2W2ldLngyKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJ2LmFwcGVu
ZCgqaW50ZXJ2YWwpOwotICAgICAgICAgICAgICAgIGludGVydmFsID0gJnZbaV07Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaW50ZXJ2YWwpCi0gICAgICAgICAgICBy
di5hcHBlbmQoKmludGVydmFsKTsKLSAgICB9Ci19Ci0KLXZvaWQgaW50ZXJzZWN0U2hhcGVJbnRl
cnZhbHMoY29uc3QgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiB2MSwgY29uc3QgVmVjdG9yPFNoYXBl
SW50ZXJ2YWw+JiB2MiwgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiBydikKLXsKLSAgICBzaXplX3Qg
djFTaXplID0gdjEuc2l6ZSgpOwotICAgIHNpemVfdCB2MlNpemUgPSB2Mi5zaXplKCk7Ci0KLSAg
ICBpZiAoIXYxU2l6ZSB8fCAhdjJTaXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTaGFwZUlu
dGVydmFsIGludGVydmFsOwotICAgIGJvb2wgb3ZlcmxhcCA9IGZhbHNlOwotICAgIHNpemVfdCBp
MSA9IDA7Ci0gICAgc2l6ZV90IGkyID0gMDsKLQotICAgIHdoaWxlIChpMSA8IHYxU2l6ZSAmJiBp
MiA8IHYyU2l6ZSkgewotICAgICAgICBTaGFwZUludGVydmFsIHYxMjsKLSAgICAgICAgaWYgKHYx
W2kxXS5pbnRlcnNlY3QodjJbaTJdLCB2MTIpKSB7Ci0gICAgICAgICAgICBpZiAoIW92ZXJsYXAg
fHwgIXYxMi5pbnRlcnNlY3QoaW50ZXJ2YWwsIGludGVydmFsKSkgewotICAgICAgICAgICAgICAg
IGlmIChvdmVybGFwKQotICAgICAgICAgICAgICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwpOwot
ICAgICAgICAgICAgICAgIGludGVydmFsID0gdjEyOwotICAgICAgICAgICAgICAgIG92ZXJsYXAg
PSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHYxW2kxXS54MiA8IHYyW2ky
XS54MikKLSAgICAgICAgICAgICAgICBpMSsrOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGkyKys7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAob3ZlcmxhcCkK
LSAgICAgICAgICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwpOwotICAgICAgICAgICAgb3Zlcmxh
cCA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKHYxW2kxXS54MSA8IHYyW2kyXS54MSkKLSAgICAg
ICAgICAgICAgICBpMSsrOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGkyKys7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAob3ZlcmxhcCkKLSAgICAgICAgcnYuYXBwZW5k
KGludGVydmFsKTsKLX0KLQotdm9pZCBzdWJ0cmFjdFNoYXBlSW50ZXJ2YWxzKGNvbnN0IFZlY3Rv
cjxTaGFwZUludGVydmFsPiYgdjEsIGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYgdjIsIFZl
Y3RvcjxTaGFwZUludGVydmFsPiYgcnYpCi17Ci0gICAgc2l6ZV90IHYxU2l6ZSA9IHYxLnNpemUo
KTsKLSAgICBzaXplX3QgdjJTaXplID0gdjIuc2l6ZSgpOwotCi0gICAgaWYgKCF2MVNpemUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmICghdjJTaXplKQotICAgICAgICBydi5hcHBlbmRSYW5n
ZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNpemVfdCBpMSA9
IDAsIGkyID0gMDsKLSAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkp
OwotCi0gICAgICAgIHdoaWxlIChpMSA8IHJ2LnNpemUoKSAmJiBpMiA8IHYyU2l6ZSkgewotICAg
ICAgICAgICAgU2hhcGVJbnRlcnZhbCYgaW50ZXJ2YWwxID0gcnZbaTFdOwotICAgICAgICAgICAg
Y29uc3QgU2hhcGVJbnRlcnZhbCYgaW50ZXJ2YWwyID0gdjJbaTJdOwotCi0gICAgICAgICAgICBp
ZiAoaW50ZXJ2YWwyLngxIDw9IGludGVydmFsMS54MSAmJiBpbnRlcnZhbDIueDIgPj0gaW50ZXJ2
YWwxLngyKQotICAgICAgICAgICAgICAgIHJ2LnJlbW92ZShpMSk7Ci0gICAgICAgICAgICBlbHNl
IGlmIChpbnRlcnZhbDIueDIgPCBpbnRlcnZhbDEueDEpCi0gICAgICAgICAgICAgICAgaTIgKz0g
MTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGludGVydmFsMi54MSA+IGludGVydmFsMS54MikKLSAg
ICAgICAgICAgICAgICBpMSArPSAxOwotICAgICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngx
ID4gaW50ZXJ2YWwxLngxICYmIGludGVydmFsMi54MiA8IGludGVydmFsMS54MikgewotICAgICAg
ICAgICAgICAgIHJ2Lmluc2VydChpMSwgU2hhcGVJbnRlcnZhbChpbnRlcnZhbDEueDEsIGludGVy
dmFsMi54MSkpOwotICAgICAgICAgICAgICAgIGludGVydmFsMS54MSA9IGludGVydmFsMi54MjsK
LSAgICAgICAgICAgICAgICBpMiArPSAxOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnZh
bDIueDEgPD0gaW50ZXJ2YWwxLngxKSB7Ci0gICAgICAgICAgICAgICAgaW50ZXJ2YWwxLngxID0g
aW50ZXJ2YWwyLngyOwotICAgICAgICAgICAgICAgIGkyICs9IDE7Ci0gICAgICAgICAgICB9IGVs
c2UgIHsgLy8gKGludGVydmFsMi54MiA+PSBpbnRlcnZhbDEueDIpCi0gICAgICAgICAgICAgICAg
aW50ZXJ2YWwxLngyID0gaW50ZXJ2YWwyLngxOwotICAgICAgICAgICAgICAgIGkxICs9IDE7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnRl
cnZhbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmgK
aW5kZXggMGZmMTRkOC4uNTQzYmY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZUludGVydmFsLmgKQEAgLTM0LDI0ICszNCwxNzAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdHJ1Y3QgU2hhcGVJbnRlcnZhbCB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK2NsYXNzIFNoYXBlSW50ZXJ2YWwgewogcHVibGljOgotICAgIGZsb2F0IHgxOwotICAgIGZs
b2F0IHgyOworICAgIFNoYXBlSW50ZXJ2YWwoVCB4MSA9IDAsIFQgeDIgPSAwKQorICAgICAgICA6
IG1feDEoeDEpCisgICAgICAgICwgbV94Mih4MikKKyAgICB7CisgICAgICAgIEFTU0VSVCh4MiA+
PSB4MSk7CisgICAgfQorCisgICAgVCB4MSgpIGNvbnN0IHsgcmV0dXJuIG1feDE7IH0KKyAgICBU
IHgyKCkgY29uc3QgeyByZXR1cm4gbV94MjsgfQorCisgICAgdm9pZCBzZXQoVCB4MSwgVCB4MikK
KyAgICB7CisgICAgICAgIEFTU0VSVCh4MiA+PSB4MSk7CisgICAgICAgIG1feDEgPSB4MTsKKyAg
ICAgICAgbV94MiA9IHgyOworICAgIH0KKworICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgU2hhcGVJ
bnRlcnZhbDxUPiYgaW50ZXJ2YWwpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4geDIoKSA+
PSBpbnRlcnZhbC54MSgpICYmIHgxKCkgPD0gaW50ZXJ2YWwueDIoKTsKKyAgICB9CisKKyAgICBi
b29sIGludGVyc2VjdChjb25zdCBTaGFwZUludGVydmFsPFQ+JiBpLCBTaGFwZUludGVydmFsPFQ+
JiBydikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICh4MigpIDwgaS54MSgpIHx8IHgxKCkgPiBp
LngyKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJ2LnNldChzdGQ6Om1h
eCh4MSgpLCBpLngxKCkpLCBzdGQ6Om1pbih4MigpLCBpLngyKCkpKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgdHlwZWRlZiBWZWN0b3I8U2hhcGVJbnRlcnZhbDxUPiA+IFNo
YXBlSW50ZXJ2YWxWZWN0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I8U2hhcGVJbnRl
cnZhbDxUPiA+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKKyAgICB0eXBlZGVmIHR5
cGVuYW1lIFZlY3RvcjxTaGFwZUludGVydmFsPFQ+ID46Oml0ZXJhdG9yIGl0ZXJhdG9yOworCisg
ICAgc3RhdGljIHZvaWQgc29ydFZlY3RvcihTaGFwZUludGVydmFsVmVjdG9yJiBpbnRlcnZhbHMp
CisgICAgeworICAgICAgICBzdGQ6OnNvcnQoaW50ZXJ2YWxzLmJlZ2luKCksIGludGVydmFscy5l
bmQoKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdW5pdGVWZWN0b3JzKGNvbnN0IFNoYXBl
SW50ZXJ2YWxWZWN0b3ImIHYxLCBjb25zdCBTaGFwZUludGVydmFsVmVjdG9yJiB2MiwgU2hhcGVJ
bnRlcnZhbFZlY3RvciYgcnYpCisgICAgeworICAgICAgICBpZiAoIXYxLnNpemUoKSkKKyAgICAg
ICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYyLmJlZ2luKCksIHYyLmVuZCgpKTsKKyAgICAgICAgZWxz
ZSBpZiAoIXYyLnNpemUoKSkKKyAgICAgICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2luKCks
IHYxLmVuZCgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTaGFwZUludGVydmFsVmVj
dG9yIHYodjEuc2l6ZSgpICsgdjIuc2l6ZSgpKTsKKyAgICAgICAgICAgIFNoYXBlSW50ZXJ2YWw8
VD4qIGludGVydmFsID0gMDsKKworICAgICAgICAgICAgc3RkOjptZXJnZSh2MS5iZWdpbigpLCB2
MS5lbmQoKSwgdjIuYmVnaW4oKSwgdjIuZW5kKCksIHYuYmVnaW4oKSk7CisKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdi5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAg
IGlmICghaW50ZXJ2YWwpCisgICAgICAgICAgICAgICAgICAgIGludGVydmFsID0gJnZbaV07Cisg
ICAgICAgICAgICAgICAgZWxzZSBpZiAodltpXS54MSgpID49IGludGVydmFsLT54MSgpICYmIHZb
aV0ueDEoKSA8PSBpbnRlcnZhbC0+eDIoKSkgLy8gRklYTUU6IDFzdCA8PSB0ZXN0IG5vdCBuZWVk
ZWQ/CisgICAgICAgICAgICAgICAgICAgIGludGVydmFsLT5zZXQoaW50ZXJ2YWwtPngxKCksIHN0
ZDo6bWF4PFQ+KGludGVydmFsLT54MigpLCB2W2ldLngyKCkpKTsKKyAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRlcnZhbCk7CisgICAgICAg
ICAgICAgICAgICAgIGludGVydmFsID0gJnZbaV07CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoaW50ZXJ2YWwpCisgICAgICAgICAgICAgICAgcnYu
YXBwZW5kKCppbnRlcnZhbCk7CisgICAgICAgICAgICB9CisgICAgfQogCi0gICAgU2hhcGVJbnRl
cnZhbChmbG9hdCB4MSA9IDAsIGZsb2F0IHgyID0gMCkKLSAgICAgICAgOiB4MSh4MSkKLSAgICAg
ICAgLCB4Mih4MikKKyAgICBzdGF0aWMgdm9pZCBpbnRlcnNlY3RWZWN0b3JzKGNvbnN0IFNoYXBl
SW50ZXJ2YWxWZWN0b3ImIHYxLCBjb25zdCBTaGFwZUludGVydmFsVmVjdG9yJiB2MiwgU2hhcGVJ
bnRlcnZhbFZlY3RvciYgcnYpCiAgICAgeworICAgICAgICBzaXplX3QgdjFTaXplID0gdjEuc2l6
ZSgpOworICAgICAgICBzaXplX3QgdjJTaXplID0gdjIuc2l6ZSgpOworCisgICAgICAgIGlmICgh
djFTaXplIHx8ICF2MlNpemUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgU2hhcGVJ
bnRlcnZhbDxUPiBpbnRlcnZhbDsKKyAgICAgICAgYm9vbCBvdmVybGFwID0gZmFsc2U7CisgICAg
ICAgIHNpemVfdCBpMSA9IDA7CisgICAgICAgIHNpemVfdCBpMiA9IDA7CisKKyAgICAgICAgd2hp
bGUgKGkxIDwgdjFTaXplICYmIGkyIDwgdjJTaXplKSB7CisgICAgICAgICAgICBTaGFwZUludGVy
dmFsPFQ+IHYxMjsKKyAgICAgICAgICAgIGlmICh2MVtpMV0uaW50ZXJzZWN0KHYyW2kyXSwgdjEy
KSkgeworICAgICAgICAgICAgICAgIGlmICghb3ZlcmxhcCB8fCAhdjEyLmludGVyc2VjdChpbnRl
cnZhbCwgaW50ZXJ2YWwpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChvdmVybGFwKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKGludGVydmFsKTsKKyAgICAgICAgICAgICAg
ICAgICAgaW50ZXJ2YWwgPSB2MTI7CisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXAgPSB0cnVl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodjFbaTFdLngyKCkgPCB2
MltpMl0ueDIoKSkKKyAgICAgICAgICAgICAgICAgICAgaTErKzsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIGkyKys7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmIChvdmVybGFwKQorICAgICAgICAgICAgICAgICAgICBydi5hcHBlbmQo
aW50ZXJ2YWwpOworICAgICAgICAgICAgICAgIG92ZXJsYXAgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBpZiAodjFbaTFdLngxKCkgPCB2MltpMl0ueDEoKSkKKyAgICAgICAgICAgICAgICAgICAg
aTErKzsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGkyKys7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAob3ZlcmxhcCkKKyAgICAgICAg
ICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7CiAgICAgfQogCi0gICAgYm9vbCBpbnRlcnNlY3QoY29u
c3QgU2hhcGVJbnRlcnZhbCYsIFNoYXBlSW50ZXJ2YWwmKSBjb25zdDsKKyAgICBzdGF0aWMgdm9p
ZCBzdWJ0cmFjdFZlY3RvcnMoY29uc3QgU2hhcGVJbnRlcnZhbFZlY3RvciYgdjEsIGNvbnN0IFNo
YXBlSW50ZXJ2YWxWZWN0b3ImIHYyLCBTaGFwZUludGVydmFsVmVjdG9yJiBydikKKyAgICB7Cisg
ICAgICAgIHNpemVfdCB2MVNpemUgPSB2MS5zaXplKCk7CisgICAgICAgIHNpemVfdCB2MlNpemUg
PSB2Mi5zaXplKCk7CisKKyAgICAgICAgaWYgKCF2MVNpemUpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKCF2MlNpemUpCisgICAgICAgICAgICBydi5hcHBlbmRSYW5nZSh2MS5i
ZWdpbigpLCB2MS5lbmQoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2l6ZV90IGkx
ID0gMCwgaTIgPSAwOworICAgICAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEu
ZW5kKCkpOworCisgICAgICAgICAgICB3aGlsZSAoaTEgPCBydi5zaXplKCkgJiYgaTIgPCB2MlNp
emUpIHsKKyAgICAgICAgICAgICAgICBTaGFwZUludGVydmFsPFQ+JiBpbnRlcnZhbDEgPSBydltp
MV07CisgICAgICAgICAgICAgICAgY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgaW50ZXJ2YWwyID0g
djJbaTJdOworCisgICAgICAgICAgICAgICAgaWYgKGludGVydmFsMi54MSgpIDw9IGludGVydmFs
MS54MSgpICYmIGludGVydmFsMi54MigpID49IGludGVydmFsMS54MigpKQorICAgICAgICAgICAg
ICAgICAgICBydi5yZW1vdmUoaTEpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGludGVydmFs
Mi54MigpIDwgaW50ZXJ2YWwxLngxKCkpCisgICAgICAgICAgICAgICAgICAgIGkyICs9IDE7Cisg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngxKCkgPiBpbnRlcnZhbDEueDIoKSkK
KyAgICAgICAgICAgICAgICAgICAgaTEgKz0gMTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChp
bnRlcnZhbDIueDEoKSA+IGludGVydmFsMS54MSgpICYmIGludGVydmFsMi54MigpIDwgaW50ZXJ2
YWwxLngyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcnYuaW5zZXJ0KGkxLCBTaGFwZUludGVy
dmFsKGludGVydmFsMS54MSgpLCBpbnRlcnZhbDIueDEoKSkpOworICAgICAgICAgICAgICAgICAg
ICBpbnRlcnZhbDEuc2V0KGludGVydmFsMi54MigpLCBpbnRlcnZhbDEueDIoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGkyICs9IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnZh
bDIueDEoKSA8PSBpbnRlcnZhbDEueDEoKSkgeworICAgICAgICAgICAgICAgICAgICBpbnRlcnZh
bDEuc2V0KGludGVydmFsMi54MigpLCBpbnRlcnZhbDEueDIoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGkyICs9IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlICB7IC8vIChpbnRlcnZhbDIueDIo
KSA+PSBpbnRlcnZhbDEueDIoKSkKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwxLnNldChp
bnRlcnZhbDEueDEoKSwgaW50ZXJ2YWwyLngxKCkpOworICAgICAgICAgICAgICAgICAgICBpMSAr
PSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworcHJpdmF0ZToKKyAgICBUIG1feDE7CisgICAgVCBtX3gyOwogfTsKIAotdm9pZCBzb3J0U2hh
cGVJbnRlcnZhbHMoVmVjdG9yPFNoYXBlSW50ZXJ2YWw+Jik7Ci12b2lkIG1lcmdlU2hhcGVJbnRl
cnZhbHMoY29uc3QgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiwgY29uc3QgVmVjdG9yPFNoYXBlSW50
ZXJ2YWw+JiwgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+Jik7Ci12b2lkIGludGVyc2VjdFNoYXBlSW50
ZXJ2YWxzKGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYsIGNvbnN0IFZlY3RvcjxTaGFwZUlu
dGVydmFsPiYsIFZlY3RvcjxTaGFwZUludGVydmFsPiYpOwotdm9pZCBzdWJ0cmFjdFNoYXBlSW50
ZXJ2YWxzKGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYsIGNvbnN0IFZlY3RvcjxTaGFwZUlu
dGVydmFsPiYsIFZlY3RvcjxTaGFwZUludGVydmFsPiYpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFwZUludGVydmFsPFQ+JiBsaHMsIGNvbnN0
IFNoYXBlSW50ZXJ2YWw8VD4mIHJocykgeyByZXR1cm4gbGhzLngxKCkgPT0gcmhzLngxKCkgJiYg
bGhzLngyKCkgPT0gcmhzLngyKCk7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgbGhzLCBjb25zdCBTaGFwZUludGVy
dmFsPFQ+JiByaHMpIHsgcmV0dXJuICFvcGVyYXRvcj09KGxocywgcmhzKTsgfQordGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I8IChjb25zdCBTaGFwZUludGVydmFsPFQ+
JiBsaHMsIGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIHJocykgeyByZXR1cm4gbGhzLngxKCkgPCBy
aHMueDEoKTsgfQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I+IChj
b25zdCBTaGFwZUludGVydmFsPFQ+JiBsaHMsIGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIHJocykg
eyByZXR1cm4gb3BlcmF0b3I8IChyaHMsIGxocyk7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgbGhzLCBjb25zdCBT
aGFwZUludGVydmFsPFQ+JiByaHMpIHsgcmV0dXJuICFvcGVyYXRvcj4gKGxocywgcmhzKTsgfQor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBTaGFwZUlu
dGVydmFsPFQ+JiBsaHMsIGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIHJocykgeyByZXR1cm4gIW9w
ZXJhdG9yPCAobGhzLCByaHMpOyB9CisKK3R5cGVkZWYgU2hhcGVJbnRlcnZhbDxpbnQ+IEludFNo
YXBlSW50ZXJ2YWw7Cit0eXBlZGVmIFNoYXBlSW50ZXJ2YWw8ZmxvYXQ+IEZsb2F0U2hhcGVJbnRl
cnZhbDsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCg==
</data>
<flag name="commit-queue"
          id="232002"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209933</attachid>
            <date>2013-08-28 16:48:10 -0700</date>
            <delta_ts>2013-08-29 07:55:18 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>28064</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmY0NDI3Ny4uYWNmZmJlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMTYsNyArMjIxNiw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNw
cAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcAotICAgIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0
c2lkZUluZm8uY3BwCiAKICAgICByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNzJjYjllNC4uNDVjYWE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisy
MDEzLTA4LTI4ICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhcGVzXSBSZWRlZmluZSB0aGUgU2hhcGVJbnRlcnZhbHMgY2xhc3MgYXMgYSB0ZW1wbGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCB0aGlzIHdhcyBqdXN0IGFuIGludGVybmFsIHJlZmFjdG9yaW5nLgorCisgICAgICAg
IFRoZSBleGlzdGluZyBTaGFwZUludGVydmFscyBjbGFzcyBoYXMgYmVlbiBjb252ZXJ0ZWQgaW50
byBhIHRlbXBsYXRlIHdob3NlCisgICAgICAgIHR5cGUgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRo
ZSBpbnRlcnZhbCdzIHgxIGFuZCB4MiBob3Jpem9udGFsIGVuZHBvaW50cworICAgICAgICAoZm9y
bWVybHkgZmxvYXQpLiBUaGVyZSB3ZXJlIHNldmVyYWwgb3RoZXIgbWlub3IgY2hhbmdlcywgYWxs
IGluIHRoZSByZWFsbQorICAgICAgICBvZiByZWZhY3RvcmluZzoKKworICAgICAgICAtIFRoZSBv
cmlnaW5hbCB0eXBlIHdhcyBhIHN0cnVjdCB3aXRoIHB1YmxpYyB4MSBhbmQgeDIgZmllbGRzLiBJ
dCdzIG5vdyBhIGNsYXNzCisgICAgICAgIHdpdGggeDEgYW5kIHgyIGFjY2Vzc29ycy4gQVNTRVJU
UyBhcmUgbm93IHVzZWQgdG8gbWFpbnRhaW4gdGhlIHgyID49IHgxIGludmFyaWFudC4KKyAgICAg
ICAgSW4gdGhlIG9yaWdpbmFsIGNvZGUgdGhlIGludmFyaWFudCB3YXMgbm90IGNoZWNrZWQuCisK
KyAgICAgICAgLSBUaGUgbG9naWNhbCBjb21wYXJpc29uIG9wZXJhdG9ycyBoYXZlIGJlZW4gb3Zl
cmxvYWRlZCBmb3IgU2hhcGVJbnRlcnZhbC4KKyAgICAgICAgVGhpcyBvYnZpYXRlcyB0aGUgSW50
ZXJ2YWxYMUNvbXBhcmF0b3IgY2xhc3Mgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZC4KKworICAgICAg
ICAtIFRoZSBuYW1lcyBvZiB0aGUgZ2xvYmFsIFNoYXBlSW50ZXJ2YWwgVmVjdG9yIHNldCBvcGVy
YXRpb24gbWV0aG9kcyBoYXZlIGJlZW4KKyAgICAgICAgY2hhbmdlZCB0byByZWZsZWN0IHRoZSBm
YWN0IHRoYXQgdGhleSdyZSBub3cgbWVtYmVycyBvZiB0aGUgdGVtcGxhdGUgY2xhc3MsCisgICAg
ICAgIHJhdGhlciB0aGFuIGdsb2JhbHMuCisKKyAgICAgICAgUG9seWdvblNoYXBlLmNwcCBkZXBl
bmRlZCBvbiB0aGUgU2hhcGVJbnRlcnZhbCBjbGFzcy4gSW4gdGhlIG9uZSBvciB0d28gcGxhY2Vz
CisgICAgICAgIHdoZXJlIGFuIGludGVydmFsJ3MgeDEgb3IgeDEgZmllbGRzIGhhZCBiZWVuIHNl
dCBleHBsaWNpdGx5LCBTaGFwZUludGVydmFsOjpzZXQoKQorICAgICAgICBpcyBub3cgdXNlZCB0
byBzZXQgYm90aCBmaWVsZHMuIFRoaXMgYWxzbyBlbmFibGVzIHRoZSBpbnZhcmlhbnQgY2hlY2sg
bWVudGlvbmVkCisgICAgICAgIGVhcmxpZXIuIFRoZSBvdGhlciBjaGFuZ2VzIHRvIHRoaXMgY2xh
c3MgYXJlIHN5bnRhdGljLCB0byBhY2NvdW50IGZvciB0aGUgU2hhcGVJbnRlcnZhbAorICAgICAg
ICBjbGFzcydzIGNoYW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFwcGVuZEludGVydmFsWCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlWEludGVy
c2VjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9q
ZWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQb2x5Z29uU2hhcGU6OmdldEV4Y2x1ZGVkSW50
ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvbHlnb25TaGFwZTo6Z2V0SW5jbHVkZWRJbnRl
cnZhbHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaDogVGhlIGVudGlyZSBpbXBsZW1l
bnRhdGlvbiBpcyBub3cgaGVyZS4gCisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjpT
aGFwZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OngxKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OngyKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXBlSW50ZXJ2YWw6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjpvdmVy
bGFwcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjppbnRlcnNlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcGVJbnRlcnZhbDo6c29ydFZlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cGVJbnRlcnZhbDo6aW50ZXJzZWN0VmVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUlu
dGVydmFsOjpzdWJ0cmFjdFZlY3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPCApOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I+ICk6CisgICAgICAgIChXZWJDb3Jl
OjpvcGVyYXRvcjw9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPj0pOgorCiAyMDEzLTA4
LTI4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgaXMgcGFpbnRpbmcgdmlkZW8gZnJhbWVz
IHVuZGVyIHRoZSB2aWRlbyBsYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
NmQ2NGNhOS4uM2MwMmRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NTc1
LDcgKzQ1NzUsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVJbmZvLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbnNpZGVJbmZvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZUluc2lkZUluZm8uaCBcCi0JU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZUludGVydmFsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZUludGVydmFsLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDY0NDUzMjguLjUyZjUyNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQpAQCAtMTI0MCw3ICsxMjQwLDYgQEAgU09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHAgXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcCBcCiAgICAg
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwIFwKLSAgICByZW5kZXJpbmcvc2hh
cGVzL1NoYXBlSW50ZXJ2YWwuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lk
ZUluZm8uY3BwIFwKICAgICByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwIFwKICAgICBy
ZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGU0MjBhYzMuLjVkMjkzZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTA5
OTksNyArMTA5OTksNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNo
YXBlc1xSZWN0YW5nbGVTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
ZW5kZXJpbmdcc2hhcGVzXFNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xzaGFwZXNcU2hhcGVJbnNpZGVJbmZvLmNwcCIgLz4KLSAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcU2hhcGVJbnRlcnZhbC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlT3V0c2lkZUluZm8u
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdQYXRo
RGF0YS5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycwppbmRleCA3ZDBkM2Y1Li4xOTFjM2NlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBA
IC0xLDQgKzEsNCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4K
Kzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBUb29sc1Zl
cnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVy
L21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXA+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJEZXJp
dmVkU291cmNlcyI+CkBAIC0yNDUxLDkgKzI0NTEsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uY3BwIj4KICAgICAgIDxGaWx0
ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW50ZXJ2YWwuY3BwIj4KLSAgICAgIDxG
aWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlT3V0c2lkZUluZm8uY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjM0
ZmFkZC4uYTY5ZWJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNTg1Nyw3ICs1ODU3LDYgQEAKIAkJRkQ0NUE5NTkxNzVENDE3
MTAwQzIxRUM4IC8qIFBvbHlnb25TaGFwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDA4QTg3QTE3NUQzOTI2MDAyQ0QzNjAgLyogUG9seWdvblNo
YXBlLmNwcCAqLzsgfTsKIAkJRkQ0NUE5NUExNzVENDE3MTAwQzIxRUM4IC8qIFJlY3RhbmdsZVNo
YXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZE
MDhBODdDMTc1RDM5MjYwMDJDRDM2MCAvKiBSZWN0YW5nbGVTaGFwZS5jcHAgKi87IH07CiAJCUZE
NDVBOTVCMTc1RDQxRUUwMEMyMUVDOCAvKiBTaGFwZUludGVydmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDA4QTg4NTE3NUQzOTI2MDAyQ0QzNjAg
LyogU2hhcGVJbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCUZENDVBOTVDMTc1RDQyMEQwMEMyMUVDOCAvKiBTaGFwZUludGVydmFsLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDhBODg0
MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUludGVydmFsLmNwcCAqLzsgfTsKIAkJRkQ1MzczNTIx
MzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZENTM3MzUwMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9s
ZS5jcHAgKi87IH07CiAJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ1MzczNTExMzdC
NjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggKi87IH07CiAJCUZENTM3MzU2MTM3QjY1M0IwMDAw
OERDRSAvKiBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ1MzczNTQxMzdCNjUzQjAwMDA4RENFIC8qIER5
bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgKi87IH07CkBAIC0xMjU1Myw3ICsxMjU1Miw2IEBA
CiAJCUZEMDhBODgxMTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUluZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZEMDhBODgyMTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUluc2lkZUluZm8uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcGVJbnNpZGVJbmZvLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwOEE4ODMxNzVEMzkyNjAwMkNEMzYwIC8q
IFNoYXBlSW5zaWRlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFw
ZUluc2lkZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQwOEE4ODQxNzVE
MzkyNjAwMkNEMzYwIC8qIFNoYXBlSW50ZXJ2YWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhcGVJbnRlcnZhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZEMDhBODg1MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUludGVydmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXBlSW50ZXJ2YWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkQwOEE4ODYxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlT3V0c2lk
ZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcGVPdXRz
aWRlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMDhBODg3MTc1RDM5
MjYwMDJDRDM2MCAvKiBTaGFwZU91dHNpZGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYXBlT3V0c2lkZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIwNTM2LDcgKzIwNTM0LDYgQEAKIAkJCQlGRDA4QTg4MTE3NUQzOTI2MDAyQ0QzNjAgLyog
U2hhcGVJbmZvLmggKi8sCiAJCQkJRkQwOEE4ODIxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW5z
aWRlSW5mby5jcHAgKi8sCiAJCQkJRkQwOEE4ODMxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW5z
aWRlSW5mby5oICovLAotCQkJCUZEMDhBODg0MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUludGVy
dmFsLmNwcCAqLywKIAkJCQlGRDA4QTg4NTE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVJbnRlcnZh
bC5oICovLAogCQkJCUZEMDhBODg2MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZU91dHNpZGVJbmZv
LmNwcCAqLywKIAkJCQlGRDA4QTg4NzE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVPdXRzaWRlSW5m
by5oICovLApAQCAtMjYzODYsNyArMjYzODMsNiBAQAogCQkJCUZENDVBOTUzMTc1RDNGQjgwMEMy
MUVDOCAvKiBTaGFwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1NDE3NUQzRkI4MDBD
MjFFQzggLyogU2hhcGVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENDVBOTU1MTc1RDNG
QjgwMEMyMUVDOCAvKiBTaGFwZUluc2lkZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkQ0
NUE5NUMxNzVENDIwRDAwQzIxRUM4IC8qIFNoYXBlSW50ZXJ2YWwuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkQ0NUE5NTYxNzVEM0ZCODAwQzIxRUM4IC8qIFNoYXBlT3V0c2lkZUluZm8uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE0QTk1NEQwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJERDhFMzBEOTFFMkI0MDAwRjg5RUUgLyogU2hh
cmVkQnVmZmVyQ0YuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAKaW5kZXggZTIxMjRmZC4uYzJkZWIzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBvbHlnb25T
aGFwZS5oIgogCisjaW5jbHVkZSAiU2hhcGVJbnRlcnZhbC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTIyNCwxMiArMjI1LDEyIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBnZXRWZXJ0ZXhJbnRlcnNlY3Rpb25WZXJ0aWNlcyhjb25zdCBFZGdl
SW50ZXJzZWN0aW9uJiBpbnRlcnNlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgYm9vbCBhcHBlbmRJbnRlcnZhbFgoZmxvYXQgeCwgYm9vbCBpbnNpZGUsIFZlY3RvcjxTaGFw
ZUludGVydmFsPiYgcmVzdWx0KQorc3RhdGljIGlubGluZSBib29sIGFwcGVuZEludGVydmFsWChm
bG9hdCB4LCBib29sIGluc2lkZSwgVmVjdG9yPEZsb2F0U2hhcGVJbnRlcnZhbD4mIHJlc3VsdCkK
IHsKICAgICBpZiAoIWluc2lkZSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTaGFwZUludGVydmFs
KHgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChGbG9hdFNoYXBlSW50ZXJ2YWwoeCwgeCkpOwog
ICAgIGVsc2UKLSAgICAgICAgcmVzdWx0W3Jlc3VsdC5zaXplKCkgLSAxXS54MiA9IHg7CisgICAg
ICAgIHJlc3VsdC5sYXN0KCkuc2V0KHJlc3VsdC5sYXN0KCkueDEoKSwgeCk7CiAKICAgICByZXR1
cm4gIWluc2lkZTsKIH0KQEAgLTI0MSw3ICsyNDIsNyBAQCBzdGF0aWMgYm9vbCBjb21wYXJlRWRn
ZUludGVyc2VjdGlvblgoY29uc3QgRWRnZUludGVyc2VjdGlvbiYgaW50ZXJzZWN0aW9uMSwgY29u
cwogICAgIHJldHVybiAoeDEgPT0geDIpID8gaW50ZXJzZWN0aW9uMS50eXBlIDwgaW50ZXJzZWN0
aW9uMi50eXBlIDogeDEgPCB4MjsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZVhJbnRlcnNlY3Rp
b25zKGNvbnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgeSwgYm9vbCBpc01pblksIFZl
Y3RvcjxTaGFwZUludGVydmFsPiYgcmVzdWx0KQorc3RhdGljIHZvaWQgY29tcHV0ZVhJbnRlcnNl
Y3Rpb25zKGNvbnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgeSwgYm9vbCBpc01pblks
IFZlY3RvcjxGbG9hdFNoYXBlSW50ZXJ2YWw+JiByZXN1bHQpCiB7CiAgICAgVmVjdG9yPGNvbnN0
IEZsb2F0UG9seWdvbkVkZ2UqPiBlZGdlczsKICAgICBpZiAoIXBvbHlnb24ub3ZlcmxhcHBpbmdF
ZGdlcyh5LCB5LCBlZGdlcykpCkBAIC0zMTEsNyArMzEyLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0
ZVhJbnRlcnNlY3Rpb25zKGNvbnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgeSwgYm9v
bCBpc00KICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVPdmVybGFwcGluZ0VkZ2VYUHJv
amVjdGlvbnMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCB5MSwgZmxvYXQgeTIs
IFZlY3RvcjxTaGFwZUludGVydmFsPiYgcmVzdWx0KQorc3RhdGljIHZvaWQgY29tcHV0ZU92ZXJs
YXBwaW5nRWRnZVhQcm9qZWN0aW9ucyhjb25zdCBGbG9hdFBvbHlnb24mIHBvbHlnb24sIGZsb2F0
IHkxLCBmbG9hdCB5MiwgVmVjdG9yPEZsb2F0U2hhcGVJbnRlcnZhbD4mIHJlc3VsdCkKIHsKICAg
ICBWZWN0b3I8Y29uc3QgRmxvYXRQb2x5Z29uRWRnZSo+IGVkZ2VzOwogICAgIGlmICghcG9seWdv
bi5vdmVybGFwcGluZ0VkZ2VzKHkxLCB5MiwgZWRnZXMpKQpAQCAtMzM5LDEwICszNDAsMTAgQEAg
c3RhdGljIHZvaWQgY29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9qZWN0aW9ucyhjb25zdCBGbG9h
dFBvbHlnb24mIHBvbHlnb24sIGZsb2EKICAgICAgICAgICAgIHN0ZDo6c3dhcCh4MSwgeDIpOwog
CiAgICAgICAgIGlmICh4MiA+IHgxKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTaGFwZUlu
dGVydmFsKHgxLCB4MikpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGbG9hdFNoYXBlSW50
ZXJ2YWwoeDEsIHgyKSk7CiAgICAgfQogCi0gICAgc29ydFNoYXBlSW50ZXJ2YWxzKHJlc3VsdCk7
CisgICAgRmxvYXRTaGFwZUludGVydmFsOjpzb3J0VmVjdG9yKHJlc3VsdCk7CiB9CiAKIHZvaWQg
UG9seWdvblNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3As
IExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmIHJlc3VsdCkgY29uc3QKQEAg
LTM1NCwyMiArMzU1LDIyIEBAIHZvaWQgUG9seWdvblNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFs
cyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhCiAgICAgZmxvYXQgeTEg
PSBsb2dpY2FsVG9wOwogICAgIGZsb2F0IHkyID0gbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQ7
CiAKLSAgICBWZWN0b3I8U2hhcGVJbnRlcnZhbD4geTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZhbHM7
CisgICAgVmVjdG9yPEZsb2F0U2hhcGVJbnRlcnZhbD4geTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZh
bHM7CiAgICAgY29tcHV0ZVhJbnRlcnNlY3Rpb25zKHBvbHlnb24sIHkxLCB0cnVlLCB5MVhJbnRl
cnZhbHMpOwogICAgIGNvbXB1dGVYSW50ZXJzZWN0aW9ucyhwb2x5Z29uLCB5MiwgZmFsc2UsIHky
WEludGVydmFscyk7CiAKLSAgICBWZWN0b3I8U2hhcGVJbnRlcnZhbD4gbWVyZ2VkSW50ZXJ2YWxz
OwotICAgIG1lcmdlU2hhcGVJbnRlcnZhbHMoeTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZhbHMsIG1l
cmdlZEludGVydmFscyk7CisgICAgVmVjdG9yPEZsb2F0U2hhcGVJbnRlcnZhbD4gbWVyZ2VkSW50
ZXJ2YWxzOworICAgIEZsb2F0U2hhcGVJbnRlcnZhbDo6dW5pdGVWZWN0b3JzKHkxWEludGVydmFs
cywgeTJYSW50ZXJ2YWxzLCBtZXJnZWRJbnRlcnZhbHMpOwogCi0gICAgVmVjdG9yPFNoYXBlSW50
ZXJ2YWw+IGVkZ2VJbnRlcnZhbHM7CisgICAgVmVjdG9yPEZsb2F0U2hhcGVJbnRlcnZhbD4gZWRn
ZUludGVydmFsczsKICAgICBjb21wdXRlT3ZlcmxhcHBpbmdFZGdlWFByb2plY3Rpb25zKHBvbHln
b24sIHkxLCB5MiwgZWRnZUludGVydmFscyk7CiAKLSAgICBWZWN0b3I8U2hhcGVJbnRlcnZhbD4g
ZXhjbHVkZWRJbnRlcnZhbHM7Ci0gICAgbWVyZ2VTaGFwZUludGVydmFscyhtZXJnZWRJbnRlcnZh
bHMsIGVkZ2VJbnRlcnZhbHMsIGV4Y2x1ZGVkSW50ZXJ2YWxzKTsKKyAgICBWZWN0b3I8RmxvYXRT
aGFwZUludGVydmFsPiBleGNsdWRlZEludGVydmFsczsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6
OnVuaXRlVmVjdG9ycyhtZXJnZWRJbnRlcnZhbHMsIGVkZ2VJbnRlcnZhbHMsIGV4Y2x1ZGVkSW50
ZXJ2YWxzKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGNsdWRlZEludGVydmFs
cy5zaXplKCk7ICsraSkgewotICAgICAgICBTaGFwZUludGVydmFsIGludGVydmFsID0gZXhjbHVk
ZWRJbnRlcnZhbHNbaV07Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoaW50ZXJ2
YWwueDEsIGludGVydmFsLngyKSk7CisgICAgICAgIEZsb2F0U2hhcGVJbnRlcnZhbCBpbnRlcnZh
bCA9IGV4Y2x1ZGVkSW50ZXJ2YWxzW2ldOworICAgICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdt
ZW50KGludGVydmFsLngxKCksIGludGVydmFsLngyKCkpKTsKICAgICB9CiB9CiAKQEAgLTM4Miwy
MiArMzgzLDIyIEBAIHZvaWQgUG9seWdvblNoYXBlOjpnZXRJbmNsdWRlZEludGVydmFscyhMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhCiAgICAgZmxvYXQgeTEgPSBsb2dp
Y2FsVG9wOwogICAgIGZsb2F0IHkyID0gbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQ7CiAKLSAg
ICBWZWN0b3I8U2hhcGVJbnRlcnZhbD4geTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZhbHM7CisgICAg
VmVjdG9yPEZsb2F0U2hhcGVJbnRlcnZhbD4geTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZhbHM7CiAg
ICAgY29tcHV0ZVhJbnRlcnNlY3Rpb25zKHBvbHlnb24sIHkxLCB0cnVlLCB5MVhJbnRlcnZhbHMp
OwogICAgIGNvbXB1dGVYSW50ZXJzZWN0aW9ucyhwb2x5Z29uLCB5MiwgZmFsc2UsIHkyWEludGVy
dmFscyk7CiAKLSAgICBWZWN0b3I8U2hhcGVJbnRlcnZhbD4gY29tbW9uSW50ZXJ2YWxzOwotICAg
IGludGVyc2VjdFNoYXBlSW50ZXJ2YWxzKHkxWEludGVydmFscywgeTJYSW50ZXJ2YWxzLCBjb21t
b25JbnRlcnZhbHMpOworICAgIFZlY3RvcjxGbG9hdFNoYXBlSW50ZXJ2YWw+IGNvbW1vbkludGVy
dmFsczsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6OmludGVyc2VjdFZlY3RvcnMoeTFYSW50ZXJ2
YWxzLCB5MlhJbnRlcnZhbHMsIGNvbW1vbkludGVydmFscyk7CiAKLSAgICBWZWN0b3I8U2hhcGVJ
bnRlcnZhbD4gZWRnZUludGVydmFsczsKKyAgICBWZWN0b3I8RmxvYXRTaGFwZUludGVydmFsPiBl
ZGdlSW50ZXJ2YWxzOwogICAgIGNvbXB1dGVPdmVybGFwcGluZ0VkZ2VYUHJvamVjdGlvbnMocG9s
eWdvbiwgeTEsIHkyLCBlZGdlSW50ZXJ2YWxzKTsKIAotICAgIFZlY3RvcjxTaGFwZUludGVydmFs
PiBpbmNsdWRlZEludGVydmFsczsKLSAgICBzdWJ0cmFjdFNoYXBlSW50ZXJ2YWxzKGNvbW1vbklu
dGVydmFscywgZWRnZUludGVydmFscywgaW5jbHVkZWRJbnRlcnZhbHMpOworICAgIFZlY3RvcjxG
bG9hdFNoYXBlSW50ZXJ2YWw+IGluY2x1ZGVkSW50ZXJ2YWxzOworICAgIEZsb2F0U2hhcGVJbnRl
cnZhbDo6c3VidHJhY3RWZWN0b3JzKGNvbW1vbkludGVydmFscywgZWRnZUludGVydmFscywgaW5j
bHVkZWRJbnRlcnZhbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluY2x1ZGVk
SW50ZXJ2YWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFNoYXBlSW50ZXJ2YWwgaW50ZXJ2YWwg
PSBpbmNsdWRlZEludGVydmFsc1tpXTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5lU2VnbWVu
dChpbnRlcnZhbC54MSwgaW50ZXJ2YWwueDIpKTsKKyAgICAgICAgRmxvYXRTaGFwZUludGVydmFs
IGludGVydmFsID0gaW5jbHVkZWRJbnRlcnZhbHNbaV07CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
TGluZVNlZ21lbnQoaW50ZXJ2YWwueDEoKSwgaW50ZXJ2YWwueDIoKSkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmgKaW5kZXgg
NjI4YWMzYS4uZWQ2OWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9Qb2x5Z29uU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1BvbHlnb25TaGFwZS5oCkBAIC0zMiw3ICszMiw2IEBACiAKICNpbmNsdWRlICJGbG9hdFBvbHln
b24uaCIKICNpbmNsdWRlICJTaGFwZS5oIgotI2luY2x1ZGUgIlNoYXBlSW50ZXJ2YWwuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZUludGVydmFsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU1
ODAzOC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
SW50ZXJ2YWwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAg
ICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUwotICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIENPUFlSSUdIVCBIT0xERVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKLSAqIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikKLSAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSAqIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQKLSAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcGVJbnRlcnZhbC5oIgotCi0jaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgSW50ZXJ2
YWxYMUNvbXBhcmF0b3IgewotICAgIGJvb2wgb3BlcmF0b3IoKSAoY29uc3QgU2hhcGVJbnRlcnZh
bCYgaTEsIGNvbnN0IFNoYXBlSW50ZXJ2YWwmIGkyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIGkxLngxIDwgaTIueDE7Ci0gICAgfQotfTsKLQotYm9vbCBTaGFwZUludGVydmFsOjppbnRl
cnNlY3QoY29uc3QgU2hhcGVJbnRlcnZhbCYgaSwgU2hhcGVJbnRlcnZhbCYgcnYpIGNvbnN0Ci17
Ci0gICAgaWYgKHgyIDwgaS54MSB8fCB4MSA+IGkueDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBydi54MSA9IHN0ZDo6bWF4KHgxLCBpLngxKTsKLSAgICBydi54MiA9IHN0ZDo6bWluKHgy
LCBpLngyKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBzb3J0U2hhcGVJbnRlcnZhbHMo
VmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiB2KQotewotICAgIHN0ZDo6c29ydCh2LmJlZ2luKCksIHYu
ZW5kKCksIEludGVydmFsWDFDb21wYXJhdG9yKCkpOwotfQotCi12b2lkIG1lcmdlU2hhcGVJbnRl
cnZhbHMoY29uc3QgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiB2MSwgY29uc3QgVmVjdG9yPFNoYXBl
SW50ZXJ2YWw+JiB2MiwgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiBydikKLXsKLSAgICBpZiAoIXYx
LnNpemUoKSkKLSAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjIuYmVnaW4oKSwgdjIuZW5kKCkpOwot
ICAgIGVsc2UgaWYgKCF2Mi5zaXplKCkpCi0gICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2lu
KCksIHYxLmVuZCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+
IHYodjEuc2l6ZSgpICsgdjIuc2l6ZSgpKTsKLSAgICAgICAgU2hhcGVJbnRlcnZhbCogaW50ZXJ2
YWwgPSAwOwotCi0gICAgICAgIHN0ZDo6bWVyZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCksIHYyLmJl
Z2luKCksIHYyLmVuZCgpLCB2LmJlZ2luKCksIEludGVydmFsWDFDb21wYXJhdG9yKCkpOwotCi0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdi5zaXplKCk7IGkrKykgewotICAgICAgICAg
ICAgaWYgKCFpbnRlcnZhbCkKLSAgICAgICAgICAgICAgICBpbnRlcnZhbCA9ICZ2W2ldOwotICAg
ICAgICAgICAgZWxzZSBpZiAodltpXS54MSA+PSBpbnRlcnZhbC0+eDEgJiYgdltpXS54MSA8PSBp
bnRlcnZhbC0+eDIpIC8vIEZJWE1FOiAxc3QgPD0gdGVzdCBub3QgbmVlZGVkPwotICAgICAgICAg
ICAgICAgIGludGVydmFsLT54MiA9IHN0ZDo6bWF4KGludGVydmFsLT54MiwgdltpXS54Mik7Ci0g
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBydi5hcHBlbmQoKmludGVydmFsKTsK
LSAgICAgICAgICAgICAgICBpbnRlcnZhbCA9ICZ2W2ldOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGludGVydmFsKQotICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRl
cnZhbCk7Ci0gICAgfQotfQotCi12b2lkIGludGVyc2VjdFNoYXBlSW50ZXJ2YWxzKGNvbnN0IFZl
Y3RvcjxTaGFwZUludGVydmFsPiYgdjEsIGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYgdjIs
IFZlY3RvcjxTaGFwZUludGVydmFsPiYgcnYpCi17Ci0gICAgc2l6ZV90IHYxU2l6ZSA9IHYxLnNp
emUoKTsKLSAgICBzaXplX3QgdjJTaXplID0gdjIuc2l6ZSgpOwotCi0gICAgaWYgKCF2MVNpemUg
fHwgIXYyU2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU2hhcGVJbnRlcnZhbCBpbnRlcnZh
bDsKLSAgICBib29sIG92ZXJsYXAgPSBmYWxzZTsKLSAgICBzaXplX3QgaTEgPSAwOwotICAgIHNp
emVfdCBpMiA9IDA7Ci0KLSAgICB3aGlsZSAoaTEgPCB2MVNpemUgJiYgaTIgPCB2MlNpemUpIHsK
LSAgICAgICAgU2hhcGVJbnRlcnZhbCB2MTI7Ci0gICAgICAgIGlmICh2MVtpMV0uaW50ZXJzZWN0
KHYyW2kyXSwgdjEyKSkgewotICAgICAgICAgICAgaWYgKCFvdmVybGFwIHx8ICF2MTIuaW50ZXJz
ZWN0KGludGVydmFsLCBpbnRlcnZhbCkpIHsKLSAgICAgICAgICAgICAgICBpZiAob3ZlcmxhcCkK
LSAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKGludGVydmFsKTsKLSAgICAgICAgICAgICAg
ICBpbnRlcnZhbCA9IHYxMjsKLSAgICAgICAgICAgICAgICBvdmVybGFwID0gdHJ1ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2MVtpMV0ueDIgPCB2MltpMl0ueDIpCi0gICAgICAg
ICAgICAgICAgaTErKzsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpMisrOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG92ZXJsYXApCi0gICAgICAgICAgICAg
ICAgcnYuYXBwZW5kKGludGVydmFsKTsKLSAgICAgICAgICAgIG92ZXJsYXAgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGlmICh2MVtpMV0ueDEgPCB2MltpMl0ueDEpCi0gICAgICAgICAgICAgICAgaTEr
KzsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpMisrOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgaWYgKG92ZXJsYXApCi0gICAgICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7Ci19
Ci0KLXZvaWQgc3VidHJhY3RTaGFwZUludGVydmFscyhjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZh
bD4mIHYxLCBjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mIHYyLCBWZWN0b3I8U2hhcGVJbnRl
cnZhbD4mIHJ2KQotewotICAgIHNpemVfdCB2MVNpemUgPSB2MS5zaXplKCk7Ci0gICAgc2l6ZV90
IHYyU2l6ZSA9IHYyLnNpemUoKTsKLQotICAgIGlmICghdjFTaXplKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoIXYyU2l6ZSkKLSAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwg
djEuZW5kKCkpOwotICAgIGVsc2UgewotICAgICAgICBzaXplX3QgaTEgPSAwLCBpMiA9IDA7Ci0g
ICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpKTsKLQotICAgICAgICB3
aGlsZSAoaTEgPCBydi5zaXplKCkgJiYgaTIgPCB2MlNpemUpIHsKLSAgICAgICAgICAgIFNoYXBl
SW50ZXJ2YWwmIGludGVydmFsMSA9IHJ2W2kxXTsKLSAgICAgICAgICAgIGNvbnN0IFNoYXBlSW50
ZXJ2YWwmIGludGVydmFsMiA9IHYyW2kyXTsKLQotICAgICAgICAgICAgaWYgKGludGVydmFsMi54
MSA8PSBpbnRlcnZhbDEueDEgJiYgaW50ZXJ2YWwyLngyID49IGludGVydmFsMS54MikKLSAgICAg
ICAgICAgICAgICBydi5yZW1vdmUoaTEpOwotICAgICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2YWwy
LngyIDwgaW50ZXJ2YWwxLngxKQotICAgICAgICAgICAgICAgIGkyICs9IDE7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChpbnRlcnZhbDIueDEgPiBpbnRlcnZhbDEueDIpCi0gICAgICAgICAgICAgICAg
aTEgKz0gMTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGludGVydmFsMi54MSA+IGludGVydmFsMS54
MSAmJiBpbnRlcnZhbDIueDIgPCBpbnRlcnZhbDEueDIpIHsKLSAgICAgICAgICAgICAgICBydi5p
bnNlcnQoaTEsIFNoYXBlSW50ZXJ2YWwoaW50ZXJ2YWwxLngxLCBpbnRlcnZhbDIueDEpKTsKLSAg
ICAgICAgICAgICAgICBpbnRlcnZhbDEueDEgPSBpbnRlcnZhbDIueDI7Ci0gICAgICAgICAgICAg
ICAgaTIgKz0gMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaW50ZXJ2YWwyLngxIDw9IGludGVy
dmFsMS54MSkgewotICAgICAgICAgICAgICAgIGludGVydmFsMS54MSA9IGludGVydmFsMi54MjsK
LSAgICAgICAgICAgICAgICBpMiArPSAxOwotICAgICAgICAgICAgfSBlbHNlICB7IC8vIChpbnRl
cnZhbDIueDIgPj0gaW50ZXJ2YWwxLngyKQotICAgICAgICAgICAgICAgIGludGVydmFsMS54MiA9
IGludGVydmFsMi54MTsKLSAgICAgICAgICAgICAgICBpMSArPSAxOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5oCmluZGV4IDBmZjE0ZDgu
LjU0M2JmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVJbnRlcnZhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJ
bnRlcnZhbC5oCkBAIC0zNCwyNCArMzQsMTcwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RydWN0IFNoYXBlSW50ZXJ2YWwgewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBTaGFw
ZUludGVydmFsIHsKIHB1YmxpYzoKLSAgICBmbG9hdCB4MTsKLSAgICBmbG9hdCB4MjsKKyAgICBT
aGFwZUludGVydmFsKFQgeDEgPSAwLCBUIHgyID0gMCkKKyAgICAgICAgOiBtX3gxKHgxKQorICAg
ICAgICAsIG1feDIoeDIpCisgICAgeworICAgICAgICBBU1NFUlQoeDIgPj0geDEpOworICAgIH0K
KworICAgIFQgeDEoKSBjb25zdCB7IHJldHVybiBtX3gxOyB9CisgICAgVCB4MigpIGNvbnN0IHsg
cmV0dXJuIG1feDI7IH0KKworICAgIHZvaWQgc2V0KFQgeDEsIFQgeDIpCisgICAgeworICAgICAg
ICBBU1NFUlQoeDIgPj0geDEpOworICAgICAgICBtX3gxID0geDE7CisgICAgICAgIG1feDIgPSB4
MjsKKyAgICB9CisKKyAgICBib29sIG92ZXJsYXBzKGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGlu
dGVydmFsKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHgyKCkgPj0gaW50ZXJ2YWwueDEo
KSAmJiB4MSgpIDw9IGludGVydmFsLngyKCk7CisgICAgfQorCisgICAgYm9vbCBpbnRlcnNlY3Qo
Y29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgaSwgU2hhcGVJbnRlcnZhbDxUPiYgcnYpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoeDIoKSA8IGkueDEoKSB8fCB4MSgpID4gaS54MigpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBydi5zZXQoc3RkOjptYXgoeDEoKSwgaS54MSgp
KSwgc3RkOjptaW4oeDIoKSwgaS54MigpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHR5cGVkZWYgVmVjdG9yPFNoYXBlSW50ZXJ2YWw8VD4gPiBTaGFwZUludGVydmFsVmVj
dG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yPFNoYXBlSW50ZXJ2YWw8VD4gPjo6Y29u
c3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I8
U2hhcGVJbnRlcnZhbDxUPiA+OjppdGVyYXRvciBpdGVyYXRvcjsKKworICAgIHN0YXRpYyB2b2lk
IHNvcnRWZWN0b3IoU2hhcGVJbnRlcnZhbFZlY3RvciYgaW50ZXJ2YWxzKQorICAgIHsKKyAgICAg
ICAgc3RkOjpzb3J0KGludGVydmFscy5iZWdpbigpLCBpbnRlcnZhbHMuZW5kKCkpOworICAgIH0K
KworICAgIHN0YXRpYyB2b2lkIHVuaXRlVmVjdG9ycyhjb25zdCBTaGFwZUludGVydmFsVmVjdG9y
JiB2MSwgY29uc3QgU2hhcGVJbnRlcnZhbFZlY3RvciYgdjIsIFNoYXBlSW50ZXJ2YWxWZWN0b3Im
IHJ2KQorICAgIHsKKyAgICAgICAgaWYgKCF2MS5zaXplKCkpCisgICAgICAgICAgICBydi5hcHBl
bmRSYW5nZSh2Mi5iZWdpbigpLCB2Mi5lbmQoKSk7CisgICAgICAgIGVsc2UgaWYgKCF2Mi5zaXpl
KCkpCisgICAgICAgICAgICBydi5hcHBlbmRSYW5nZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgU2hhcGVJbnRlcnZhbFZlY3RvciB2KHYxLnNpemUo
KSArIHYyLnNpemUoKSk7CisgICAgICAgICAgICBTaGFwZUludGVydmFsPFQ+KiBpbnRlcnZhbCA9
IDA7CisKKyAgICAgICAgICAgIHN0ZDo6bWVyZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCksIHYyLmJl
Z2luKCksIHYyLmVuZCgpLCB2LmJlZ2luKCkpOworCisgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHYuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoIWludGVydmFs
KQorICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbCA9ICZ2W2ldOworICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHZbaV0ueDEoKSA+PSBpbnRlcnZhbC0+eDEoKSAmJiB2W2ldLngxKCkgPD0gaW50
ZXJ2YWwtPngyKCkpIC8vIEZJWE1FOiAxc3QgPD0gdGVzdCBub3QgbmVlZGVkPworICAgICAgICAg
ICAgICAgICAgICBpbnRlcnZhbC0+c2V0KGludGVydmFsLT54MSgpLCBzdGQ6Om1heDxUPihpbnRl
cnZhbC0+eDIoKSwgdltpXS54MigpKSk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHJ2LmFwcGVuZCgqaW50ZXJ2YWwpOworICAgICAgICAgICAgICAgICAgICBp
bnRlcnZhbCA9ICZ2W2ldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKGludGVydmFsKQorICAgICAgICAgICAgICAgIHJ2LmFwcGVuZCgqaW50ZXJ2
YWwpOworICAgICAgICAgICAgfQorICAgIH0KIAotICAgIFNoYXBlSW50ZXJ2YWwoZmxvYXQgeDEg
PSAwLCBmbG9hdCB4MiA9IDApCi0gICAgICAgIDogeDEoeDEpCi0gICAgICAgICwgeDIoeDIpCisg
ICAgc3RhdGljIHZvaWQgaW50ZXJzZWN0VmVjdG9ycyhjb25zdCBTaGFwZUludGVydmFsVmVjdG9y
JiB2MSwgY29uc3QgU2hhcGVJbnRlcnZhbFZlY3RvciYgdjIsIFNoYXBlSW50ZXJ2YWxWZWN0b3Im
IHJ2KQogICAgIHsKKyAgICAgICAgc2l6ZV90IHYxU2l6ZSA9IHYxLnNpemUoKTsKKyAgICAgICAg
c2l6ZV90IHYyU2l6ZSA9IHYyLnNpemUoKTsKKworICAgICAgICBpZiAoIXYxU2l6ZSB8fCAhdjJT
aXplKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFNoYXBlSW50ZXJ2YWw8VD4gaW50
ZXJ2YWw7CisgICAgICAgIGJvb2wgb3ZlcmxhcCA9IGZhbHNlOworICAgICAgICBzaXplX3QgaTEg
PSAwOworICAgICAgICBzaXplX3QgaTIgPSAwOworCisgICAgICAgIHdoaWxlIChpMSA8IHYxU2l6
ZSAmJiBpMiA8IHYyU2l6ZSkgeworICAgICAgICAgICAgU2hhcGVJbnRlcnZhbDxUPiB2MTI7Cisg
ICAgICAgICAgICBpZiAodjFbaTFdLmludGVyc2VjdCh2MltpMl0sIHYxMikpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIW92ZXJsYXAgfHwgIXYxMi5pbnRlcnNlY3QoaW50ZXJ2YWwsIGludGVydmFs
KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAob3ZlcmxhcCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgICAgIGludGVydmFs
ID0gdjEyOworICAgICAgICAgICAgICAgICAgICBvdmVybGFwID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHYxW2kxXS54MigpIDwgdjJbaTJdLngyKCkpCisg
ICAgICAgICAgICAgICAgICAgIGkxKys7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBpMisrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZiAob3ZlcmxhcCkKKyAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKGludGVydmFsKTsKKyAg
ICAgICAgICAgICAgICBvdmVybGFwID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKHYxW2kx
XS54MSgpIDwgdjJbaTJdLngxKCkpCisgICAgICAgICAgICAgICAgICAgIGkxKys7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpMisrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKG92ZXJsYXApCisgICAgICAgICAgICBydi5hcHBlbmQo
aW50ZXJ2YWwpOwogICAgIH0KIAotICAgIGJvb2wgaW50ZXJzZWN0KGNvbnN0IFNoYXBlSW50ZXJ2
YWwmLCBTaGFwZUludGVydmFsJikgY29uc3Q7CisgICAgc3RhdGljIHZvaWQgc3VidHJhY3RWZWN0
b3JzKGNvbnN0IFNoYXBlSW50ZXJ2YWxWZWN0b3ImIHYxLCBjb25zdCBTaGFwZUludGVydmFsVmVj
dG9yJiB2MiwgU2hhcGVJbnRlcnZhbFZlY3RvciYgcnYpCisgICAgeworICAgICAgICBzaXplX3Qg
djFTaXplID0gdjEuc2l6ZSgpOworICAgICAgICBzaXplX3QgdjJTaXplID0gdjIuc2l6ZSgpOwor
CisgICAgICAgIGlmICghdjFTaXplKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
ICghdjJTaXplKQorICAgICAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5k
KCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNpemVfdCBpMSA9IDAsIGkyID0gMDsK
KyAgICAgICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpKTsKKworICAg
ICAgICAgICAgd2hpbGUgKGkxIDwgcnYuc2l6ZSgpICYmIGkyIDwgdjJTaXplKSB7CisgICAgICAg
ICAgICAgICAgU2hhcGVJbnRlcnZhbDxUPiYgaW50ZXJ2YWwxID0gcnZbaTFdOworICAgICAgICAg
ICAgICAgIGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGludGVydmFsMiA9IHYyW2kyXTsKKworICAg
ICAgICAgICAgICAgIGlmIChpbnRlcnZhbDIueDEoKSA8PSBpbnRlcnZhbDEueDEoKSAmJiBpbnRl
cnZhbDIueDIoKSA+PSBpbnRlcnZhbDEueDIoKSkKKyAgICAgICAgICAgICAgICAgICAgcnYucmVt
b3ZlKGkxKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDIoKSA8IGludGVy
dmFsMS54MSgpKQorICAgICAgICAgICAgICAgICAgICBpMiArPSAxOworICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGludGVydmFsMi54MSgpID4gaW50ZXJ2YWwxLngyKCkpCisgICAgICAgICAgICAg
ICAgICAgIGkxICs9IDE7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngxKCkg
PiBpbnRlcnZhbDEueDEoKSAmJiBpbnRlcnZhbDIueDIoKSA8IGludGVydmFsMS54MigpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJ2Lmluc2VydChpMSwgU2hhcGVJbnRlcnZhbChpbnRlcnZhbDEu
eDEoKSwgaW50ZXJ2YWwyLngxKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwxLnNl
dChpbnRlcnZhbDIueDIoKSwgaW50ZXJ2YWwxLngyKCkpOworICAgICAgICAgICAgICAgICAgICBp
MiArPSAxOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW50ZXJ2YWwyLngxKCkgPD0gaW50
ZXJ2YWwxLngxKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwxLnNldChpbnRlcnZh
bDIueDIoKSwgaW50ZXJ2YWwxLngyKCkpOworICAgICAgICAgICAgICAgICAgICBpMiArPSAxOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSAgeyAvLyAoaW50ZXJ2YWwyLngyKCkgPj0gaW50ZXJ2YWwx
LngyKCkpCisgICAgICAgICAgICAgICAgICAgIGludGVydmFsMS5zZXQoaW50ZXJ2YWwxLngxKCks
IGludGVydmFsMi54MSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaTEgKz0gMTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgVCBtX3gxOworICAgIFQgbV94MjsKIH07CiAKLXZvaWQgc29ydFNoYXBlSW50ZXJ2YWxzKFZl
Y3RvcjxTaGFwZUludGVydmFsPiYpOwotdm9pZCBtZXJnZVNoYXBlSW50ZXJ2YWxzKGNvbnN0IFZl
Y3RvcjxTaGFwZUludGVydmFsPiYsIGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYsIFZlY3Rv
cjxTaGFwZUludGVydmFsPiYpOwotdm9pZCBpbnRlcnNlY3RTaGFwZUludGVydmFscyhjb25zdCBW
ZWN0b3I8U2hhcGVJbnRlcnZhbD4mLCBjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mLCBWZWN0
b3I8U2hhcGVJbnRlcnZhbD4mKTsKLXZvaWQgc3VidHJhY3RTaGFwZUludGVydmFscyhjb25zdCBW
ZWN0b3I8U2hhcGVJbnRlcnZhbD4mLCBjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mLCBWZWN0
b3I8U2hhcGVJbnRlcnZhbD4mKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgbGhzLCBjb25zdCBTaGFwZUludGVydmFs
PFQ+JiByaHMpIHsgcmV0dXJuIGxocy54MSgpID09IHJocy54MSgpICYmIGxocy54MigpID09IHJo
cy54MigpOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGxocywgY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgcmhzKSB7
IHJldHVybiAhb3BlcmF0b3I9PShsaHMsIHJocyk7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBib29sIG9wZXJhdG9yPCAoY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgbGhzLCBjb25zdCBT
aGFwZUludGVydmFsPFQ+JiByaHMpIHsgcmV0dXJuIGxocy54MSgpIDwgcmhzLngxKCk7IH0KK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPiAoY29uc3QgU2hhcGVJbnRl
cnZhbDxUPiYgbGhzLCBjb25zdCBTaGFwZUludGVydmFsPFQ+JiByaHMpIHsgcmV0dXJuIG9wZXJh
dG9yPCAocmhzLCBsaHMpOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBvcGVy
YXRvcjw9KGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGxocywgY29uc3QgU2hhcGVJbnRlcnZhbDxU
PiYgcmhzKSB7IHJldHVybiAhb3BlcmF0b3I+IChsaHMsIHJocyk7IH0KK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgbGhz
LCBjb25zdCBTaGFwZUludGVydmFsPFQ+JiByaHMpIHsgcmV0dXJuICFvcGVyYXRvcjwgKGxocywg
cmhzKTsgfQorCit0eXBlZGVmIFNoYXBlSW50ZXJ2YWw8aW50PiBJbnRTaGFwZUludGVydmFsOwor
dHlwZWRlZiBTaGFwZUludGVydmFsPGZsb2F0PiBGbG9hdFNoYXBlSW50ZXJ2YWw7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209980</attachid>
            <date>2013-08-29 07:55:18 -0700</date>
            <delta_ts>2013-08-30 10:47:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>27762</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNTRhYmQyYi4uYzc1ZmQ3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMTYsNyArMjIxNiw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNw
cAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcAotICAgIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0
c2lkZUluZm8uY3BwCiAKICAgICByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZGUwMDM0OC4uZWIyODZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisy
MDEzLTA4LTI4ICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhcGVzXSBSZWRlZmluZSB0aGUgU2hhcGVJbnRlcnZhbHMgY2xhc3MgYXMgYSB0ZW1wbGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCB0aGlzIHdhcyBqdXN0IGFuIGludGVybmFsIHJlZmFjdG9yaW5nLgorCisgICAgICAg
IFRoZSBleGlzdGluZyBTaGFwZUludGVydmFscyBjbGFzcyBoYXMgYmVlbiBjb252ZXJ0ZWQgaW50
byBhIHRlbXBsYXRlIHdob3NlCisgICAgICAgIHR5cGUgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRo
ZSBpbnRlcnZhbCdzIHgxIGFuZCB4MiBob3Jpem9udGFsIGVuZHBvaW50cworICAgICAgICAoZm9y
bWVybHkgZmxvYXQpLiBUaGVyZSB3ZXJlIHNldmVyYWwgb3RoZXIgbWlub3IgY2hhbmdlcywgYWxs
IGluIHRoZSByZWFsbQorICAgICAgICBvZiByZWZhY3RvcmluZzoKKworICAgICAgICAtIFRoZSBv
cmlnaW5hbCB0eXBlIHdhcyBhIHN0cnVjdCB3aXRoIHB1YmxpYyB4MSBhbmQgeDIgZmllbGRzLiBJ
dCdzIG5vdyBhIGNsYXNzCisgICAgICAgIHdpdGggeDEgYW5kIHgyIGFjY2Vzc29ycy4gQVNTRVJU
UyBhcmUgbm93IHVzZWQgdG8gbWFpbnRhaW4gdGhlIHgyID49IHgxIGludmFyaWFudC4KKyAgICAg
ICAgSW4gdGhlIG9yaWdpbmFsIGNvZGUgdGhlIGludmFyaWFudCB3YXMgbm90IGNoZWNrZWQuCisK
KyAgICAgICAgLSBUaGUgbG9naWNhbCBjb21wYXJpc29uIG9wZXJhdG9ycyBoYXZlIGJlZW4gb3Zl
cmxvYWRlZCBmb3IgU2hhcGVJbnRlcnZhbC4KKyAgICAgICAgVGhpcyBvYnZpYXRlcyB0aGUgSW50
ZXJ2YWxYMUNvbXBhcmF0b3IgY2xhc3Mgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZC4KKworICAgICAg
ICAtIFRoZSBuYW1lcyBvZiB0aGUgZ2xvYmFsIFNoYXBlSW50ZXJ2YWwgVmVjdG9yIHNldCBvcGVy
YXRpb24gbWV0aG9kcyBoYXZlIGJlZW4KKyAgICAgICAgY2hhbmdlZCB0byByZWZsZWN0IHRoZSBm
YWN0IHRoYXQgdGhleSdyZSBub3cgbWVtYmVycyBvZiB0aGUgdGVtcGxhdGUgY2xhc3MsCisgICAg
ICAgIHJhdGhlciB0aGFuIGdsb2JhbHMuCisKKyAgICAgICAgUG9seWdvblNoYXBlLmNwcCBkZXBl
bmRlZCBvbiB0aGUgU2hhcGVJbnRlcnZhbCBjbGFzcy4gSW4gdGhlIG9uZSBvciB0d28gcGxhY2Vz
CisgICAgICAgIHdoZXJlIGFuIGludGVydmFsJ3MgeDEgb3IgeDEgZmllbGRzIGhhZCBiZWVuIHNl
dCBleHBsaWNpdGx5LCBTaGFwZUludGVydmFsOjpzZXQoKQorICAgICAgICBpcyBub3cgdXNlZCB0
byBzZXQgYm90aCBmaWVsZHMuIFRoaXMgYWxzbyBlbmFibGVzIHRoZSBpbnZhcmlhbnQgY2hlY2sg
bWVudGlvbmVkCisgICAgICAgIGVhcmxpZXIuIFRoZSBvdGhlciBjaGFuZ2VzIHRvIHRoaXMgY2xh
c3MgYXJlIHN5bnRhdGljLCB0byBhY2NvdW50IGZvciB0aGUgU2hhcGVJbnRlcnZhbAorICAgICAg
ICBjbGFzcydzIGNoYW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFwcGVuZEludGVydmFsWCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlWEludGVy
c2VjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9q
ZWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQb2x5Z29uU2hhcGU6OmdldEV4Y2x1ZGVkSW50
ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvbHlnb25TaGFwZTo6Z2V0SW5jbHVkZWRJbnRl
cnZhbHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaDogVGhlIGVudGlyZSBpbXBsZW1l
bnRhdGlvbiBpcyBub3cgaGVyZS4gCisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjpT
aGFwZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OngxKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OngyKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXBlSW50ZXJ2YWw6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjpvdmVy
bGFwcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjppbnRlcnNlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcGVJbnRlcnZhbDo6c29ydFZlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cGVJbnRlcnZhbDo6aW50ZXJzZWN0VmVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUlu
dGVydmFsOjpzdWJ0cmFjdFZlY3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPCApOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I+ICk6CisgICAgICAgIChXZWJDb3Jl
OjpvcGVyYXRvcjw9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPj0pOgorCiAyMDEzLTA4
LTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
Tm9kZVJlbmRlcmluZ0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDZl
ZDQ2NGUuLjA2ZDgzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDU3NSw3
ICs0NTc1LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlSW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlSW5zaWRlSW5mby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGVJbnNpZGVJbmZvLmggXAotCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVJbnRlcnZhbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJ
bnRlcnZhbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lk
ZUluZm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lk
ZUluZm8uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA1NjEwMzllLi5lOGU2Mzc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
QEAgLTEyNDAsNyArMTI0MCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAgXAogICAgIHJl
bmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcCBcCi0gICAgcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZUludGVydmFsLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJ
bmZvLmNwcCBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBcCiAgICAgcmVu
ZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA3MTMyOGIyLi41Y2VhZjMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTExMDEx
LDcgKzExMDExLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFw
ZXNcUmVjdGFuZ2xlU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVu
ZGVyaW5nXHNoYXBlc1xTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
ZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5zaWRlSW5mby5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW50ZXJ2YWwuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZU91dHNpZGVJbmZvLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHUGF0aERh
dGEuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMKaW5kZXggNjUxY2Y1Ni4uN2RmNTUxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
MjQ1MSw5ICsyNDUxLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xz
aGFwZXNcU2hhcGVJbnNpZGVJbmZvLmNwcCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXHNoYXBlc1xTaGFwZUludGVydmFsLmNwcCI+Ci0gICAgICA8RmlsdGVyPnJlbmRlcmluZzwv
RmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVu
ZGVyaW5nXHNoYXBlc1xTaGFwZU91dHNpZGVJbmZvLmNwcCI+CiAgICAgICA8RmlsdGVyPnJlbmRl
cmluZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZhZDg2Y2YuLmU2MGM2NTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTU4NTYsNyArNTg1Niw2IEBACiAJCUZENDVBOTU5MTc1RDQxNzEwMEMyMUVDOCAvKiBQb2x5
Z29uU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkQwOEE4N0ExNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHlnb25TaGFwZS5jcHAgKi87IH07CiAJ
CUZENDVBOTVBMTc1RDQxNzEwMEMyMUVDOCAvKiBSZWN0YW5nbGVTaGFwZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDA4QTg3QzE3NUQzOTI2MDAy
Q0QzNjAgLyogUmVjdGFuZ2xlU2hhcGUuY3BwICovOyB9OwogCQlGRDQ1QTk1QjE3NUQ0MUVFMDBD
MjFFQzggLyogU2hhcGVJbnRlcnZhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkQwOEE4ODUxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW50ZXJ2YWwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRDQ1
QTk1QzE3NUQ0MjBEMDBDMjFFQzggLyogU2hhcGVJbnRlcnZhbC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDA4QTg4NDE3NUQzOTI2MDAyQ0QzNjAg
LyogU2hhcGVJbnRlcnZhbC5jcHAgKi87IH07CiAJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAv
KiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRDUzNzM1MDEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwICovOyB9OwogCQlG
RDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZENTM3MzUxMTM3QjY1MTgwMDAwOERDRSAvKiBa
ZXJvUG9sZS5oICovOyB9OwogCQlGRDUzNzM1NjEzN0I2NTNCMDAwMDhEQ0UgLyogRHluYW1pY3ND
b21wcmVzc29yS2VybmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZENTM3MzU0MTM3QjY1M0IwMDAwOERDRSAvKiBEeW5hbWljc0NvbXByZXNzb3JL
ZXJuZWwuY3BwICovOyB9OwpAQCAtMTI1NTIsNyArMTI1NTEsNiBAQAogCQlGRDA4QTg4MTE3NUQz
OTI2MDAyQ0QzNjAgLyogU2hhcGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXBlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDA4QTg4MjE3
NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVJbnNpZGVJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXBlSW5zaWRlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZEMDhBODgzMTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUluc2lkZUluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcGVJbnNpZGVJbmZvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEMDhBODg0MTc1RDM5MjYwMDJDRDM2MCAvKiBT
aGFwZUludGVydmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNo
YXBlSW50ZXJ2YWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDA4QTg4NTE3
NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVJbnRlcnZhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTaGFwZUludGVydmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZEMDhBODg2MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZU91dHNpZGVJbmZvLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXBlT3V0c2lkZUluZm8uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDA4QTg4NzE3NUQzOTI2MDAyQ0QzNjAgLyogU2hh
cGVPdXRzaWRlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFwZU91
dHNpZGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDUzNSw3ICsyMDUz
Myw2IEBACiAJCQkJRkQwOEE4ODExNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW5mby5oICovLAog
CQkJCUZEMDhBODgyMTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUluc2lkZUluZm8uY3BwICovLAog
CQkJCUZEMDhBODgzMTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUluc2lkZUluZm8uaCAqLywKLQkJ
CQlGRDA4QTg4NDE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVJbnRlcnZhbC5jcHAgKi8sCiAJCQkJ
RkQwOEE4ODUxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW50ZXJ2YWwuaCAqLywKIAkJCQlGRDA4
QTg4NjE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVPdXRzaWRlSW5mby5jcHAgKi8sCiAJCQkJRkQw
OEE4ODcxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlT3V0c2lkZUluZm8uaCAqLywKQEAgLTI2Mzg0
LDcgKzI2MzgxLDYgQEAKIAkJCQlGRDQ1QTk1MzE3NUQzRkI4MDBDMjFFQzggLyogU2hhcGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ0NUE5NTQxNzVEM0ZCODAwQzIxRUM4IC8qIFNoYXBlSW5m
by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1NTE3NUQzRkI4MDBDMjFFQzggLyogU2hh
cGVJbnNpZGVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZENDVBOTVDMTc1RDQyMEQwMEMy
MUVDOCAvKiBTaGFwZUludGVydmFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENDVBOTU2MTc1
RDNGQjgwMEMyMUVDOCAvKiBTaGFwZU91dHNpZGVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBNEE5NTREMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTEyREQ4RTMwRDkxRTJCNDAwMEY4OUVFIC8qIFNoYXJlZEJ1ZmZlckNGLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9Qb2x5Z29uU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5
Z29uU2hhcGUuY3BwCmluZGV4IGUyMTI0ZmQuLmMyZGViM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQb2x5Z29uU2hhcGUuaCIKIAorI2luY2x1
ZGUgIlNoYXBlSW50ZXJ2YWwuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0yMjQsMTIgKzIyNSwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
Z2V0VmVydGV4SW50ZXJzZWN0aW9uVmVydGljZXMoY29uc3QgRWRnZUludGVyc2VjdGlvbiYgaW50
ZXJzZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgYXBwZW5kSW50
ZXJ2YWxYKGZsb2F0IHgsIGJvb2wgaW5zaWRlLCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mIHJlc3Vs
dCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBhcHBlbmRJbnRlcnZhbFgoZmxvYXQgeCwgYm9vbCBpbnNp
ZGUsIFZlY3RvcjxGbG9hdFNoYXBlSW50ZXJ2YWw+JiByZXN1bHQpCiB7CiAgICAgaWYgKCFpbnNp
ZGUpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoU2hhcGVJbnRlcnZhbCh4KSk7CisgICAgICAgIHJl
c3VsdC5hcHBlbmQoRmxvYXRTaGFwZUludGVydmFsKHgsIHgpKTsKICAgICBlbHNlCi0gICAgICAg
IHJlc3VsdFtyZXN1bHQuc2l6ZSgpIC0gMV0ueDIgPSB4OworICAgICAgICByZXN1bHQubGFzdCgp
LnNldChyZXN1bHQubGFzdCgpLngxKCksIHgpOwogCiAgICAgcmV0dXJuICFpbnNpZGU7CiB9CkBA
IC0yNDEsNyArMjQyLDcgQEAgc3RhdGljIGJvb2wgY29tcGFyZUVkZ2VJbnRlcnNlY3Rpb25YKGNv
bnN0IEVkZ2VJbnRlcnNlY3Rpb24mIGludGVyc2VjdGlvbjEsIGNvbnMKICAgICByZXR1cm4gKHgx
ID09IHgyKSA/IGludGVyc2VjdGlvbjEudHlwZSA8IGludGVyc2VjdGlvbjIudHlwZSA6IHgxIDwg
eDI7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVYSW50ZXJzZWN0aW9ucyhjb25zdCBGbG9hdFBv
bHlnb24mIHBvbHlnb24sIGZsb2F0IHksIGJvb2wgaXNNaW5ZLCBWZWN0b3I8U2hhcGVJbnRlcnZh
bD4mIHJlc3VsdCkKK3N0YXRpYyB2b2lkIGNvbXB1dGVYSW50ZXJzZWN0aW9ucyhjb25zdCBGbG9h
dFBvbHlnb24mIHBvbHlnb24sIGZsb2F0IHksIGJvb2wgaXNNaW5ZLCBWZWN0b3I8RmxvYXRTaGFw
ZUludGVydmFsPiYgcmVzdWx0KQogewogICAgIFZlY3Rvcjxjb25zdCBGbG9hdFBvbHlnb25FZGdl
Kj4gZWRnZXM7CiAgICAgaWYgKCFwb2x5Z29uLm92ZXJsYXBwaW5nRWRnZXMoeSwgeSwgZWRnZXMp
KQpAQCAtMzExLDcgKzMxMiw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVYSW50ZXJzZWN0aW9ucyhj
b25zdCBGbG9hdFBvbHlnb24mIHBvbHlnb24sIGZsb2F0IHksIGJvb2wgaXNNCiAgICAgfQogfQog
Ci1zdGF0aWMgdm9pZCBjb21wdXRlT3ZlcmxhcHBpbmdFZGdlWFByb2plY3Rpb25zKGNvbnN0IEZs
b2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgeTEsIGZsb2F0IHkyLCBWZWN0b3I8U2hhcGVJbnRl
cnZhbD4mIHJlc3VsdCkKK3N0YXRpYyB2b2lkIGNvbXB1dGVPdmVybGFwcGluZ0VkZ2VYUHJvamVj
dGlvbnMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCB5MSwgZmxvYXQgeTIsIFZl
Y3RvcjxGbG9hdFNoYXBlSW50ZXJ2YWw+JiByZXN1bHQpCiB7CiAgICAgVmVjdG9yPGNvbnN0IEZs
b2F0UG9seWdvbkVkZ2UqPiBlZGdlczsKICAgICBpZiAoIXBvbHlnb24ub3ZlcmxhcHBpbmdFZGdl
cyh5MSwgeTIsIGVkZ2VzKSkKQEAgLTMzOSwxMCArMzQwLDEwIEBAIHN0YXRpYyB2b2lkIGNvbXB1
dGVPdmVybGFwcGluZ0VkZ2VYUHJvamVjdGlvbnMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29u
LCBmbG9hCiAgICAgICAgICAgICBzdGQ6OnN3YXAoeDEsIHgyKTsKIAogICAgICAgICBpZiAoeDIg
PiB4MSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU2hhcGVJbnRlcnZhbCh4MSwgeDIpKTsK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRmxvYXRTaGFwZUludGVydmFsKHgxLCB4MikpOwog
ICAgIH0KIAotICAgIHNvcnRTaGFwZUludGVydmFscyhyZXN1bHQpOworICAgIEZsb2F0U2hhcGVJ
bnRlcnZhbDo6c29ydFZlY3RvcihyZXN1bHQpOwogfQogCiB2b2lkIFBvbHlnb25TaGFwZTo6Z2V0
RXhjbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQsIFNlZ21lbnRMaXN0JiByZXN1bHQpIGNvbnN0CkBAIC0zNTQsMjIgKzM1NSwyMiBA
QCB2b2lkIFBvbHlnb25TaGFwZTo6Z2V0RXhjbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dp
Y2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYQogICAgIGZsb2F0IHkxID0gbG9naWNhbFRvcDsKICAg
ICBmbG9hdCB5MiA9IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OwogCi0gICAgVmVjdG9yPFNo
YXBlSW50ZXJ2YWw+IHkxWEludGVydmFscywgeTJYSW50ZXJ2YWxzOworICAgIFZlY3RvcjxGbG9h
dFNoYXBlSW50ZXJ2YWw+IHkxWEludGVydmFscywgeTJYSW50ZXJ2YWxzOwogICAgIGNvbXB1dGVY
SW50ZXJzZWN0aW9ucyhwb2x5Z29uLCB5MSwgdHJ1ZSwgeTFYSW50ZXJ2YWxzKTsKICAgICBjb21w
dXRlWEludGVyc2VjdGlvbnMocG9seWdvbiwgeTIsIGZhbHNlLCB5MlhJbnRlcnZhbHMpOwogCi0g
ICAgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+IG1lcmdlZEludGVydmFsczsKLSAgICBtZXJnZVNoYXBl
SW50ZXJ2YWxzKHkxWEludGVydmFscywgeTJYSW50ZXJ2YWxzLCBtZXJnZWRJbnRlcnZhbHMpOwor
ICAgIFZlY3RvcjxGbG9hdFNoYXBlSW50ZXJ2YWw+IG1lcmdlZEludGVydmFsczsKKyAgICBGbG9h
dFNoYXBlSW50ZXJ2YWw6OnVuaXRlVmVjdG9ycyh5MVhJbnRlcnZhbHMsIHkyWEludGVydmFscywg
bWVyZ2VkSW50ZXJ2YWxzKTsKIAotICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiBlZGdlSW50ZXJ2
YWxzOworICAgIFZlY3RvcjxGbG9hdFNoYXBlSW50ZXJ2YWw+IGVkZ2VJbnRlcnZhbHM7CiAgICAg
Y29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9qZWN0aW9ucyhwb2x5Z29uLCB5MSwgeTIsIGVkZ2VJ
bnRlcnZhbHMpOwogCi0gICAgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+IGV4Y2x1ZGVkSW50ZXJ2YWxz
OwotICAgIG1lcmdlU2hhcGVJbnRlcnZhbHMobWVyZ2VkSW50ZXJ2YWxzLCBlZGdlSW50ZXJ2YWxz
LCBleGNsdWRlZEludGVydmFscyk7CisgICAgVmVjdG9yPEZsb2F0U2hhcGVJbnRlcnZhbD4gZXhj
bHVkZWRJbnRlcnZhbHM7CisgICAgRmxvYXRTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMobWVy
Z2VkSW50ZXJ2YWxzLCBlZGdlSW50ZXJ2YWxzLCBleGNsdWRlZEludGVydmFscyk7CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhjbHVkZWRJbnRlcnZhbHMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgU2hhcGVJbnRlcnZhbCBpbnRlcnZhbCA9IGV4Y2x1ZGVkSW50ZXJ2YWxzW2ldOwot
ICAgICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KGludGVydmFsLngxLCBpbnRlcnZhbC54
MikpOworICAgICAgICBGbG9hdFNoYXBlSW50ZXJ2YWwgaW50ZXJ2YWwgPSBleGNsdWRlZEludGVy
dmFsc1tpXTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5lU2VnbWVudChpbnRlcnZhbC54MSgp
LCBpbnRlcnZhbC54MigpKSk7CiAgICAgfQogfQogCkBAIC0zODIsMjIgKzM4MywyMiBAQCB2b2lk
IFBvbHlnb25TaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9w
LCBMYXlvdXRVbml0IGxvZ2ljYQogICAgIGZsb2F0IHkxID0gbG9naWNhbFRvcDsKICAgICBmbG9h
dCB5MiA9IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OwogCi0gICAgVmVjdG9yPFNoYXBlSW50
ZXJ2YWw+IHkxWEludGVydmFscywgeTJYSW50ZXJ2YWxzOworICAgIFZlY3RvcjxGbG9hdFNoYXBl
SW50ZXJ2YWw+IHkxWEludGVydmFscywgeTJYSW50ZXJ2YWxzOwogICAgIGNvbXB1dGVYSW50ZXJz
ZWN0aW9ucyhwb2x5Z29uLCB5MSwgdHJ1ZSwgeTFYSW50ZXJ2YWxzKTsKICAgICBjb21wdXRlWElu
dGVyc2VjdGlvbnMocG9seWdvbiwgeTIsIGZhbHNlLCB5MlhJbnRlcnZhbHMpOwogCi0gICAgVmVj
dG9yPFNoYXBlSW50ZXJ2YWw+IGNvbW1vbkludGVydmFsczsKLSAgICBpbnRlcnNlY3RTaGFwZUlu
dGVydmFscyh5MVhJbnRlcnZhbHMsIHkyWEludGVydmFscywgY29tbW9uSW50ZXJ2YWxzKTsKKyAg
ICBWZWN0b3I8RmxvYXRTaGFwZUludGVydmFsPiBjb21tb25JbnRlcnZhbHM7CisgICAgRmxvYXRT
aGFwZUludGVydmFsOjppbnRlcnNlY3RWZWN0b3JzKHkxWEludGVydmFscywgeTJYSW50ZXJ2YWxz
LCBjb21tb25JbnRlcnZhbHMpOwogCi0gICAgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+IGVkZ2VJbnRl
cnZhbHM7CisgICAgVmVjdG9yPEZsb2F0U2hhcGVJbnRlcnZhbD4gZWRnZUludGVydmFsczsKICAg
ICBjb21wdXRlT3ZlcmxhcHBpbmdFZGdlWFByb2plY3Rpb25zKHBvbHlnb24sIHkxLCB5MiwgZWRn
ZUludGVydmFscyk7CiAKLSAgICBWZWN0b3I8U2hhcGVJbnRlcnZhbD4gaW5jbHVkZWRJbnRlcnZh
bHM7Ci0gICAgc3VidHJhY3RTaGFwZUludGVydmFscyhjb21tb25JbnRlcnZhbHMsIGVkZ2VJbnRl
cnZhbHMsIGluY2x1ZGVkSW50ZXJ2YWxzKTsKKyAgICBWZWN0b3I8RmxvYXRTaGFwZUludGVydmFs
PiBpbmNsdWRlZEludGVydmFsczsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6OnN1YnRyYWN0VmVj
dG9ycyhjb21tb25JbnRlcnZhbHMsIGVkZ2VJbnRlcnZhbHMsIGluY2x1ZGVkSW50ZXJ2YWxzKTsK
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbmNsdWRlZEludGVydmFscy5zaXplKCk7
ICsraSkgewotICAgICAgICBTaGFwZUludGVydmFsIGludGVydmFsID0gaW5jbHVkZWRJbnRlcnZh
bHNbaV07Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoaW50ZXJ2YWwueDEsIGlu
dGVydmFsLngyKSk7CisgICAgICAgIEZsb2F0U2hhcGVJbnRlcnZhbCBpbnRlcnZhbCA9IGluY2x1
ZGVkSW50ZXJ2YWxzW2ldOworICAgICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KGludGVy
dmFsLngxKCksIGludGVydmFsLngyKCkpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oCmluZGV4IDYyOGFjM2EuLmVkNjlmN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaApA
QCAtMzIsNyArMzIsNiBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2x5Z29uLmgiCiAjaW5jbHVkZSAi
U2hhcGUuaCIKLSNpbmNsdWRlICJTaGFwZUludGVydmFsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUlu
dGVydmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnRlcnZh
bC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1NTgwMzguLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAg
ICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MKLSAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCi0gKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsCi0gKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pCi0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0gKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0gKiBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNoYXBlSW50ZXJ2YWwuaCIKLQotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEludGVydmFsWDFDb21wYXJhdG9yIHsK
LSAgICBib29sIG9wZXJhdG9yKCkgKGNvbnN0IFNoYXBlSW50ZXJ2YWwmIGkxLCBjb25zdCBTaGFw
ZUludGVydmFsJiBpMikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpMS54MSA8IGkyLngx
OwotICAgIH0KLX07Ci0KLWJvb2wgU2hhcGVJbnRlcnZhbDo6aW50ZXJzZWN0KGNvbnN0IFNoYXBl
SW50ZXJ2YWwmIGksIFNoYXBlSW50ZXJ2YWwmIHJ2KSBjb25zdAotewotICAgIGlmICh4MiA8IGku
eDEgfHwgeDEgPiBpLngyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcnYueDEgPSBzdGQ6
Om1heCh4MSwgaS54MSk7Ci0gICAgcnYueDIgPSBzdGQ6Om1pbih4MiwgaS54Mik7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXZvaWQgc29ydFNoYXBlSW50ZXJ2YWxzKFZlY3RvcjxTaGFwZUludGVy
dmFsPiYgdikKLXsKLSAgICBzdGQ6OnNvcnQodi5iZWdpbigpLCB2LmVuZCgpLCBJbnRlcnZhbFgx
Q29tcGFyYXRvcigpKTsKLX0KLQotdm9pZCBtZXJnZVNoYXBlSW50ZXJ2YWxzKGNvbnN0IFZlY3Rv
cjxTaGFwZUludGVydmFsPiYgdjEsIGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYgdjIsIFZl
Y3RvcjxTaGFwZUludGVydmFsPiYgcnYpCi17Ci0gICAgaWYgKCF2MS5zaXplKCkpCi0gICAgICAg
IHJ2LmFwcGVuZFJhbmdlKHYyLmJlZ2luKCksIHYyLmVuZCgpKTsKLSAgICBlbHNlIGlmICghdjIu
c2l6ZSgpKQotICAgICAgICBydi5hcHBlbmRSYW5nZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiB2KHYxLnNpemUoKSArIHYy
LnNpemUoKSk7Ci0gICAgICAgIFNoYXBlSW50ZXJ2YWwqIGludGVydmFsID0gMDsKLQotICAgICAg
ICBzdGQ6Om1lcmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpLCB2Mi5iZWdpbigpLCB2Mi5lbmQoKSwg
di5iZWdpbigpLCBJbnRlcnZhbFgxQ29tcGFyYXRvcigpKTsKLQotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHYuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgIGlmICghaW50ZXJ2YWwp
Ci0gICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSAmdltpXTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KHZbaV0ueDEgPj0gaW50ZXJ2YWwtPngxICYmIHZbaV0ueDEgPD0gaW50ZXJ2YWwtPngyKSAvLyBG
SVhNRTogMXN0IDw9IHRlc3Qgbm90IG5lZWRlZD8KLSAgICAgICAgICAgICAgICBpbnRlcnZhbC0+
eDIgPSBzdGQ6Om1heChpbnRlcnZhbC0+eDIsIHZbaV0ueDIpOwotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRlcnZhbCk7Ci0gICAgICAgICAgICAgICAg
aW50ZXJ2YWwgPSAmdltpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChpbnRlcnZhbCkKLSAgICAgICAgICAgIHJ2LmFwcGVuZCgqaW50ZXJ2YWwpOwotICAgIH0KLX0K
LQotdm9pZCBpbnRlcnNlY3RTaGFwZUludGVydmFscyhjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZh
bD4mIHYxLCBjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mIHYyLCBWZWN0b3I8U2hhcGVJbnRl
cnZhbD4mIHJ2KQotewotICAgIHNpemVfdCB2MVNpemUgPSB2MS5zaXplKCk7Ci0gICAgc2l6ZV90
IHYyU2l6ZSA9IHYyLnNpemUoKTsKLQotICAgIGlmICghdjFTaXplIHx8ICF2MlNpemUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFNoYXBlSW50ZXJ2YWwgaW50ZXJ2YWw7Ci0gICAgYm9vbCBvdmVy
bGFwID0gZmFsc2U7Ci0gICAgc2l6ZV90IGkxID0gMDsKLSAgICBzaXplX3QgaTIgPSAwOwotCi0g
ICAgd2hpbGUgKGkxIDwgdjFTaXplICYmIGkyIDwgdjJTaXplKSB7Ci0gICAgICAgIFNoYXBlSW50
ZXJ2YWwgdjEyOwotICAgICAgICBpZiAodjFbaTFdLmludGVyc2VjdCh2MltpMl0sIHYxMikpIHsK
LSAgICAgICAgICAgIGlmICghb3ZlcmxhcCB8fCAhdjEyLmludGVyc2VjdChpbnRlcnZhbCwgaW50
ZXJ2YWwpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG92ZXJsYXApCi0gICAgICAgICAgICAgICAg
ICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7Ci0gICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSB2MTI7
Ci0gICAgICAgICAgICAgICAgb3ZlcmxhcCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAodjFbaTFdLngyIDwgdjJbaTJdLngyKQotICAgICAgICAgICAgICAgIGkxKys7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaTIrKzsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGlmIChvdmVybGFwKQotICAgICAgICAgICAgICAgIHJ2LmFwcGVuZChpbnRl
cnZhbCk7Ci0gICAgICAgICAgICBvdmVybGFwID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAodjFb
aTFdLngxIDwgdjJbaTJdLngxKQotICAgICAgICAgICAgICAgIGkxKys7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgaTIrKzsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChv
dmVybGFwKQotICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwpOwotfQotCi12b2lkIHN1YnRyYWN0
U2hhcGVJbnRlcnZhbHMoY29uc3QgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiB2MSwgY29uc3QgVmVj
dG9yPFNoYXBlSW50ZXJ2YWw+JiB2MiwgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiBydikKLXsKLSAg
ICBzaXplX3QgdjFTaXplID0gdjEuc2l6ZSgpOwotICAgIHNpemVfdCB2MlNpemUgPSB2Mi5zaXpl
KCk7Ci0KLSAgICBpZiAoIXYxU2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCF2MlNp
emUpCi0gICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpKTsKLSAgICBl
bHNlIHsKLSAgICAgICAgc2l6ZV90IGkxID0gMCwgaTIgPSAwOwotICAgICAgICBydi5hcHBlbmRS
YW5nZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7Ci0KLSAgICAgICAgd2hpbGUgKGkxIDwgcnYuc2l6
ZSgpICYmIGkyIDwgdjJTaXplKSB7Ci0gICAgICAgICAgICBTaGFwZUludGVydmFsJiBpbnRlcnZh
bDEgPSBydltpMV07Ci0gICAgICAgICAgICBjb25zdCBTaGFwZUludGVydmFsJiBpbnRlcnZhbDIg
PSB2MltpMl07Ci0KLSAgICAgICAgICAgIGlmIChpbnRlcnZhbDIueDEgPD0gaW50ZXJ2YWwxLngx
ICYmIGludGVydmFsMi54MiA+PSBpbnRlcnZhbDEueDIpCi0gICAgICAgICAgICAgICAgcnYucmVt
b3ZlKGkxKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGludGVydmFsMi54MiA8IGludGVydmFsMS54
MSkKLSAgICAgICAgICAgICAgICBpMiArPSAxOwotICAgICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2
YWwyLngxID4gaW50ZXJ2YWwxLngyKQotICAgICAgICAgICAgICAgIGkxICs9IDE7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDEgPiBpbnRlcnZhbDEueDEgJiYgaW50ZXJ2YWwyLngy
IDwgaW50ZXJ2YWwxLngyKSB7Ci0gICAgICAgICAgICAgICAgcnYuaW5zZXJ0KGkxLCBTaGFwZUlu
dGVydmFsKGludGVydmFsMS54MSwgaW50ZXJ2YWwyLngxKSk7Ci0gICAgICAgICAgICAgICAgaW50
ZXJ2YWwxLngxID0gaW50ZXJ2YWwyLngyOwotICAgICAgICAgICAgICAgIGkyICs9IDE7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGludGVydmFsMi54MSA8PSBpbnRlcnZhbDEueDEpIHsKLSAgICAg
ICAgICAgICAgICBpbnRlcnZhbDEueDEgPSBpbnRlcnZhbDIueDI7Ci0gICAgICAgICAgICAgICAg
aTIgKz0gMTsKLSAgICAgICAgICAgIH0gZWxzZSAgeyAvLyAoaW50ZXJ2YWwyLngyID49IGludGVy
dmFsMS54MikKLSAgICAgICAgICAgICAgICBpbnRlcnZhbDEueDIgPSBpbnRlcnZhbDIueDE7Ci0g
ICAgICAgICAgICAgICAgaTEgKz0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaAppbmRleCAwZmYxNGQ4Li41NDNiZjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaApAQCAtMzQs
MjQgKzM0LDE3MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBTaGFwZUludGVy
dmFsIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgU2hhcGVJbnRlcnZhbCB7CiBwdWJs
aWM6Ci0gICAgZmxvYXQgeDE7Ci0gICAgZmxvYXQgeDI7CisgICAgU2hhcGVJbnRlcnZhbChUIHgx
ID0gMCwgVCB4MiA9IDApCisgICAgICAgIDogbV94MSh4MSkKKyAgICAgICAgLCBtX3gyKHgyKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHgyID49IHgxKTsKKyAgICB9CisKKyAgICBUIHgxKCkgY29u
c3QgeyByZXR1cm4gbV94MTsgfQorICAgIFQgeDIoKSBjb25zdCB7IHJldHVybiBtX3gyOyB9CisK
KyAgICB2b2lkIHNldChUIHgxLCBUIHgyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHgyID49IHgx
KTsKKyAgICAgICAgbV94MSA9IHgxOworICAgICAgICBtX3gyID0geDI7CisgICAgfQorCisgICAg
Ym9vbCBvdmVybGFwcyhjb25zdCBTaGFwZUludGVydmFsPFQ+JiBpbnRlcnZhbCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiB4MigpID49IGludGVydmFsLngxKCkgJiYgeDEoKSA8PSBpbnRl
cnZhbC54MigpOworICAgIH0KKworICAgIGJvb2wgaW50ZXJzZWN0KGNvbnN0IFNoYXBlSW50ZXJ2
YWw8VD4mIGksIFNoYXBlSW50ZXJ2YWw8VD4mIHJ2KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KHgyKCkgPCBpLngxKCkgfHwgeDEoKSA+IGkueDIoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcnYuc2V0KHN0ZDo6bWF4KHgxKCksIGkueDEoKSksIHN0ZDo6bWluKHgyKCks
IGkueDIoKSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB0eXBlZGVmIFZl
Y3RvcjxTaGFwZUludGVydmFsPFQ+ID4gU2hhcGVJbnRlcnZhbFZlY3RvcjsKKyAgICB0eXBlZGVm
IHR5cGVuYW1lIFZlY3RvcjxTaGFwZUludGVydmFsPFQ+ID46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0
X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yPFNoYXBlSW50ZXJ2YWw8VD4g
Pjo6aXRlcmF0b3IgaXRlcmF0b3I7CisKKyAgICBzdGF0aWMgdm9pZCBzb3J0VmVjdG9yKFNoYXBl
SW50ZXJ2YWxWZWN0b3ImIGludGVydmFscykKKyAgICB7CisgICAgICAgIHN0ZDo6c29ydChpbnRl
cnZhbHMuYmVnaW4oKSwgaW50ZXJ2YWxzLmVuZCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9p
ZCB1bml0ZVZlY3RvcnMoY29uc3QgU2hhcGVJbnRlcnZhbFZlY3RvciYgdjEsIGNvbnN0IFNoYXBl
SW50ZXJ2YWxWZWN0b3ImIHYyLCBTaGFwZUludGVydmFsVmVjdG9yJiBydikKKyAgICB7CisgICAg
ICAgIGlmICghdjEuc2l6ZSgpKQorICAgICAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjIuYmVnaW4o
KSwgdjIuZW5kKCkpOworICAgICAgICBlbHNlIGlmICghdjIuc2l6ZSgpKQorICAgICAgICAgICAg
cnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIFNoYXBlSW50ZXJ2YWxWZWN0b3Igdih2MS5zaXplKCkgKyB2Mi5zaXplKCkpOwor
ICAgICAgICAgICAgU2hhcGVJbnRlcnZhbDxUPiogaW50ZXJ2YWwgPSAwOworCisgICAgICAgICAg
ICBzdGQ6Om1lcmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpLCB2Mi5iZWdpbigpLCB2Mi5lbmQoKSwg
di5iZWdpbigpKTsKKworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2LnNpemUo
KTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpbnRlcnZhbCkKKyAgICAgICAgICAgICAg
ICAgICAgaW50ZXJ2YWwgPSAmdltpXTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh2W2ldLngx
KCkgPj0gaW50ZXJ2YWwtPngxKCkgJiYgdltpXS54MSgpIDw9IGludGVydmFsLT54MigpKSAvLyBG
SVhNRTogMXN0IDw9IHRlc3Qgbm90IG5lZWRlZD8KKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2
YWwtPnNldChpbnRlcnZhbC0+eDEoKSwgc3RkOjptYXg8VD4oaW50ZXJ2YWwtPngyKCksIHZbaV0u
eDIoKSkpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBydi5h
cHBlbmQoKmludGVydmFsKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSAmdltpXTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbnRl
cnZhbCkKKyAgICAgICAgICAgICAgICBydi5hcHBlbmQoKmludGVydmFsKTsKKyAgICAgICAgICAg
IH0KKyAgICB9CiAKLSAgICBTaGFwZUludGVydmFsKGZsb2F0IHgxID0gMCwgZmxvYXQgeDIgPSAw
KQotICAgICAgICA6IHgxKHgxKQotICAgICAgICAsIHgyKHgyKQorICAgIHN0YXRpYyB2b2lkIGlu
dGVyc2VjdFZlY3RvcnMoY29uc3QgU2hhcGVJbnRlcnZhbFZlY3RvciYgdjEsIGNvbnN0IFNoYXBl
SW50ZXJ2YWxWZWN0b3ImIHYyLCBTaGFwZUludGVydmFsVmVjdG9yJiBydikKICAgICB7CisgICAg
ICAgIHNpemVfdCB2MVNpemUgPSB2MS5zaXplKCk7CisgICAgICAgIHNpemVfdCB2MlNpemUgPSB2
Mi5zaXplKCk7CisKKyAgICAgICAgaWYgKCF2MVNpemUgfHwgIXYyU2l6ZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBTaGFwZUludGVydmFsPFQ+IGludGVydmFsOworICAgICAgICBi
b29sIG92ZXJsYXAgPSBmYWxzZTsKKyAgICAgICAgc2l6ZV90IGkxID0gMDsKKyAgICAgICAgc2l6
ZV90IGkyID0gMDsKKworICAgICAgICB3aGlsZSAoaTEgPCB2MVNpemUgJiYgaTIgPCB2MlNpemUp
IHsKKyAgICAgICAgICAgIFNoYXBlSW50ZXJ2YWw8VD4gdjEyOworICAgICAgICAgICAgaWYgKHYx
W2kxXS5pbnRlcnNlY3QodjJbaTJdLCB2MTIpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFvdmVy
bGFwIHx8ICF2MTIuaW50ZXJzZWN0KGludGVydmFsLCBpbnRlcnZhbCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG92ZXJsYXApCisgICAgICAgICAgICAgICAgICAgICAgICBydi5hcHBlbmQo
aW50ZXJ2YWwpOworICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IHYxMjsKKyAgICAgICAg
ICAgICAgICAgICAgb3ZlcmxhcCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGlmICh2MVtpMV0ueDIoKSA8IHYyW2kyXS54MigpKQorICAgICAgICAgICAgICAgICAg
ICBpMSsrOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaTIrKzsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG92ZXJsYXApCisgICAg
ICAgICAgICAgICAgICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgb3Zl
cmxhcCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmICh2MVtpMV0ueDEoKSA8IHYyW2kyXS54
MSgpKQorICAgICAgICAgICAgICAgICAgICBpMSsrOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgaTIrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChvdmVybGFwKQorICAgICAgICAgICAgcnYuYXBwZW5kKGludGVydmFsKTsKICAgICB9
CiAKLSAgICBib29sIGludGVyc2VjdChjb25zdCBTaGFwZUludGVydmFsJiwgU2hhcGVJbnRlcnZh
bCYpIGNvbnN0OworICAgIHN0YXRpYyB2b2lkIHN1YnRyYWN0VmVjdG9ycyhjb25zdCBTaGFwZUlu
dGVydmFsVmVjdG9yJiB2MSwgY29uc3QgU2hhcGVJbnRlcnZhbFZlY3RvciYgdjIsIFNoYXBlSW50
ZXJ2YWxWZWN0b3ImIHJ2KQorICAgIHsKKyAgICAgICAgc2l6ZV90IHYxU2l6ZSA9IHYxLnNpemUo
KTsKKyAgICAgICAgc2l6ZV90IHYyU2l6ZSA9IHYyLnNpemUoKTsKKworICAgICAgICBpZiAoIXYx
U2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXYyU2l6ZSkKKyAgICAg
ICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBzaXplX3QgaTEgPSAwLCBpMiA9IDA7CisgICAgICAgICAgICBydi5h
cHBlbmRSYW5nZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7CisKKyAgICAgICAgICAgIHdoaWxlIChp
MSA8IHJ2LnNpemUoKSAmJiBpMiA8IHYyU2l6ZSkgeworICAgICAgICAgICAgICAgIFNoYXBlSW50
ZXJ2YWw8VD4mIGludGVydmFsMSA9IHJ2W2kxXTsKKyAgICAgICAgICAgICAgICBjb25zdCBTaGFw
ZUludGVydmFsPFQ+JiBpbnRlcnZhbDIgPSB2MltpMl07CisKKyAgICAgICAgICAgICAgICBpZiAo
aW50ZXJ2YWwyLngxKCkgPD0gaW50ZXJ2YWwxLngxKCkgJiYgaW50ZXJ2YWwyLngyKCkgPj0gaW50
ZXJ2YWwxLngyKCkpCisgICAgICAgICAgICAgICAgICAgIHJ2LnJlbW92ZShpMSk7CisgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngyKCkgPCBpbnRlcnZhbDEueDEoKSkKKyAgICAg
ICAgICAgICAgICAgICAgaTIgKz0gMTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChpbnRlcnZh
bDIueDEoKSA+IGludGVydmFsMS54MigpKQorICAgICAgICAgICAgICAgICAgICBpMSArPSAxOwor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGludGVydmFsMi54MSgpID4gaW50ZXJ2YWwxLngxKCkg
JiYgaW50ZXJ2YWwyLngyKCkgPCBpbnRlcnZhbDEueDIoKSkgeworICAgICAgICAgICAgICAgICAg
ICBydi5pbnNlcnQoaTEsIFNoYXBlSW50ZXJ2YWwoaW50ZXJ2YWwxLngxKCksIGludGVydmFsMi54
MSgpKSk7CisgICAgICAgICAgICAgICAgICAgIGludGVydmFsMS5zZXQoaW50ZXJ2YWwyLngyKCks
IGludGVydmFsMS54MigpKTsKKyAgICAgICAgICAgICAgICAgICAgaTIgKz0gMTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGludGVydmFsMi54MSgpIDw9IGludGVydmFsMS54MSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGludGVydmFsMS5zZXQoaW50ZXJ2YWwyLngyKCksIGludGVydmFs
MS54MigpKTsKKyAgICAgICAgICAgICAgICAgICAgaTIgKz0gMTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgIHsgLy8gKGludGVydmFsMi54MigpID49IGludGVydmFsMS54MigpKQorICAgICAgICAg
ICAgICAgICAgICBpbnRlcnZhbDEuc2V0KGludGVydmFsMS54MSgpLCBpbnRlcnZhbDIueDEoKSk7
CisgICAgICAgICAgICAgICAgICAgIGkxICs9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIFQgbV94MTsKKyAgICBU
IG1feDI7CiB9OwogCi12b2lkIHNvcnRTaGFwZUludGVydmFscyhWZWN0b3I8U2hhcGVJbnRlcnZh
bD4mKTsKLXZvaWQgbWVyZ2VTaGFwZUludGVydmFscyhjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZh
bD4mLCBjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mLCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4m
KTsKLXZvaWQgaW50ZXJzZWN0U2hhcGVJbnRlcnZhbHMoY29uc3QgVmVjdG9yPFNoYXBlSW50ZXJ2
YWw+JiwgY29uc3QgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiwgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+
Jik7Ci12b2lkIHN1YnRyYWN0U2hhcGVJbnRlcnZhbHMoY29uc3QgVmVjdG9yPFNoYXBlSW50ZXJ2
YWw+JiwgY29uc3QgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiwgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+
Jik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNo
YXBlSW50ZXJ2YWw8VD4mIGxocywgY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgcmhzKSB7IHJldHVy
biBsaHMueDEoKSA9PSByaHMueDEoKSAmJiBsaHMueDIoKSA9PSByaHMueDIoKTsgfQordGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFwZUludGVydmFs
PFQ+JiBsaHMsIGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIHJocykgeyByZXR1cm4gIW9wZXJhdG9y
PT0obGhzLCByaHMpOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBvcGVyYXRv
cjwgKGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGxocywgY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYg
cmhzKSB7IHJldHVybiBsaHMueDEoKSA8IHJocy54MSgpOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj4gKGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGxocywgY29u
c3QgU2hhcGVJbnRlcnZhbDxUPiYgcmhzKSB7IHJldHVybiBvcGVyYXRvcjwgKHJocywgbGhzKTsg
fQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBTaGFw
ZUludGVydmFsPFQ+JiBsaHMsIGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIHJocykgeyByZXR1cm4g
IW9wZXJhdG9yPiAobGhzLCByaHMpOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj49KGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGxocywgY29uc3QgU2hhcGVJbnRl
cnZhbDxUPiYgcmhzKSB7IHJldHVybiAhb3BlcmF0b3I8IChsaHMsIHJocyk7IH0KKwordHlwZWRl
ZiBTaGFwZUludGVydmFsPGludD4gSW50U2hhcGVJbnRlcnZhbDsKK3R5cGVkZWYgU2hhcGVJbnRl
cnZhbDxmbG9hdD4gRmxvYXRTaGFwZUludGVydmFsOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAK
</data>
<flag name="review"
          id="232058"
          type_id="1"
          status="-"
          setter="achicu"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210132</attachid>
            <date>2013-08-30 10:47:43 -0700</date>
            <delta_ts>2013-08-30 10:58:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>27688</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTNjNzM5MS4uY2RkYjIzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMTMsNyArMjIxMyw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNw
cAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcAotICAgIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0
c2lkZUluZm8uY3BwCiAKICAgICByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggODhlN2M5NC4uZDc5MjRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisy
MDEzLTA4LTI4ICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhcGVzXSBSZWRlZmluZSB0aGUgU2hhcGVJbnRlcnZhbHMgY2xhc3MgYXMgYSB0ZW1wbGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCB0aGlzIHdhcyBqdXN0IGFuIGludGVybmFsIHJlZmFjdG9yaW5nLgorCisgICAgICAg
IFRoZSBleGlzdGluZyBTaGFwZUludGVydmFscyBjbGFzcyBoYXMgYmVlbiBjb252ZXJ0ZWQgaW50
byBhIHRlbXBsYXRlIHdob3NlCisgICAgICAgIHR5cGUgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRo
ZSBpbnRlcnZhbCdzIHgxIGFuZCB4MiBob3Jpem9udGFsIGVuZHBvaW50cworICAgICAgICAoZm9y
bWVybHkgZmxvYXQpLiBUaGVyZSB3ZXJlIHNldmVyYWwgb3RoZXIgbWlub3IgY2hhbmdlcywgYWxs
IGluIHRoZSByZWFsbQorICAgICAgICBvZiByZWZhY3RvcmluZzoKKworICAgICAgICAtIFRoZSBv
cmlnaW5hbCB0eXBlIHdhcyBhIHN0cnVjdCB3aXRoIHB1YmxpYyB4MSBhbmQgeDIgZmllbGRzLiBJ
dCdzIG5vdyBhIGNsYXNzCisgICAgICAgIHdpdGggeDEgYW5kIHgyIGFjY2Vzc29ycy4gQVNTRVJU
UyBhcmUgbm93IHVzZWQgdG8gbWFpbnRhaW4gdGhlIHgyID49IHgxIGludmFyaWFudC4KKyAgICAg
ICAgSW4gdGhlIG9yaWdpbmFsIGNvZGUgdGhlIGludmFyaWFudCB3YXMgbm90IGNoZWNrZWQuCisK
KyAgICAgICAgLSBUaGUgbG9naWNhbCBjb21wYXJpc29uIG9wZXJhdG9ycyBoYXZlIGJlZW4gb3Zl
cmxvYWRlZCBmb3IgU2hhcGVJbnRlcnZhbC4KKyAgICAgICAgVGhpcyBvYnZpYXRlcyB0aGUgSW50
ZXJ2YWxYMUNvbXBhcmF0b3IgY2xhc3Mgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZC4KKworICAgICAg
ICAtIFRoZSBuYW1lcyBvZiB0aGUgZ2xvYmFsIFNoYXBlSW50ZXJ2YWwgVmVjdG9yIHNldCBvcGVy
YXRpb24gbWV0aG9kcyBoYXZlIGJlZW4KKyAgICAgICAgY2hhbmdlZCB0byByZWZsZWN0IHRoZSBm
YWN0IHRoYXQgdGhleSdyZSBub3cgbWVtYmVycyBvZiB0aGUgdGVtcGxhdGUgY2xhc3MsCisgICAg
ICAgIHJhdGhlciB0aGFuIGdsb2JhbHMuCisKKyAgICAgICAgUG9seWdvblNoYXBlLmNwcCBkZXBl
bmRlZCBvbiB0aGUgU2hhcGVJbnRlcnZhbCBjbGFzcy4gSW4gdGhlIG9uZSBvciB0d28gcGxhY2Vz
CisgICAgICAgIHdoZXJlIGFuIGludGVydmFsJ3MgeDEgb3IgeDEgZmllbGRzIGhhZCBiZWVuIHNl
dCBleHBsaWNpdGx5LCBTaGFwZUludGVydmFsOjpzZXQoKQorICAgICAgICBpcyBub3cgdXNlZCB0
byBzZXQgYm90aCBmaWVsZHMuIFRoaXMgYWxzbyBlbmFibGVzIHRoZSBpbnZhcmlhbnQgY2hlY2sg
bWVudGlvbmVkCisgICAgICAgIGVhcmxpZXIuIFRoZSBvdGhlciBjaGFuZ2VzIHRvIHRoaXMgY2xh
c3MgYXJlIHN5bnRhdGljLCB0byBhY2NvdW50IGZvciB0aGUgU2hhcGVJbnRlcnZhbAorICAgICAg
ICBjbGFzcydzIGNoYW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFwcGVuZEludGVydmFsWCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlWEludGVy
c2VjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9q
ZWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQb2x5Z29uU2hhcGU6OmdldEV4Y2x1ZGVkSW50
ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvbHlnb25TaGFwZTo6Z2V0SW5jbHVkZWRJbnRl
cnZhbHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaDogVGhlIGVudGlyZSBpbXBsZW1l
bnRhdGlvbiBpcyBub3cgaGVyZS4gCisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjpT
aGFwZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OngxKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OngyKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXBlSW50ZXJ2YWw6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjpvdmVy
bGFwcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjppbnRlcnNlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcGVJbnRlcnZhbDo6c29ydFZlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cGVJbnRlcnZhbDo6aW50ZXJzZWN0VmVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUlu
dGVydmFsOjpzdWJ0cmFjdFZlY3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPCApOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I+ICk6CisgICAgICAgIChXZWJDb3Jl
OjpvcGVyYXRvcjw9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPj0pOgorCiAyMDEzLTA4
LTMwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRk
IFVTRShDRk5FVFdPUkspIGd1YXJkIHRvIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTBmODQzNS4uOWQ3YjI3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NTc0LDcgKzQ1NzQsNiBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJ
bmZvLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZv
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8u
aCBcCi0JU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmggXAogCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCmluZGV4IGRhMjE0NWYuLjI3ZjgzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTIzOCw3ICsxMjM4
LDYgQEAgU09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgXAogICAg
IHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZUluc2lkZUluZm8uY3BwIFwKLSAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwu
Y3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwIFwKICAgICBy
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwIFwKICAgICByZW5kZXJpbmcvc3R5bGUvQ29u
dGVudERhdGEuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCmluZGV4IGRhMGUzNWIuLjJmOWFjZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTEwMTEsNyArMTEwMTEsNiBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFw
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNo
YXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNc
U2hhcGVJbnNpZGVJbmZvLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRl
cmluZ1xzaGFwZXNcU2hhcGVJbnRlcnZhbC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlT3V0c2lkZUluZm8uY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdQYXRoRGF0YS5jcHAiPgogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpp
bmRleCA3NGQzOWM5Li4wMWIyZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0yNDUxLDkgKzI0NTEsNiBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lk
ZUluZm8uY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBl
SW50ZXJ2YWwuY3BwIj4KLSAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+Ci0gICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNo
YXBlT3V0c2lkZUluZm8uY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMDIyYTgwNC4uNTI3ZTg0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTg1NCw3ICs1ODU0
LDYgQEAKIAkJRkQ0NUE5NTkxNzVENDE3MTAwQzIxRUM4IC8qIFBvbHlnb25TaGFwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDA4QTg3QTE3NUQz
OTI2MDAyQ0QzNjAgLyogUG9seWdvblNoYXBlLmNwcCAqLzsgfTsKIAkJRkQ0NUE5NUExNzVENDE3
MTAwQzIxRUM4IC8qIFJlY3RhbmdsZVNoYXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDhBODdDMTc1RDM5MjYwMDJDRDM2MCAvKiBSZWN0YW5n
bGVTaGFwZS5jcHAgKi87IH07CiAJCUZENDVBOTVCMTc1RDQxRUUwMEMyMUVDOCAvKiBTaGFwZUlu
dGVydmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RDA4QTg4NTE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVJbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZENDVBOTVDMTc1RDQyMEQwMEMy
MUVDOCAvKiBTaGFwZUludGVydmFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZEMDhBODg0MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUludGVydmFs
LmNwcCAqLzsgfTsKIAkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZENTM3MzUwMTM3
QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgKi87IH07CiAJCUZENTM3MzUzMTM3QjY1MTgw
MDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQ1MzczNTExMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggKi87IH07
CiAJCUZENTM3MzU2MTM3QjY1M0IwMDAwOERDRSAvKiBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ1Mzcz
NTQxMzdCNjUzQjAwMDA4RENFIC8qIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgKi87IH07
CkBAIC0xMjU0Nyw3ICsxMjU0Niw2IEBACiAJCUZEMDhBODgxMTc1RDM5MjYwMDJDRDM2MCAvKiBT
aGFwZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcGVJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMDhBODgyMTc1RDM5MjYwMDJDRDM2MCAv
KiBTaGFwZUluc2lkZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2hhcGVJbnNpZGVJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQw
OEE4ODMxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW5zaWRlSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTaGFwZUluc2lkZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRkQwOEE4ODQxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW50ZXJ2YWwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcGVJbnRlcnZhbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMDhBODg1MTc1RDM5MjYwMDJDRDM2MCAv
KiBTaGFwZUludGVydmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXBl
SW50ZXJ2YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwOEE4ODYxNzVEMzky
NjAwMkNEMzYwIC8qIFNoYXBlT3V0c2lkZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhcGVPdXRzaWRlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZEMDhBODg3MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZU91dHNpZGVJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXBlT3V0c2lkZUluZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNTI3LDcgKzIwNTI1LDYgQEAKIAkJCQlGRDA4
QTg4MTE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVJbmZvLmggKi8sCiAJCQkJRkQwOEE4ODIxNzVE
MzkyNjAwMkNEMzYwIC8qIFNoYXBlSW5zaWRlSW5mby5jcHAgKi8sCiAJCQkJRkQwOEE4ODMxNzVE
MzkyNjAwMkNEMzYwIC8qIFNoYXBlSW5zaWRlSW5mby5oICovLAotCQkJCUZEMDhBODg0MTc1RDM5
MjYwMDJDRDM2MCAvKiBTaGFwZUludGVydmFsLmNwcCAqLywKIAkJCQlGRDA4QTg4NTE3NUQzOTI2
MDAyQ0QzNjAgLyogU2hhcGVJbnRlcnZhbC5oICovLAogCQkJCUZEMDhBODg2MTc1RDM5MjYwMDJD
RDM2MCAvKiBTaGFwZU91dHNpZGVJbmZvLmNwcCAqLywKIAkJCQlGRDA4QTg4NzE3NUQzOTI2MDAy
Q0QzNjAgLyogU2hhcGVPdXRzaWRlSW5mby5oICovLApAQCAtMjYzNzQsNyArMjYzNzEsNiBAQAog
CQkJCUZENDVBOTUzMTc1RDNGQjgwMEMyMUVDOCAvKiBTaGFwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRDQ1QTk1NDE3NUQzRkI4MDBDMjFFQzggLyogU2hhcGVJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZENDVBOTU1MTc1RDNGQjgwMEMyMUVDOCAvKiBTaGFwZUluc2lkZUluZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRkQ0NUE5NUMxNzVENDIwRDAwQzIxRUM4IC8qIFNoYXBlSW50
ZXJ2YWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ0NUE5NTYxNzVEM0ZCODAwQzIxRUM4IC8q
IFNoYXBlT3V0c2lkZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTk1NEQwQjRFREND
QjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJERDhF
MzBEOTFFMkI0MDAwRjg5RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAKaW5k
ZXggZTIxMjRmZC4uNDQ4YzI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUG9seWdvblNoYXBlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlBvbHlnb25TaGFwZS5oIgogCisjaW5jbHVkZSAiU2hhcGVJbnRlcnZh
bC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTIyNCwxMiArMjI1LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBnZXRWZXJ0ZXhJbnRlcnNl
Y3Rpb25WZXJ0aWNlcyhjb25zdCBFZGdlSW50ZXJzZWN0aW9uJiBpbnRlcnNlCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBhcHBlbmRJbnRlcnZhbFgoZmxvYXQgeCwg
Ym9vbCBpbnNpZGUsIFZlY3RvcjxTaGFwZUludGVydmFsPiYgcmVzdWx0KQorc3RhdGljIGlubGlu
ZSBib29sIGFwcGVuZEludGVydmFsWChmbG9hdCB4LCBib29sIGluc2lkZSwgRmxvYXRTaGFwZUlu
dGVydmFscyYgcmVzdWx0KQogewogICAgIGlmICghaW5zaWRlKQotICAgICAgICByZXN1bHQuYXBw
ZW5kKFNoYXBlSW50ZXJ2YWwoeCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKEZsb2F0U2hhcGVJ
bnRlcnZhbCh4LCB4KSk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHRbcmVzdWx0LnNpemUoKSAt
IDFdLngyID0geDsKKyAgICAgICAgcmVzdWx0Lmxhc3QoKS5zZXRYMih4KTsKIAogICAgIHJldHVy
biAhaW5zaWRlOwogfQpAQCAtMjQxLDcgKzI0Miw3IEBAIHN0YXRpYyBib29sIGNvbXBhcmVFZGdl
SW50ZXJzZWN0aW9uWChjb25zdCBFZGdlSW50ZXJzZWN0aW9uJiBpbnRlcnNlY3Rpb24xLCBjb25z
CiAgICAgcmV0dXJuICh4MSA9PSB4MikgPyBpbnRlcnNlY3Rpb24xLnR5cGUgPCBpbnRlcnNlY3Rp
b24yLnR5cGUgOiB4MSA8IHgyOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlWEludGVyc2VjdGlv
bnMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCB5LCBib29sIGlzTWluWSwgVmVj
dG9yPFNoYXBlSW50ZXJ2YWw+JiByZXN1bHQpCitzdGF0aWMgdm9pZCBjb21wdXRlWEludGVyc2Vj
dGlvbnMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCB5LCBib29sIGlzTWluWSwg
RmxvYXRTaGFwZUludGVydmFscyYgcmVzdWx0KQogewogICAgIFZlY3Rvcjxjb25zdCBGbG9hdFBv
bHlnb25FZGdlKj4gZWRnZXM7CiAgICAgaWYgKCFwb2x5Z29uLm92ZXJsYXBwaW5nRWRnZXMoeSwg
eSwgZWRnZXMpKQpAQCAtMzExLDcgKzMxMiw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVYSW50ZXJz
ZWN0aW9ucyhjb25zdCBGbG9hdFBvbHlnb24mIHBvbHlnb24sIGZsb2F0IHksIGJvb2wgaXNNCiAg
ICAgfQogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlT3ZlcmxhcHBpbmdFZGdlWFByb2plY3Rpb25z
KGNvbnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgeTEsIGZsb2F0IHkyLCBWZWN0b3I8
U2hhcGVJbnRlcnZhbD4mIHJlc3VsdCkKK3N0YXRpYyB2b2lkIGNvbXB1dGVPdmVybGFwcGluZ0Vk
Z2VYUHJvamVjdGlvbnMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCB5MSwgZmxv
YXQgeTIsIEZsb2F0U2hhcGVJbnRlcnZhbHMmIHJlc3VsdCkKIHsKICAgICBWZWN0b3I8Y29uc3Qg
RmxvYXRQb2x5Z29uRWRnZSo+IGVkZ2VzOwogICAgIGlmICghcG9seWdvbi5vdmVybGFwcGluZ0Vk
Z2VzKHkxLCB5MiwgZWRnZXMpKQpAQCAtMzM5LDEwICszNDAsMTAgQEAgc3RhdGljIHZvaWQgY29t
cHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9qZWN0aW9ucyhjb25zdCBGbG9hdFBvbHlnb24mIHBvbHln
b24sIGZsb2EKICAgICAgICAgICAgIHN0ZDo6c3dhcCh4MSwgeDIpOwogCiAgICAgICAgIGlmICh4
MiA+IHgxKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTaGFwZUludGVydmFsKHgxLCB4Mikp
OworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGbG9hdFNoYXBlSW50ZXJ2YWwoeDEsIHgyKSk7
CiAgICAgfQogCi0gICAgc29ydFNoYXBlSW50ZXJ2YWxzKHJlc3VsdCk7CisgICAgRmxvYXRTaGFw
ZUludGVydmFsOjpzb3J0VmVjdG9yKHJlc3VsdCk7CiB9CiAKIHZvaWQgUG9seWdvblNoYXBlOjpn
ZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9n
aWNhbEhlaWdodCwgU2VnbWVudExpc3QmIHJlc3VsdCkgY29uc3QKQEAgLTM1NCwyMiArMzU1LDIy
IEBAIHZvaWQgUG9seWdvblNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxv
Z2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhCiAgICAgZmxvYXQgeTEgPSBsb2dpY2FsVG9wOwog
ICAgIGZsb2F0IHkyID0gbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQ7CiAKLSAgICBWZWN0b3I8
U2hhcGVJbnRlcnZhbD4geTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZhbHM7CisgICAgRmxvYXRTaGFw
ZUludGVydmFscyB5MVhJbnRlcnZhbHMsIHkyWEludGVydmFsczsKICAgICBjb21wdXRlWEludGVy
c2VjdGlvbnMocG9seWdvbiwgeTEsIHRydWUsIHkxWEludGVydmFscyk7CiAgICAgY29tcHV0ZVhJ
bnRlcnNlY3Rpb25zKHBvbHlnb24sIHkyLCBmYWxzZSwgeTJYSW50ZXJ2YWxzKTsKIAotICAgIFZl
Y3RvcjxTaGFwZUludGVydmFsPiBtZXJnZWRJbnRlcnZhbHM7Ci0gICAgbWVyZ2VTaGFwZUludGVy
dmFscyh5MVhJbnRlcnZhbHMsIHkyWEludGVydmFscywgbWVyZ2VkSW50ZXJ2YWxzKTsKKyAgICBG
bG9hdFNoYXBlSW50ZXJ2YWxzIG1lcmdlZEludGVydmFsczsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2
YWw6OnVuaXRlVmVjdG9ycyh5MVhJbnRlcnZhbHMsIHkyWEludGVydmFscywgbWVyZ2VkSW50ZXJ2
YWxzKTsKIAotICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiBlZGdlSW50ZXJ2YWxzOworICAgIEZs
b2F0U2hhcGVJbnRlcnZhbHMgZWRnZUludGVydmFsczsKICAgICBjb21wdXRlT3ZlcmxhcHBpbmdF
ZGdlWFByb2plY3Rpb25zKHBvbHlnb24sIHkxLCB5MiwgZWRnZUludGVydmFscyk7CiAKLSAgICBW
ZWN0b3I8U2hhcGVJbnRlcnZhbD4gZXhjbHVkZWRJbnRlcnZhbHM7Ci0gICAgbWVyZ2VTaGFwZUlu
dGVydmFscyhtZXJnZWRJbnRlcnZhbHMsIGVkZ2VJbnRlcnZhbHMsIGV4Y2x1ZGVkSW50ZXJ2YWxz
KTsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWxzIGV4Y2x1ZGVkSW50ZXJ2YWxzOworICAgIEZsb2F0
U2hhcGVJbnRlcnZhbDo6dW5pdGVWZWN0b3JzKG1lcmdlZEludGVydmFscywgZWRnZUludGVydmFs
cywgZXhjbHVkZWRJbnRlcnZhbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4
Y2x1ZGVkSW50ZXJ2YWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFNoYXBlSW50ZXJ2YWwgaW50
ZXJ2YWwgPSBleGNsdWRlZEludGVydmFsc1tpXTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5l
U2VnbWVudChpbnRlcnZhbC54MSwgaW50ZXJ2YWwueDIpKTsKKyAgICAgICAgRmxvYXRTaGFwZUlu
dGVydmFsIGludGVydmFsID0gZXhjbHVkZWRJbnRlcnZhbHNbaV07CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoTGluZVNlZ21lbnQoaW50ZXJ2YWwueDEoKSwgaW50ZXJ2YWwueDIoKSkpOwogICAgIH0K
IH0KIApAQCAtMzgyLDIyICszODMsMjIgQEAgdm9pZCBQb2x5Z29uU2hhcGU6OmdldEluY2x1ZGVk
SW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICBm
bG9hdCB5MSA9IGxvZ2ljYWxUb3A7CiAgICAgZmxvYXQgeTIgPSBsb2dpY2FsVG9wICsgbG9naWNh
bEhlaWdodDsKIAotICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiB5MVhJbnRlcnZhbHMsIHkyWElu
dGVydmFsczsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWxzIHkxWEludGVydmFscywgeTJYSW50ZXJ2
YWxzOwogICAgIGNvbXB1dGVYSW50ZXJzZWN0aW9ucyhwb2x5Z29uLCB5MSwgdHJ1ZSwgeTFYSW50
ZXJ2YWxzKTsKICAgICBjb21wdXRlWEludGVyc2VjdGlvbnMocG9seWdvbiwgeTIsIGZhbHNlLCB5
MlhJbnRlcnZhbHMpOwogCi0gICAgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+IGNvbW1vbkludGVydmFs
czsKLSAgICBpbnRlcnNlY3RTaGFwZUludGVydmFscyh5MVhJbnRlcnZhbHMsIHkyWEludGVydmFs
cywgY29tbW9uSW50ZXJ2YWxzKTsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWxzIGNvbW1vbkludGVy
dmFsczsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6OmludGVyc2VjdFZlY3RvcnMoeTFYSW50ZXJ2
YWxzLCB5MlhJbnRlcnZhbHMsIGNvbW1vbkludGVydmFscyk7CiAKLSAgICBWZWN0b3I8U2hhcGVJ
bnRlcnZhbD4gZWRnZUludGVydmFsczsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWxzIGVkZ2VJbnRl
cnZhbHM7CiAgICAgY29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9qZWN0aW9ucyhwb2x5Z29uLCB5
MSwgeTIsIGVkZ2VJbnRlcnZhbHMpOwogCi0gICAgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+IGluY2x1
ZGVkSW50ZXJ2YWxzOwotICAgIHN1YnRyYWN0U2hhcGVJbnRlcnZhbHMoY29tbW9uSW50ZXJ2YWxz
LCBlZGdlSW50ZXJ2YWxzLCBpbmNsdWRlZEludGVydmFscyk7CisgICAgRmxvYXRTaGFwZUludGVy
dmFscyBpbmNsdWRlZEludGVydmFsczsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6OnN1YnRyYWN0
VmVjdG9ycyhjb21tb25JbnRlcnZhbHMsIGVkZ2VJbnRlcnZhbHMsIGluY2x1ZGVkSW50ZXJ2YWxz
KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbmNsdWRlZEludGVydmFscy5zaXpl
KCk7ICsraSkgewotICAgICAgICBTaGFwZUludGVydmFsIGludGVydmFsID0gaW5jbHVkZWRJbnRl
cnZhbHNbaV07Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoaW50ZXJ2YWwueDEs
IGludGVydmFsLngyKSk7CisgICAgICAgIEZsb2F0U2hhcGVJbnRlcnZhbCBpbnRlcnZhbCA9IGlu
Y2x1ZGVkSW50ZXJ2YWxzW2ldOworICAgICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KGlu
dGVydmFsLngxKCksIGludGVydmFsLngyKCkpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oCmluZGV4IDYyOGFjM2EuLmVkNjlm
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNo
YXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUu
aApAQCAtMzIsNyArMzIsNiBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2x5Z29uLmgiCiAjaW5jbHVk
ZSAiU2hhcGUuaCIKLSNpbmNsdWRlICJTaGFwZUludGVydmFsLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZUludGVydmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnRl
cnZhbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1NTgwMzguLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDE2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0g
KiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MKLSAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFCi0gKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCi0gKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pCi0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0gKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0gKiBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlNoYXBlSW50ZXJ2YWwuaCIKLQotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEludGVydmFsWDFDb21wYXJhdG9y
IHsKLSAgICBib29sIG9wZXJhdG9yKCkgKGNvbnN0IFNoYXBlSW50ZXJ2YWwmIGkxLCBjb25zdCBT
aGFwZUludGVydmFsJiBpMikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpMS54MSA8IGky
LngxOwotICAgIH0KLX07Ci0KLWJvb2wgU2hhcGVJbnRlcnZhbDo6aW50ZXJzZWN0KGNvbnN0IFNo
YXBlSW50ZXJ2YWwmIGksIFNoYXBlSW50ZXJ2YWwmIHJ2KSBjb25zdAotewotICAgIGlmICh4MiA8
IGkueDEgfHwgeDEgPiBpLngyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcnYueDEgPSBz
dGQ6Om1heCh4MSwgaS54MSk7Ci0gICAgcnYueDIgPSBzdGQ6Om1pbih4MiwgaS54Mik7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgc29ydFNoYXBlSW50ZXJ2YWxzKFZlY3RvcjxTaGFwZUlu
dGVydmFsPiYgdikKLXsKLSAgICBzdGQ6OnNvcnQodi5iZWdpbigpLCB2LmVuZCgpLCBJbnRlcnZh
bFgxQ29tcGFyYXRvcigpKTsKLX0KLQotdm9pZCBtZXJnZVNoYXBlSW50ZXJ2YWxzKGNvbnN0IFZl
Y3RvcjxTaGFwZUludGVydmFsPiYgdjEsIGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYgdjIs
IFZlY3RvcjxTaGFwZUludGVydmFsPiYgcnYpCi17Ci0gICAgaWYgKCF2MS5zaXplKCkpCi0gICAg
ICAgIHJ2LmFwcGVuZFJhbmdlKHYyLmJlZ2luKCksIHYyLmVuZCgpKTsKLSAgICBlbHNlIGlmICgh
djIuc2l6ZSgpKQotICAgICAgICBydi5hcHBlbmRSYW5nZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiB2KHYxLnNpemUoKSAr
IHYyLnNpemUoKSk7Ci0gICAgICAgIFNoYXBlSW50ZXJ2YWwqIGludGVydmFsID0gMDsKLQotICAg
ICAgICBzdGQ6Om1lcmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpLCB2Mi5iZWdpbigpLCB2Mi5lbmQo
KSwgdi5iZWdpbigpLCBJbnRlcnZhbFgxQ29tcGFyYXRvcigpKTsKLQotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHYuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgIGlmICghaW50ZXJ2
YWwpCi0gICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSAmdltpXTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKHZbaV0ueDEgPj0gaW50ZXJ2YWwtPngxICYmIHZbaV0ueDEgPD0gaW50ZXJ2YWwtPngyKSAv
LyBGSVhNRTogMXN0IDw9IHRlc3Qgbm90IG5lZWRlZD8KLSAgICAgICAgICAgICAgICBpbnRlcnZh
bC0+eDIgPSBzdGQ6Om1heChpbnRlcnZhbC0+eDIsIHZbaV0ueDIpOwotICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRlcnZhbCk7Ci0gICAgICAgICAgICAg
ICAgaW50ZXJ2YWwgPSAmdltpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChpbnRlcnZhbCkKLSAgICAgICAgICAgIHJ2LmFwcGVuZCgqaW50ZXJ2YWwpOwotICAgIH0K
LX0KLQotdm9pZCBpbnRlcnNlY3RTaGFwZUludGVydmFscyhjb25zdCBWZWN0b3I8U2hhcGVJbnRl
cnZhbD4mIHYxLCBjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mIHYyLCBWZWN0b3I8U2hhcGVJ
bnRlcnZhbD4mIHJ2KQotewotICAgIHNpemVfdCB2MVNpemUgPSB2MS5zaXplKCk7Ci0gICAgc2l6
ZV90IHYyU2l6ZSA9IHYyLnNpemUoKTsKLQotICAgIGlmICghdjFTaXplIHx8ICF2MlNpemUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFNoYXBlSW50ZXJ2YWwgaW50ZXJ2YWw7Ci0gICAgYm9vbCBv
dmVybGFwID0gZmFsc2U7Ci0gICAgc2l6ZV90IGkxID0gMDsKLSAgICBzaXplX3QgaTIgPSAwOwot
Ci0gICAgd2hpbGUgKGkxIDwgdjFTaXplICYmIGkyIDwgdjJTaXplKSB7Ci0gICAgICAgIFNoYXBl
SW50ZXJ2YWwgdjEyOwotICAgICAgICBpZiAodjFbaTFdLmludGVyc2VjdCh2MltpMl0sIHYxMikp
IHsKLSAgICAgICAgICAgIGlmICghb3ZlcmxhcCB8fCAhdjEyLmludGVyc2VjdChpbnRlcnZhbCwg
aW50ZXJ2YWwpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG92ZXJsYXApCi0gICAgICAgICAgICAg
ICAgICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7Ci0gICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSB2
MTI7Ci0gICAgICAgICAgICAgICAgb3ZlcmxhcCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAodjFbaTFdLngyIDwgdjJbaTJdLngyKQotICAgICAgICAgICAgICAgIGkxKys7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaTIrKzsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGlmIChvdmVybGFwKQotICAgICAgICAgICAgICAgIHJ2LmFwcGVuZChp
bnRlcnZhbCk7Ci0gICAgICAgICAgICBvdmVybGFwID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAo
djFbaTFdLngxIDwgdjJbaTJdLngxKQotICAgICAgICAgICAgICAgIGkxKys7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgaTIrKzsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
IChvdmVybGFwKQotICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwpOwotfQotCi12b2lkIHN1YnRy
YWN0U2hhcGVJbnRlcnZhbHMoY29uc3QgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiB2MSwgY29uc3Qg
VmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiB2MiwgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiBydikKLXsK
LSAgICBzaXplX3QgdjFTaXplID0gdjEuc2l6ZSgpOwotICAgIHNpemVfdCB2MlNpemUgPSB2Mi5z
aXplKCk7Ci0KLSAgICBpZiAoIXYxU2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCF2
MlNpemUpCi0gICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgc2l6ZV90IGkxID0gMCwgaTIgPSAwOwotICAgICAgICBydi5hcHBl
bmRSYW5nZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7Ci0KLSAgICAgICAgd2hpbGUgKGkxIDwgcnYu
c2l6ZSgpICYmIGkyIDwgdjJTaXplKSB7Ci0gICAgICAgICAgICBTaGFwZUludGVydmFsJiBpbnRl
cnZhbDEgPSBydltpMV07Ci0gICAgICAgICAgICBjb25zdCBTaGFwZUludGVydmFsJiBpbnRlcnZh
bDIgPSB2MltpMl07Ci0KLSAgICAgICAgICAgIGlmIChpbnRlcnZhbDIueDEgPD0gaW50ZXJ2YWwx
LngxICYmIGludGVydmFsMi54MiA+PSBpbnRlcnZhbDEueDIpCi0gICAgICAgICAgICAgICAgcnYu
cmVtb3ZlKGkxKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGludGVydmFsMi54MiA8IGludGVydmFs
MS54MSkKLSAgICAgICAgICAgICAgICBpMiArPSAxOwotICAgICAgICAgICAgZWxzZSBpZiAoaW50
ZXJ2YWwyLngxID4gaW50ZXJ2YWwxLngyKQotICAgICAgICAgICAgICAgIGkxICs9IDE7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDEgPiBpbnRlcnZhbDEueDEgJiYgaW50ZXJ2YWwy
LngyIDwgaW50ZXJ2YWwxLngyKSB7Ci0gICAgICAgICAgICAgICAgcnYuaW5zZXJ0KGkxLCBTaGFw
ZUludGVydmFsKGludGVydmFsMS54MSwgaW50ZXJ2YWwyLngxKSk7Ci0gICAgICAgICAgICAgICAg
aW50ZXJ2YWwxLngxID0gaW50ZXJ2YWwyLngyOwotICAgICAgICAgICAgICAgIGkyICs9IDE7Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKGludGVydmFsMi54MSA8PSBpbnRlcnZhbDEueDEpIHsKLSAg
ICAgICAgICAgICAgICBpbnRlcnZhbDEueDEgPSBpbnRlcnZhbDIueDI7Ci0gICAgICAgICAgICAg
ICAgaTIgKz0gMTsKLSAgICAgICAgICAgIH0gZWxzZSAgeyAvLyAoaW50ZXJ2YWwyLngyID49IGlu
dGVydmFsMS54MikKLSAgICAgICAgICAgICAgICBpbnRlcnZhbDEueDIgPSBpbnRlcnZhbDIueDE7
Ci0gICAgICAgICAgICAgICAgaTEgKz0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaAppbmRleCAwZmYxNGQ4Li40MjBhMmQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaApAQCAt
MzQsMjQgKzM0LDE4NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBTaGFwZUlu
dGVydmFsIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgU2hhcGVJbnRlcnZhbCB7CiBw
dWJsaWM6Ci0gICAgZmxvYXQgeDE7Ci0gICAgZmxvYXQgeDI7CisgICAgU2hhcGVJbnRlcnZhbChU
IHgxID0gMCwgVCB4MiA9IDApCisgICAgICAgIDogbV94MSh4MSkKKyAgICAgICAgLCBtX3gyKHgy
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHgyID49IHgxKTsKKyAgICB9CisKKyAgICBUIHgxKCkg
Y29uc3QgeyByZXR1cm4gbV94MTsgfQorICAgIFQgeDIoKSBjb25zdCB7IHJldHVybiBtX3gyOyB9
CisKKyAgICB2b2lkIHNldFgxKFQgeDEpCisgICAgeworICAgICAgICBBU1NFUlQobV94MiA+PSB4
MSk7CisgICAgICAgIG1feDEgPSB4MTsKKyAgICB9CiAKLSAgICBTaGFwZUludGVydmFsKGZsb2F0
IHgxID0gMCwgZmxvYXQgeDIgPSAwKQotICAgICAgICA6IHgxKHgxKQotICAgICAgICAsIHgyKHgy
KQorICAgIHZvaWQgc2V0WDIoVCB4MikKICAgICB7CisgICAgICAgIEFTU0VSVCh4MiA+PSBtX3gx
KTsKKyAgICAgICAgbV94MiA9IHgyOwogICAgIH0KIAotICAgIGJvb2wgaW50ZXJzZWN0KGNvbnN0
IFNoYXBlSW50ZXJ2YWwmLCBTaGFwZUludGVydmFsJikgY29uc3Q7CisgICAgdm9pZCBzZXQoVCB4
MSwgVCB4MikKKyAgICB7CisgICAgICAgIEFTU0VSVCh4MiA+PSB4MSk7CisgICAgICAgIG1feDEg
PSB4MTsKKyAgICAgICAgbV94MiA9IHgyOworICAgIH0KKworICAgIGJvb2wgb3ZlcmxhcHMoY29u
c3QgU2hhcGVJbnRlcnZhbDxUPiYgaW50ZXJ2YWwpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4geDIoKSA+PSBpbnRlcnZhbC54MSgpICYmIHgxKCkgPD0gaW50ZXJ2YWwueDIoKTsKKyAgICB9
CisKKyAgICBib29sIGludGVyc2VjdChjb25zdCBTaGFwZUludGVydmFsPFQ+JiBpLCBTaGFwZUlu
dGVydmFsPFQ+JiBydikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICh4MigpIDwgaS54MSgpIHx8
IHgxKCkgPiBpLngyKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJ2LnNl
dChzdGQ6Om1heCh4MSgpLCBpLngxKCkpLCBzdGQ6Om1pbih4MigpLCBpLngyKCkpKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdHlwZWRlZiBWZWN0b3I8U2hhcGVJbnRlcnZh
bDxUPiA+IFNoYXBlSW50ZXJ2YWxzOworICAgIHR5cGVkZWYgdHlwZW5hbWUgU2hhcGVJbnRlcnZh
bHM6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUg
U2hhcGVJbnRlcnZhbHM6Oml0ZXJhdG9yIGl0ZXJhdG9yOworCisgICAgc3RhdGljIHZvaWQgc29y
dFZlY3RvcihTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzKQorICAgIHsKKyAgICAgICAgc3RkOjpz
b3J0KGludGVydmFscy5iZWdpbigpLCBpbnRlcnZhbHMuZW5kKCkpOworICAgIH0KKworICAgIHN0
YXRpYyB2b2lkIHVuaXRlVmVjdG9ycyhjb25zdCBTaGFwZUludGVydmFscyYgdjEsIGNvbnN0IFNo
YXBlSW50ZXJ2YWxzJiB2MiwgU2hhcGVJbnRlcnZhbHMmIHJ2KQorICAgIHsKKyAgICAgICAgaWYg
KCF2MS5zaXplKCkpCisgICAgICAgICAgICBydi5hcHBlbmRSYW5nZSh2Mi5iZWdpbigpLCB2Mi5l
bmQoKSk7CisgICAgICAgIGVsc2UgaWYgKCF2Mi5zaXplKCkpCisgICAgICAgICAgICBydi5hcHBl
bmRSYW5nZSh2MS5iZWdpbigpLCB2MS5lbmQoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgU2hhcGVJbnRlcnZhbHMgdih2MS5zaXplKCkgKyB2Mi5zaXplKCkpOworICAgICAgICAgICAg
U2hhcGVJbnRlcnZhbDxUPiogaW50ZXJ2YWwgPSAwOworCisgICAgICAgICAgICBzdGQ6Om1lcmdl
KHYxLmJlZ2luKCksIHYxLmVuZCgpLCB2Mi5iZWdpbigpLCB2Mi5lbmQoKSwgdi5iZWdpbigpKTsK
KworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2LnNpemUoKTsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFpbnRlcnZhbCkKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2
YWwgPSAmdltpXTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh2W2ldLngxKCkgPj0gaW50ZXJ2
YWwtPngxKCkgJiYgdltpXS54MSgpIDw9IGludGVydmFsLT54MigpKSAvLyBGSVhNRTogMXN0IDw9
IHRlc3Qgbm90IG5lZWRlZD8KKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwtPnNldChpbnRl
cnZhbC0+eDEoKSwgc3RkOjptYXg8VD4oaW50ZXJ2YWwtPngyKCksIHZbaV0ueDIoKSkpOworICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBydi5hcHBlbmQoKmludGVy
dmFsKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSAmdltpXTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbnRlcnZhbCkKKyAgICAg
ICAgICAgICAgICBydi5hcHBlbmQoKmludGVydmFsKTsKKyAgICAgICAgICAgIH0KKyAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCBpbnRlcnNlY3RWZWN0b3JzKGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiB2
MSwgY29uc3QgU2hhcGVJbnRlcnZhbHMmIHYyLCBTaGFwZUludGVydmFscyYgcnYpCisgICAgewor
ICAgICAgICBzaXplX3QgdjFTaXplID0gdjEuc2l6ZSgpOworICAgICAgICBzaXplX3QgdjJTaXpl
ID0gdjIuc2l6ZSgpOworCisgICAgICAgIGlmICghdjFTaXplIHx8ICF2MlNpemUpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgU2hhcGVJbnRlcnZhbDxUPiBpbnRlcnZhbDsKKyAgICAg
ICAgYm9vbCBvdmVybGFwID0gZmFsc2U7CisgICAgICAgIHNpemVfdCBpMSA9IDA7CisgICAgICAg
IHNpemVfdCBpMiA9IDA7CisKKyAgICAgICAgd2hpbGUgKGkxIDwgdjFTaXplICYmIGkyIDwgdjJT
aXplKSB7CisgICAgICAgICAgICBTaGFwZUludGVydmFsPFQ+IHYxMjsKKyAgICAgICAgICAgIGlm
ICh2MVtpMV0uaW50ZXJzZWN0KHYyW2kyXSwgdjEyKSkgeworICAgICAgICAgICAgICAgIGlmICgh
b3ZlcmxhcCB8fCAhdjEyLmludGVyc2VjdChpbnRlcnZhbCwgaW50ZXJ2YWwpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChvdmVybGFwKQorICAgICAgICAgICAgICAgICAgICAgICAgcnYuYXBw
ZW5kKGludGVydmFsKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSB2MTI7CisgICAg
ICAgICAgICAgICAgICAgIG92ZXJsYXAgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBpZiAodjFbaTFdLngyKCkgPCB2MltpMl0ueDIoKSkKKyAgICAgICAgICAgICAg
ICAgICAgaTErKzsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGky
Kys7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChvdmVybGFwKQor
ICAgICAgICAgICAgICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwpOworICAgICAgICAgICAgICAg
IG92ZXJsYXAgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAodjFbaTFdLngxKCkgPCB2Mltp
Ml0ueDEoKSkKKyAgICAgICAgICAgICAgICAgICAgaTErKzsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIGkyKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAob3ZlcmxhcCkKKyAgICAgICAgICAgIHJ2LmFwcGVuZChpbnRlcnZhbCk7Cisg
ICAgfQorCisgICAgc3RhdGljIHZvaWQgc3VidHJhY3RWZWN0b3JzKGNvbnN0IFNoYXBlSW50ZXJ2
YWxzJiB2MSwgY29uc3QgU2hhcGVJbnRlcnZhbHMmIHYyLCBTaGFwZUludGVydmFscyYgcnYpCisg
ICAgeworICAgICAgICBzaXplX3QgdjFTaXplID0gdjEuc2l6ZSgpOworICAgICAgICBzaXplX3Qg
djJTaXplID0gdjIuc2l6ZSgpOworCisgICAgICAgIGlmICghdjFTaXplKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmICghdjJTaXplKQorICAgICAgICAgICAgcnYuYXBwZW5kUmFu
Z2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNp
emVfdCBpMSA9IDAsIGkyID0gMDsKKyAgICAgICAgICAgIHJ2LmFwcGVuZFJhbmdlKHYxLmJlZ2lu
KCksIHYxLmVuZCgpKTsKKworICAgICAgICAgICAgd2hpbGUgKGkxIDwgcnYuc2l6ZSgpICYmIGky
IDwgdjJTaXplKSB7CisgICAgICAgICAgICAgICAgU2hhcGVJbnRlcnZhbDxUPiYgaW50ZXJ2YWwx
ID0gcnZbaTFdOworICAgICAgICAgICAgICAgIGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGludGVy
dmFsMiA9IHYyW2kyXTsKKworICAgICAgICAgICAgICAgIGlmIChpbnRlcnZhbDIueDEoKSA8PSBp
bnRlcnZhbDEueDEoKSAmJiBpbnRlcnZhbDIueDIoKSA+PSBpbnRlcnZhbDEueDIoKSkKKyAgICAg
ICAgICAgICAgICAgICAgcnYucmVtb3ZlKGkxKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChp
bnRlcnZhbDIueDIoKSA8IGludGVydmFsMS54MSgpKQorICAgICAgICAgICAgICAgICAgICBpMiAr
PSAxOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGludGVydmFsMi54MSgpID4gaW50ZXJ2YWwx
LngyKCkpCisgICAgICAgICAgICAgICAgICAgIGkxICs9IDE7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoaW50ZXJ2YWwyLngxKCkgPiBpbnRlcnZhbDEueDEoKSAmJiBpbnRlcnZhbDIueDIoKSA8
IGludGVydmFsMS54MigpKSB7CisgICAgICAgICAgICAgICAgICAgIHJ2Lmluc2VydChpMSwgU2hh
cGVJbnRlcnZhbChpbnRlcnZhbDEueDEoKSwgaW50ZXJ2YWwyLngxKCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgaW50ZXJ2YWwxLnNldChpbnRlcnZhbDIueDIoKSwgaW50ZXJ2YWwxLngyKCkpOwor
ICAgICAgICAgICAgICAgICAgICBpMiArPSAxOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
aW50ZXJ2YWwyLngxKCkgPD0gaW50ZXJ2YWwxLngxKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
aW50ZXJ2YWwxLnNldChpbnRlcnZhbDIueDIoKSwgaW50ZXJ2YWwxLngyKCkpOworICAgICAgICAg
ICAgICAgICAgICBpMiArPSAxOworICAgICAgICAgICAgICAgIH0gZWxzZSAgeyAvLyAoaW50ZXJ2
YWwyLngyKCkgPj0gaW50ZXJ2YWwxLngyKCkpCisgICAgICAgICAgICAgICAgICAgIGludGVydmFs
MS5zZXQoaW50ZXJ2YWwxLngxKCksIGludGVydmFsMi54MSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgaTEgKz0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIHgxKCkgPT0gb3RoZXIueDEoKSAmJiB4MigpID09IG90aGVyLngy
KCk7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I8
IChjb25zdCBTaGFwZUludGVydmFsPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1cm4geDEoKSA8IG90
aGVyLngxKCk7IH0KKyAgICBib29sIG9wZXJhdG9yPiAoY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG9wZXJhdG9yPCAob3RoZXIsICp0aGlzKTsgfQorICAgIGJv
b2wgb3BlcmF0b3I8PShjb25zdCBTaGFwZUludGVydmFsPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1
cm4gIW9wZXJhdG9yPiAob3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFNoYXBl
SW50ZXJ2YWw8VD4mIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I8IChvdGhlcik7IH0K
KworcHJpdmF0ZToKKyAgICBUIG1feDE7CisgICAgVCBtX3gyOwogfTsKIAotdm9pZCBzb3J0U2hh
cGVJbnRlcnZhbHMoVmVjdG9yPFNoYXBlSW50ZXJ2YWw+Jik7Ci12b2lkIG1lcmdlU2hhcGVJbnRl
cnZhbHMoY29uc3QgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiwgY29uc3QgVmVjdG9yPFNoYXBlSW50
ZXJ2YWw+JiwgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+Jik7Ci12b2lkIGludGVyc2VjdFNoYXBlSW50
ZXJ2YWxzKGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYsIGNvbnN0IFZlY3RvcjxTaGFwZUlu
dGVydmFsPiYsIFZlY3RvcjxTaGFwZUludGVydmFsPiYpOwotdm9pZCBzdWJ0cmFjdFNoYXBlSW50
ZXJ2YWxzKGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYsIGNvbnN0IFZlY3RvcjxTaGFwZUlu
dGVydmFsPiYsIFZlY3RvcjxTaGFwZUludGVydmFsPiYpOwordHlwZWRlZiBTaGFwZUludGVydmFs
PGludD4gSW50U2hhcGVJbnRlcnZhbDsKK3R5cGVkZWYgU2hhcGVJbnRlcnZhbDxmbG9hdD4gRmxv
YXRTaGFwZUludGVydmFsOworCit0eXBlZGVmIFZlY3RvcjxJbnRTaGFwZUludGVydmFsPiBJbnRT
aGFwZUludGVydmFsczsKK3R5cGVkZWYgVmVjdG9yPEZsb2F0U2hhcGVJbnRlcnZhbD4gRmxvYXRT
aGFwZUludGVydmFsczsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210134</attachid>
            <date>2013-08-30 10:58:49 -0700</date>
            <delta_ts>2013-08-30 11:57:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>27695</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTNjNzM5MS4uY2RkYjIzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMTMsNyArMjIxMyw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNw
cAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcAotICAgIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0
c2lkZUluZm8uY3BwCiAKICAgICByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggODhlN2M5NC4uZDc5MjRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisy
MDEzLTA4LTI4ICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhcGVzXSBSZWRlZmluZSB0aGUgU2hhcGVJbnRlcnZhbHMgY2xhc3MgYXMgYSB0ZW1wbGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCB0aGlzIHdhcyBqdXN0IGFuIGludGVybmFsIHJlZmFjdG9yaW5nLgorCisgICAgICAg
IFRoZSBleGlzdGluZyBTaGFwZUludGVydmFscyBjbGFzcyBoYXMgYmVlbiBjb252ZXJ0ZWQgaW50
byBhIHRlbXBsYXRlIHdob3NlCisgICAgICAgIHR5cGUgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRo
ZSBpbnRlcnZhbCdzIHgxIGFuZCB4MiBob3Jpem9udGFsIGVuZHBvaW50cworICAgICAgICAoZm9y
bWVybHkgZmxvYXQpLiBUaGVyZSB3ZXJlIHNldmVyYWwgb3RoZXIgbWlub3IgY2hhbmdlcywgYWxs
IGluIHRoZSByZWFsbQorICAgICAgICBvZiByZWZhY3RvcmluZzoKKworICAgICAgICAtIFRoZSBv
cmlnaW5hbCB0eXBlIHdhcyBhIHN0cnVjdCB3aXRoIHB1YmxpYyB4MSBhbmQgeDIgZmllbGRzLiBJ
dCdzIG5vdyBhIGNsYXNzCisgICAgICAgIHdpdGggeDEgYW5kIHgyIGFjY2Vzc29ycy4gQVNTRVJU
UyBhcmUgbm93IHVzZWQgdG8gbWFpbnRhaW4gdGhlIHgyID49IHgxIGludmFyaWFudC4KKyAgICAg
ICAgSW4gdGhlIG9yaWdpbmFsIGNvZGUgdGhlIGludmFyaWFudCB3YXMgbm90IGNoZWNrZWQuCisK
KyAgICAgICAgLSBUaGUgbG9naWNhbCBjb21wYXJpc29uIG9wZXJhdG9ycyBoYXZlIGJlZW4gb3Zl
cmxvYWRlZCBmb3IgU2hhcGVJbnRlcnZhbC4KKyAgICAgICAgVGhpcyBvYnZpYXRlcyB0aGUgSW50
ZXJ2YWxYMUNvbXBhcmF0b3IgY2xhc3Mgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZC4KKworICAgICAg
ICAtIFRoZSBuYW1lcyBvZiB0aGUgZ2xvYmFsIFNoYXBlSW50ZXJ2YWwgVmVjdG9yIHNldCBvcGVy
YXRpb24gbWV0aG9kcyBoYXZlIGJlZW4KKyAgICAgICAgY2hhbmdlZCB0byByZWZsZWN0IHRoZSBm
YWN0IHRoYXQgdGhleSdyZSBub3cgbWVtYmVycyBvZiB0aGUgdGVtcGxhdGUgY2xhc3MsCisgICAg
ICAgIHJhdGhlciB0aGFuIGdsb2JhbHMuCisKKyAgICAgICAgUG9seWdvblNoYXBlLmNwcCBkZXBl
bmRlZCBvbiB0aGUgU2hhcGVJbnRlcnZhbCBjbGFzcy4gSW4gdGhlIG9uZSBvciB0d28gcGxhY2Vz
CisgICAgICAgIHdoZXJlIGFuIGludGVydmFsJ3MgeDEgb3IgeDEgZmllbGRzIGhhZCBiZWVuIHNl
dCBleHBsaWNpdGx5LCBTaGFwZUludGVydmFsOjpzZXQoKQorICAgICAgICBpcyBub3cgdXNlZCB0
byBzZXQgYm90aCBmaWVsZHMuIFRoaXMgYWxzbyBlbmFibGVzIHRoZSBpbnZhcmlhbnQgY2hlY2sg
bWVudGlvbmVkCisgICAgICAgIGVhcmxpZXIuIFRoZSBvdGhlciBjaGFuZ2VzIHRvIHRoaXMgY2xh
c3MgYXJlIHN5bnRhdGljLCB0byBhY2NvdW50IGZvciB0aGUgU2hhcGVJbnRlcnZhbAorICAgICAg
ICBjbGFzcydzIGNoYW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFwcGVuZEludGVydmFsWCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlWEludGVy
c2VjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9q
ZWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQb2x5Z29uU2hhcGU6OmdldEV4Y2x1ZGVkSW50
ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvbHlnb25TaGFwZTo6Z2V0SW5jbHVkZWRJbnRl
cnZhbHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaDogVGhlIGVudGlyZSBpbXBsZW1l
bnRhdGlvbiBpcyBub3cgaGVyZS4gCisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjpT
aGFwZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OngxKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXBlSW50ZXJ2YWw6OngyKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXBlSW50ZXJ2YWw6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjpvdmVy
bGFwcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUludGVydmFsOjppbnRlcnNlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcGVJbnRlcnZhbDo6c29ydFZlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpTaGFwZUludGVydmFsOjp1bml0ZVZlY3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cGVJbnRlcnZhbDo6aW50ZXJzZWN0VmVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUlu
dGVydmFsOjpzdWJ0cmFjdFZlY3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPCApOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I+ICk6CisgICAgICAgIChXZWJDb3Jl
OjpvcGVyYXRvcjw9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPj0pOgorCiAyMDEzLTA4
LTMwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRk
IFVTRShDRk5FVFdPUkspIGd1YXJkIHRvIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTBmODQzNS4uOWQ3YjI3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NTc0LDcgKzQ1NzQsNiBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJ
bmZvLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZv
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8u
aCBcCi0JU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmggXAogCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCmluZGV4IGRhMjE0NWYuLjI3ZjgzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTIzOCw3ICsxMjM4
LDYgQEAgU09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgXAogICAg
IHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZUluc2lkZUluZm8uY3BwIFwKLSAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwu
Y3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwIFwKICAgICBy
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwIFwKICAgICByZW5kZXJpbmcvc3R5bGUvQ29u
dGVudERhdGEuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCmluZGV4IGRhMGUzNWIuLjJmOWFjZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTEwMTEsNyArMTEwMTEsNiBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFw
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNo
YXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNc
U2hhcGVJbnNpZGVJbmZvLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRl
cmluZ1xzaGFwZXNcU2hhcGVJbnRlcnZhbC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlT3V0c2lkZUluZm8uY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdQYXRoRGF0YS5jcHAiPgogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpp
bmRleCA3NGQzOWM5Li4wMWIyZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0yNDUxLDkgKzI0NTEsNiBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lk
ZUluZm8uY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBl
SW50ZXJ2YWwuY3BwIj4KLSAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+Ci0gICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNo
YXBlT3V0c2lkZUluZm8uY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMDIyYTgwNC4uNTI3ZTg0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTg1NCw3ICs1ODU0
LDYgQEAKIAkJRkQ0NUE5NTkxNzVENDE3MTAwQzIxRUM4IC8qIFBvbHlnb25TaGFwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDA4QTg3QTE3NUQz
OTI2MDAyQ0QzNjAgLyogUG9seWdvblNoYXBlLmNwcCAqLzsgfTsKIAkJRkQ0NUE5NUExNzVENDE3
MTAwQzIxRUM4IC8qIFJlY3RhbmdsZVNoYXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDhBODdDMTc1RDM5MjYwMDJDRDM2MCAvKiBSZWN0YW5n
bGVTaGFwZS5jcHAgKi87IH07CiAJCUZENDVBOTVCMTc1RDQxRUUwMEMyMUVDOCAvKiBTaGFwZUlu
dGVydmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RDA4QTg4NTE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVJbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZENDVBOTVDMTc1RDQyMEQwMEMy
MUVDOCAvKiBTaGFwZUludGVydmFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZEMDhBODg0MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUludGVydmFs
LmNwcCAqLzsgfTsKIAkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZENTM3MzUwMTM3
QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgKi87IH07CiAJCUZENTM3MzUzMTM3QjY1MTgw
MDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQ1MzczNTExMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggKi87IH07
CiAJCUZENTM3MzU2MTM3QjY1M0IwMDAwOERDRSAvKiBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ1Mzcz
NTQxMzdCNjUzQjAwMDA4RENFIC8qIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgKi87IH07
CkBAIC0xMjU0Nyw3ICsxMjU0Niw2IEBACiAJCUZEMDhBODgxMTc1RDM5MjYwMDJDRDM2MCAvKiBT
aGFwZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcGVJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMDhBODgyMTc1RDM5MjYwMDJDRDM2MCAv
KiBTaGFwZUluc2lkZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2hhcGVJbnNpZGVJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQw
OEE4ODMxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW5zaWRlSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTaGFwZUluc2lkZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRkQwOEE4ODQxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlSW50ZXJ2YWwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcGVJbnRlcnZhbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMDhBODg1MTc1RDM5MjYwMDJDRDM2MCAv
KiBTaGFwZUludGVydmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXBl
SW50ZXJ2YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwOEE4ODYxNzVEMzky
NjAwMkNEMzYwIC8qIFNoYXBlT3V0c2lkZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhcGVPdXRzaWRlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZEMDhBODg3MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZU91dHNpZGVJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXBlT3V0c2lkZUluZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNTI3LDcgKzIwNTI1LDYgQEAKIAkJCQlGRDA4
QTg4MTE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGVJbmZvLmggKi8sCiAJCQkJRkQwOEE4ODIxNzVE
MzkyNjAwMkNEMzYwIC8qIFNoYXBlSW5zaWRlSW5mby5jcHAgKi8sCiAJCQkJRkQwOEE4ODMxNzVE
MzkyNjAwMkNEMzYwIC8qIFNoYXBlSW5zaWRlSW5mby5oICovLAotCQkJCUZEMDhBODg0MTc1RDM5
MjYwMDJDRDM2MCAvKiBTaGFwZUludGVydmFsLmNwcCAqLywKIAkJCQlGRDA4QTg4NTE3NUQzOTI2
MDAyQ0QzNjAgLyogU2hhcGVJbnRlcnZhbC5oICovLAogCQkJCUZEMDhBODg2MTc1RDM5MjYwMDJD
RDM2MCAvKiBTaGFwZU91dHNpZGVJbmZvLmNwcCAqLywKIAkJCQlGRDA4QTg4NzE3NUQzOTI2MDAy
Q0QzNjAgLyogU2hhcGVPdXRzaWRlSW5mby5oICovLApAQCAtMjYzNzQsNyArMjYzNzEsNiBAQAog
CQkJCUZENDVBOTUzMTc1RDNGQjgwMEMyMUVDOCAvKiBTaGFwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRDQ1QTk1NDE3NUQzRkI4MDBDMjFFQzggLyogU2hhcGVJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZENDVBOTU1MTc1RDNGQjgwMEMyMUVDOCAvKiBTaGFwZUluc2lkZUluZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRkQ0NUE5NUMxNzVENDIwRDAwQzIxRUM4IC8qIFNoYXBlSW50
ZXJ2YWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ0NUE5NTYxNzVEM0ZCODAwQzIxRUM4IC8q
IFNoYXBlT3V0c2lkZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTk1NEQwQjRFREND
QjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJERDhF
MzBEOTFFMkI0MDAwRjg5RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAKaW5k
ZXggZTIxMjRmZC4uNmQzMGZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUG9seWdvblNoYXBlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlBvbHlnb25TaGFwZS5oIgogCisjaW5jbHVkZSAiU2hhcGVJbnRlcnZh
bC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTIyNCwxMiArMjI1LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBnZXRWZXJ0ZXhJbnRlcnNl
Y3Rpb25WZXJ0aWNlcyhjb25zdCBFZGdlSW50ZXJzZWN0aW9uJiBpbnRlcnNlCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBhcHBlbmRJbnRlcnZhbFgoZmxvYXQgeCwg
Ym9vbCBpbnNpZGUsIFZlY3RvcjxTaGFwZUludGVydmFsPiYgcmVzdWx0KQorc3RhdGljIGlubGlu
ZSBib29sIGFwcGVuZEludGVydmFsWChmbG9hdCB4LCBib29sIGluc2lkZSwgRmxvYXRTaGFwZUlu
dGVydmFscyYgcmVzdWx0KQogewogICAgIGlmICghaW5zaWRlKQotICAgICAgICByZXN1bHQuYXBw
ZW5kKFNoYXBlSW50ZXJ2YWwoeCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKEZsb2F0U2hhcGVJ
bnRlcnZhbCh4LCB4KSk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHRbcmVzdWx0LnNpemUoKSAt
IDFdLngyID0geDsKKyAgICAgICAgcmVzdWx0Lmxhc3QoKS5zZXRYMih4KTsKIAogICAgIHJldHVy
biAhaW5zaWRlOwogfQpAQCAtMjQxLDcgKzI0Miw3IEBAIHN0YXRpYyBib29sIGNvbXBhcmVFZGdl
SW50ZXJzZWN0aW9uWChjb25zdCBFZGdlSW50ZXJzZWN0aW9uJiBpbnRlcnNlY3Rpb24xLCBjb25z
CiAgICAgcmV0dXJuICh4MSA9PSB4MikgPyBpbnRlcnNlY3Rpb24xLnR5cGUgPCBpbnRlcnNlY3Rp
b24yLnR5cGUgOiB4MSA8IHgyOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlWEludGVyc2VjdGlv
bnMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCB5LCBib29sIGlzTWluWSwgVmVj
dG9yPFNoYXBlSW50ZXJ2YWw+JiByZXN1bHQpCitzdGF0aWMgdm9pZCBjb21wdXRlWEludGVyc2Vj
dGlvbnMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCB5LCBib29sIGlzTWluWSwg
RmxvYXRTaGFwZUludGVydmFscyYgcmVzdWx0KQogewogICAgIFZlY3Rvcjxjb25zdCBGbG9hdFBv
bHlnb25FZGdlKj4gZWRnZXM7CiAgICAgaWYgKCFwb2x5Z29uLm92ZXJsYXBwaW5nRWRnZXMoeSwg
eSwgZWRnZXMpKQpAQCAtMzExLDcgKzMxMiw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVYSW50ZXJz
ZWN0aW9ucyhjb25zdCBGbG9hdFBvbHlnb24mIHBvbHlnb24sIGZsb2F0IHksIGJvb2wgaXNNCiAg
ICAgfQogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlT3ZlcmxhcHBpbmdFZGdlWFByb2plY3Rpb25z
KGNvbnN0IEZsb2F0UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgeTEsIGZsb2F0IHkyLCBWZWN0b3I8
U2hhcGVJbnRlcnZhbD4mIHJlc3VsdCkKK3N0YXRpYyB2b2lkIGNvbXB1dGVPdmVybGFwcGluZ0Vk
Z2VYUHJvamVjdGlvbnMoY29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCBmbG9hdCB5MSwgZmxv
YXQgeTIsIEZsb2F0U2hhcGVJbnRlcnZhbHMmIHJlc3VsdCkKIHsKICAgICBWZWN0b3I8Y29uc3Qg
RmxvYXRQb2x5Z29uRWRnZSo+IGVkZ2VzOwogICAgIGlmICghcG9seWdvbi5vdmVybGFwcGluZ0Vk
Z2VzKHkxLCB5MiwgZWRnZXMpKQpAQCAtMzM5LDEwICszNDAsMTAgQEAgc3RhdGljIHZvaWQgY29t
cHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9qZWN0aW9ucyhjb25zdCBGbG9hdFBvbHlnb24mIHBvbHln
b24sIGZsb2EKICAgICAgICAgICAgIHN0ZDo6c3dhcCh4MSwgeDIpOwogCiAgICAgICAgIGlmICh4
MiA+IHgxKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTaGFwZUludGVydmFsKHgxLCB4Mikp
OworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGbG9hdFNoYXBlSW50ZXJ2YWwoeDEsIHgyKSk7
CiAgICAgfQogCi0gICAgc29ydFNoYXBlSW50ZXJ2YWxzKHJlc3VsdCk7CisgICAgRmxvYXRTaGFw
ZUludGVydmFsOjpzb3J0VmVjdG9yKHJlc3VsdCk7CiB9CiAKIHZvaWQgUG9seWdvblNoYXBlOjpn
ZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9n
aWNhbEhlaWdodCwgU2VnbWVudExpc3QmIHJlc3VsdCkgY29uc3QKQEAgLTM1NCwyMiArMzU1LDIy
IEBAIHZvaWQgUG9seWdvblNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxv
Z2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhCiAgICAgZmxvYXQgeTEgPSBsb2dpY2FsVG9wOwog
ICAgIGZsb2F0IHkyID0gbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQ7CiAKLSAgICBWZWN0b3I8
U2hhcGVJbnRlcnZhbD4geTFYSW50ZXJ2YWxzLCB5MlhJbnRlcnZhbHM7CisgICAgRmxvYXRTaGFw
ZUludGVydmFscyB5MVhJbnRlcnZhbHMsIHkyWEludGVydmFsczsKICAgICBjb21wdXRlWEludGVy
c2VjdGlvbnMocG9seWdvbiwgeTEsIHRydWUsIHkxWEludGVydmFscyk7CiAgICAgY29tcHV0ZVhJ
bnRlcnNlY3Rpb25zKHBvbHlnb24sIHkyLCBmYWxzZSwgeTJYSW50ZXJ2YWxzKTsKIAotICAgIFZl
Y3RvcjxTaGFwZUludGVydmFsPiBtZXJnZWRJbnRlcnZhbHM7Ci0gICAgbWVyZ2VTaGFwZUludGVy
dmFscyh5MVhJbnRlcnZhbHMsIHkyWEludGVydmFscywgbWVyZ2VkSW50ZXJ2YWxzKTsKKyAgICBG
bG9hdFNoYXBlSW50ZXJ2YWxzIG1lcmdlZEludGVydmFsczsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2
YWw6OnVuaXRlVmVjdG9ycyh5MVhJbnRlcnZhbHMsIHkyWEludGVydmFscywgbWVyZ2VkSW50ZXJ2
YWxzKTsKIAotICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiBlZGdlSW50ZXJ2YWxzOworICAgIEZs
b2F0U2hhcGVJbnRlcnZhbHMgZWRnZUludGVydmFsczsKICAgICBjb21wdXRlT3ZlcmxhcHBpbmdF
ZGdlWFByb2plY3Rpb25zKHBvbHlnb24sIHkxLCB5MiwgZWRnZUludGVydmFscyk7CiAKLSAgICBW
ZWN0b3I8U2hhcGVJbnRlcnZhbD4gZXhjbHVkZWRJbnRlcnZhbHM7Ci0gICAgbWVyZ2VTaGFwZUlu
dGVydmFscyhtZXJnZWRJbnRlcnZhbHMsIGVkZ2VJbnRlcnZhbHMsIGV4Y2x1ZGVkSW50ZXJ2YWxz
KTsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWxzIGV4Y2x1ZGVkSW50ZXJ2YWxzOworICAgIEZsb2F0
U2hhcGVJbnRlcnZhbDo6dW5pdGVWZWN0b3JzKG1lcmdlZEludGVydmFscywgZWRnZUludGVydmFs
cywgZXhjbHVkZWRJbnRlcnZhbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4
Y2x1ZGVkSW50ZXJ2YWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFNoYXBlSW50ZXJ2YWwgaW50
ZXJ2YWwgPSBleGNsdWRlZEludGVydmFsc1tpXTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5l
U2VnbWVudChpbnRlcnZhbC54MSwgaW50ZXJ2YWwueDIpKTsKKyAgICAgICAgRmxvYXRTaGFwZUlu
dGVydmFsIGludGVydmFsID0gZXhjbHVkZWRJbnRlcnZhbHNbaV07CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoTGluZVNlZ21lbnQoaW50ZXJ2YWwueDEoKSwgaW50ZXJ2YWwueDIoKSkpOwogICAgIH0K
IH0KIApAQCAtMzgyLDIyICszODMsMjIgQEAgdm9pZCBQb2x5Z29uU2hhcGU6OmdldEluY2x1ZGVk
SW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICBm
bG9hdCB5MSA9IGxvZ2ljYWxUb3A7CiAgICAgZmxvYXQgeTIgPSBsb2dpY2FsVG9wICsgbG9naWNh
bEhlaWdodDsKIAotICAgIFZlY3RvcjxTaGFwZUludGVydmFsPiB5MVhJbnRlcnZhbHMsIHkyWElu
dGVydmFsczsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWxzIHkxWEludGVydmFscywgeTJYSW50ZXJ2
YWxzOwogICAgIGNvbXB1dGVYSW50ZXJzZWN0aW9ucyhwb2x5Z29uLCB5MSwgdHJ1ZSwgeTFYSW50
ZXJ2YWxzKTsKICAgICBjb21wdXRlWEludGVyc2VjdGlvbnMocG9seWdvbiwgeTIsIGZhbHNlLCB5
MlhJbnRlcnZhbHMpOwogCi0gICAgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+IGNvbW1vbkludGVydmFs
czsKLSAgICBpbnRlcnNlY3RTaGFwZUludGVydmFscyh5MVhJbnRlcnZhbHMsIHkyWEludGVydmFs
cywgY29tbW9uSW50ZXJ2YWxzKTsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWxzIGNvbW1vbkludGVy
dmFsczsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6OmludGVyc2VjdFZlY3RvcnMoeTFYSW50ZXJ2
YWxzLCB5MlhJbnRlcnZhbHMsIGNvbW1vbkludGVydmFscyk7CiAKLSAgICBWZWN0b3I8U2hhcGVJ
bnRlcnZhbD4gZWRnZUludGVydmFsczsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWxzIGVkZ2VJbnRl
cnZhbHM7CiAgICAgY29tcHV0ZU92ZXJsYXBwaW5nRWRnZVhQcm9qZWN0aW9ucyhwb2x5Z29uLCB5
MSwgeTIsIGVkZ2VJbnRlcnZhbHMpOwogCi0gICAgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+IGluY2x1
ZGVkSW50ZXJ2YWxzOwotICAgIHN1YnRyYWN0U2hhcGVJbnRlcnZhbHMoY29tbW9uSW50ZXJ2YWxz
LCBlZGdlSW50ZXJ2YWxzLCBpbmNsdWRlZEludGVydmFscyk7CisgICAgRmxvYXRTaGFwZUludGVy
dmFscyBpbmNsdWRlZEludGVydmFsczsKKyAgICBGbG9hdFNoYXBlSW50ZXJ2YWw6OnN1YnRyYWN0
VmVjdG9ycyhjb21tb25JbnRlcnZhbHMsIGVkZ2VJbnRlcnZhbHMsIGluY2x1ZGVkSW50ZXJ2YWxz
KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbmNsdWRlZEludGVydmFscy5zaXpl
KCk7ICsraSkgewotICAgICAgICBTaGFwZUludGVydmFsIGludGVydmFsID0gaW5jbHVkZWRJbnRl
cnZhbHNbaV07Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoaW50ZXJ2YWwueDEs
IGludGVydmFsLngyKSk7CisgICAgICAgIGNvbnN0IEZsb2F0U2hhcGVJbnRlcnZhbCYgaW50ZXJ2
YWwgPSBpbmNsdWRlZEludGVydmFsc1tpXTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5lU2Vn
bWVudChpbnRlcnZhbC54MSgpLCBpbnRlcnZhbC54MigpKSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaAppbmRleCA2MjhhYzNh
Li5lZDY5ZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Bv
bHlnb25TaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdv
blNoYXBlLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9seWdvbi5oIgog
I2luY2x1ZGUgIlNoYXBlLmgiCi0jaW5jbHVkZSAiU2hhcGVJbnRlcnZhbC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbnRlcnZhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlSW50ZXJ2YWwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTU4MDM4Li4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnRlcnZh
bC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZwotICogICAgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTCi0gKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAotICogSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKQotICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotICogU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAot
ICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJTaGFwZUludGVydmFsLmgiCi0KLSNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBJbnRlcnZhbFgxQ29t
cGFyYXRvciB7Ci0gICAgYm9vbCBvcGVyYXRvcigpIChjb25zdCBTaGFwZUludGVydmFsJiBpMSwg
Y29uc3QgU2hhcGVJbnRlcnZhbCYgaTIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaTEu
eDEgPCBpMi54MTsKLSAgICB9Ci19OwotCi1ib29sIFNoYXBlSW50ZXJ2YWw6OmludGVyc2VjdChj
b25zdCBTaGFwZUludGVydmFsJiBpLCBTaGFwZUludGVydmFsJiBydikgY29uc3QKLXsKLSAgICBp
ZiAoeDIgPCBpLngxIHx8IHgxID4gaS54MikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJ2
LngxID0gc3RkOjptYXgoeDEsIGkueDEpOwotICAgIHJ2LngyID0gc3RkOjptaW4oeDIsIGkueDIp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIHNvcnRTaGFwZUludGVydmFscyhWZWN0b3I8
U2hhcGVJbnRlcnZhbD4mIHYpCi17Ci0gICAgc3RkOjpzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSwg
SW50ZXJ2YWxYMUNvbXBhcmF0b3IoKSk7Ci19Ci0KLXZvaWQgbWVyZ2VTaGFwZUludGVydmFscyhj
b25zdCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mIHYxLCBjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZh
bD4mIHYyLCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mIHJ2KQotewotICAgIGlmICghdjEuc2l6ZSgp
KQotICAgICAgICBydi5hcHBlbmRSYW5nZSh2Mi5iZWdpbigpLCB2Mi5lbmQoKSk7Ci0gICAgZWxz
ZSBpZiAoIXYyLnNpemUoKSkKLSAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEu
ZW5kKCkpOwotICAgIGVsc2UgewotICAgICAgICBWZWN0b3I8U2hhcGVJbnRlcnZhbD4gdih2MS5z
aXplKCkgKyB2Mi5zaXplKCkpOwotICAgICAgICBTaGFwZUludGVydmFsKiBpbnRlcnZhbCA9IDA7
Ci0KLSAgICAgICAgc3RkOjptZXJnZSh2MS5iZWdpbigpLCB2MS5lbmQoKSwgdjIuYmVnaW4oKSwg
djIuZW5kKCksIHYuYmVnaW4oKSwgSW50ZXJ2YWxYMUNvbXBhcmF0b3IoKSk7Ci0KLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB2LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAo
IWludGVydmFsKQotICAgICAgICAgICAgICAgIGludGVydmFsID0gJnZbaV07Ci0gICAgICAgICAg
ICBlbHNlIGlmICh2W2ldLngxID49IGludGVydmFsLT54MSAmJiB2W2ldLngxIDw9IGludGVydmFs
LT54MikgLy8gRklYTUU6IDFzdCA8PSB0ZXN0IG5vdCBuZWVkZWQ/Ci0gICAgICAgICAgICAgICAg
aW50ZXJ2YWwtPngyID0gc3RkOjptYXgoaW50ZXJ2YWwtPngyLCB2W2ldLngyKTsKLSAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJ2LmFwcGVuZCgqaW50ZXJ2YWwpOwotICAgICAg
ICAgICAgICAgIGludGVydmFsID0gJnZbaV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoaW50ZXJ2YWwpCi0gICAgICAgICAgICBydi5hcHBlbmQoKmludGVydmFsKTsK
LSAgICB9Ci19Ci0KLXZvaWQgaW50ZXJzZWN0U2hhcGVJbnRlcnZhbHMoY29uc3QgVmVjdG9yPFNo
YXBlSW50ZXJ2YWw+JiB2MSwgY29uc3QgVmVjdG9yPFNoYXBlSW50ZXJ2YWw+JiB2MiwgVmVjdG9y
PFNoYXBlSW50ZXJ2YWw+JiBydikKLXsKLSAgICBzaXplX3QgdjFTaXplID0gdjEuc2l6ZSgpOwot
ICAgIHNpemVfdCB2MlNpemUgPSB2Mi5zaXplKCk7Ci0KLSAgICBpZiAoIXYxU2l6ZSB8fCAhdjJT
aXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTaGFwZUludGVydmFsIGludGVydmFsOwotICAg
IGJvb2wgb3ZlcmxhcCA9IGZhbHNlOwotICAgIHNpemVfdCBpMSA9IDA7Ci0gICAgc2l6ZV90IGky
ID0gMDsKLQotICAgIHdoaWxlIChpMSA8IHYxU2l6ZSAmJiBpMiA8IHYyU2l6ZSkgewotICAgICAg
ICBTaGFwZUludGVydmFsIHYxMjsKLSAgICAgICAgaWYgKHYxW2kxXS5pbnRlcnNlY3QodjJbaTJd
LCB2MTIpKSB7Ci0gICAgICAgICAgICBpZiAoIW92ZXJsYXAgfHwgIXYxMi5pbnRlcnNlY3QoaW50
ZXJ2YWwsIGludGVydmFsKSkgewotICAgICAgICAgICAgICAgIGlmIChvdmVybGFwKQotICAgICAg
ICAgICAgICAgICAgICBydi5hcHBlbmQoaW50ZXJ2YWwpOwotICAgICAgICAgICAgICAgIGludGVy
dmFsID0gdjEyOwotICAgICAgICAgICAgICAgIG92ZXJsYXAgPSB0cnVlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKHYxW2kxXS54MiA8IHYyW2kyXS54MikKLSAgICAgICAgICAgICAg
ICBpMSsrOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGkyKys7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAob3ZlcmxhcCkKLSAgICAgICAgICAgICAgICBydi5h
cHBlbmQoaW50ZXJ2YWwpOwotICAgICAgICAgICAgb3ZlcmxhcCA9IGZhbHNlOwotICAgICAgICAg
ICAgaWYgKHYxW2kxXS54MSA8IHYyW2kyXS54MSkKLSAgICAgICAgICAgICAgICBpMSsrOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGkyKys7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAob3ZlcmxhcCkKLSAgICAgICAgcnYuYXBwZW5kKGludGVydmFsKTsKLX0KLQotdm9p
ZCBzdWJ0cmFjdFNoYXBlSW50ZXJ2YWxzKGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYgdjEs
IGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYgdjIsIFZlY3RvcjxTaGFwZUludGVydmFsPiYg
cnYpCi17Ci0gICAgc2l6ZV90IHYxU2l6ZSA9IHYxLnNpemUoKTsKLSAgICBzaXplX3QgdjJTaXpl
ID0gdjIuc2l6ZSgpOwotCi0gICAgaWYgKCF2MVNpemUpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmICghdjJTaXplKQotICAgICAgICBydi5hcHBlbmRSYW5nZSh2MS5iZWdpbigpLCB2MS5lbmQo
KSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNpemVfdCBpMSA9IDAsIGkyID0gMDsKLSAgICAgICAg
cnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOwotCi0gICAgICAgIHdoaWxlIChp
MSA8IHJ2LnNpemUoKSAmJiBpMiA8IHYyU2l6ZSkgewotICAgICAgICAgICAgU2hhcGVJbnRlcnZh
bCYgaW50ZXJ2YWwxID0gcnZbaTFdOwotICAgICAgICAgICAgY29uc3QgU2hhcGVJbnRlcnZhbCYg
aW50ZXJ2YWwyID0gdjJbaTJdOwotCi0gICAgICAgICAgICBpZiAoaW50ZXJ2YWwyLngxIDw9IGlu
dGVydmFsMS54MSAmJiBpbnRlcnZhbDIueDIgPj0gaW50ZXJ2YWwxLngyKQotICAgICAgICAgICAg
ICAgIHJ2LnJlbW92ZShpMSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDIgPCBp
bnRlcnZhbDEueDEpCi0gICAgICAgICAgICAgICAgaTIgKz0gMTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGludGVydmFsMi54MSA+IGludGVydmFsMS54MikKLSAgICAgICAgICAgICAgICBpMSArPSAx
OwotICAgICAgICAgICAgZWxzZSBpZiAoaW50ZXJ2YWwyLngxID4gaW50ZXJ2YWwxLngxICYmIGlu
dGVydmFsMi54MiA8IGludGVydmFsMS54MikgewotICAgICAgICAgICAgICAgIHJ2Lmluc2VydChp
MSwgU2hhcGVJbnRlcnZhbChpbnRlcnZhbDEueDEsIGludGVydmFsMi54MSkpOwotICAgICAgICAg
ICAgICAgIGludGVydmFsMS54MSA9IGludGVydmFsMi54MjsKLSAgICAgICAgICAgICAgICBpMiAr
PSAxOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnZhbDIueDEgPD0gaW50ZXJ2YWwxLngx
KSB7Ci0gICAgICAgICAgICAgICAgaW50ZXJ2YWwxLngxID0gaW50ZXJ2YWwyLngyOwotICAgICAg
ICAgICAgICAgIGkyICs9IDE7Ci0gICAgICAgICAgICB9IGVsc2UgIHsgLy8gKGludGVydmFsMi54
MiA+PSBpbnRlcnZhbDEueDIpCi0gICAgICAgICAgICAgICAgaW50ZXJ2YWwxLngyID0gaW50ZXJ2
YWwyLngxOwotICAgICAgICAgICAgICAgIGkxICs9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmgKaW5kZXggMGZmMTRkOC4uNDIwYTJk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVy
dmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFs
LmgKQEAgLTM0LDI0ICszNCwxODUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3Qg
U2hhcGVJbnRlcnZhbCB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFNoYXBlSW50ZXJ2
YWwgewogcHVibGljOgotICAgIGZsb2F0IHgxOwotICAgIGZsb2F0IHgyOworICAgIFNoYXBlSW50
ZXJ2YWwoVCB4MSA9IDAsIFQgeDIgPSAwKQorICAgICAgICA6IG1feDEoeDEpCisgICAgICAgICwg
bV94Mih4MikKKyAgICB7CisgICAgICAgIEFTU0VSVCh4MiA+PSB4MSk7CisgICAgfQorCisgICAg
VCB4MSgpIGNvbnN0IHsgcmV0dXJuIG1feDE7IH0KKyAgICBUIHgyKCkgY29uc3QgeyByZXR1cm4g
bV94MjsgfQorCisgICAgdm9pZCBzZXRYMShUIHgxKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
eDIgPj0geDEpOworICAgICAgICBtX3gxID0geDE7CisgICAgfQogCi0gICAgU2hhcGVJbnRlcnZh
bChmbG9hdCB4MSA9IDAsIGZsb2F0IHgyID0gMCkKLSAgICAgICAgOiB4MSh4MSkKLSAgICAgICAg
LCB4Mih4MikKKyAgICB2b2lkIHNldFgyKFQgeDIpCiAgICAgeworICAgICAgICBBU1NFUlQoeDIg
Pj0gbV94MSk7CisgICAgICAgIG1feDIgPSB4MjsKICAgICB9CiAKLSAgICBib29sIGludGVyc2Vj
dChjb25zdCBTaGFwZUludGVydmFsJiwgU2hhcGVJbnRlcnZhbCYpIGNvbnN0OworICAgIHZvaWQg
c2V0KFQgeDEsIFQgeDIpCisgICAgeworICAgICAgICBBU1NFUlQoeDIgPj0geDEpOworICAgICAg
ICBtX3gxID0geDE7CisgICAgICAgIG1feDIgPSB4MjsKKyAgICB9CisKKyAgICBib29sIG92ZXJs
YXBzKGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIGludGVydmFsKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHgyKCkgPj0gaW50ZXJ2YWwueDEoKSAmJiB4MSgpIDw9IGludGVydmFsLngyKCk7
CisgICAgfQorCisgICAgYm9vbCBpbnRlcnNlY3QoY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgaSwg
U2hhcGVJbnRlcnZhbDxUPiYgcnYpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoeDIoKSA8IGku
eDEoKSB8fCB4MSgpID4gaS54MigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBydi5zZXQoc3RkOjptYXgoeDEoKSwgaS54MSgpKSwgc3RkOjptaW4oeDIoKSwgaS54MigpKSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHR5cGVkZWYgVmVjdG9yPFNoYXBl
SW50ZXJ2YWw8VD4gPiBTaGFwZUludGVydmFsczsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFNoYXBl
SW50ZXJ2YWxzOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKKyAgICB0eXBlZGVmIHR5
cGVuYW1lIFNoYXBlSW50ZXJ2YWxzOjppdGVyYXRvciBpdGVyYXRvcjsKKworICAgIHN0YXRpYyB2
b2lkIHNvcnRWZWN0b3IoU2hhcGVJbnRlcnZhbHMmIGludGVydmFscykKKyAgICB7CisgICAgICAg
IHN0ZDo6c29ydChpbnRlcnZhbHMuYmVnaW4oKSwgaW50ZXJ2YWxzLmVuZCgpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCB1bml0ZVZlY3RvcnMoY29uc3QgU2hhcGVJbnRlcnZhbHMmIHYxLCBj
b25zdCBTaGFwZUludGVydmFscyYgdjIsIFNoYXBlSW50ZXJ2YWxzJiBydikKKyAgICB7CisgICAg
ICAgIGlmICghdjEuc2l6ZSgpKQorICAgICAgICAgICAgcnYuYXBwZW5kUmFuZ2UodjIuYmVnaW4o
KSwgdjIuZW5kKCkpOworICAgICAgICBlbHNlIGlmICghdjIuc2l6ZSgpKQorICAgICAgICAgICAg
cnYuYXBwZW5kUmFuZ2UodjEuYmVnaW4oKSwgdjEuZW5kKCkpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIFNoYXBlSW50ZXJ2YWxzIHYodjEuc2l6ZSgpICsgdjIuc2l6ZSgpKTsKKyAgICAg
ICAgICAgIFNoYXBlSW50ZXJ2YWw8VD4qIGludGVydmFsID0gMDsKKworICAgICAgICAgICAgc3Rk
OjptZXJnZSh2MS5iZWdpbigpLCB2MS5lbmQoKSwgdjIuYmVnaW4oKSwgdjIuZW5kKCksIHYuYmVn
aW4oKSk7CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdi5zaXplKCk7IGkr
KykgeworICAgICAgICAgICAgICAgIGlmICghaW50ZXJ2YWwpCisgICAgICAgICAgICAgICAgICAg
IGludGVydmFsID0gJnZbaV07CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodltpXS54MSgpID49
IGludGVydmFsLT54MSgpICYmIHZbaV0ueDEoKSA8PSBpbnRlcnZhbC0+eDIoKSkgLy8gRklYTUU6
IDFzdCA8PSB0ZXN0IG5vdCBuZWVkZWQ/CisgICAgICAgICAgICAgICAgICAgIGludGVydmFsLT5z
ZXQoaW50ZXJ2YWwtPngxKCksIHN0ZDo6bWF4PFQ+KGludGVydmFsLT54MigpLCB2W2ldLngyKCkp
KTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5k
KCppbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgICAgIGludGVydmFsID0gJnZbaV07CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaW50ZXJ2YWwp
CisgICAgICAgICAgICAgICAgcnYuYXBwZW5kKCppbnRlcnZhbCk7CisgICAgICAgICAgICB9Cisg
ICAgfQorCisgICAgc3RhdGljIHZvaWQgaW50ZXJzZWN0VmVjdG9ycyhjb25zdCBTaGFwZUludGVy
dmFscyYgdjEsIGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiB2MiwgU2hhcGVJbnRlcnZhbHMmIHJ2KQor
ICAgIHsKKyAgICAgICAgc2l6ZV90IHYxU2l6ZSA9IHYxLnNpemUoKTsKKyAgICAgICAgc2l6ZV90
IHYyU2l6ZSA9IHYyLnNpemUoKTsKKworICAgICAgICBpZiAoIXYxU2l6ZSB8fCAhdjJTaXplKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFNoYXBlSW50ZXJ2YWw8VD4gaW50ZXJ2YWw7
CisgICAgICAgIGJvb2wgb3ZlcmxhcCA9IGZhbHNlOworICAgICAgICBzaXplX3QgaTEgPSAwOwor
ICAgICAgICBzaXplX3QgaTIgPSAwOworCisgICAgICAgIHdoaWxlIChpMSA8IHYxU2l6ZSAmJiBp
MiA8IHYyU2l6ZSkgeworICAgICAgICAgICAgU2hhcGVJbnRlcnZhbDxUPiB2MTI7CisgICAgICAg
ICAgICBpZiAodjFbaTFdLmludGVyc2VjdCh2MltpMl0sIHYxMikpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIW92ZXJsYXAgfHwgIXYxMi5pbnRlcnNlY3QoaW50ZXJ2YWwsIGludGVydmFsKSkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAob3ZlcmxhcCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJ2LmFwcGVuZChpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgICAgIGludGVydmFsID0gdjEy
OworICAgICAgICAgICAgICAgICAgICBvdmVybGFwID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKHYxW2kxXS54MigpIDwgdjJbaTJdLngyKCkpCisgICAgICAg
ICAgICAgICAgICAgIGkxKys7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBpMisrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAob3Zl
cmxhcCkKKyAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKGludGVydmFsKTsKKyAgICAgICAg
ICAgICAgICBvdmVybGFwID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKHYxW2kxXS54MSgp
IDwgdjJbaTJdLngxKCkpCisgICAgICAgICAgICAgICAgICAgIGkxKys7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpMisrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgaWYgKG92ZXJsYXApCisgICAgICAgICAgICBydi5hcHBlbmQoaW50ZXJ2
YWwpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHN1YnRyYWN0VmVjdG9ycyhjb25zdCBTaGFw
ZUludGVydmFscyYgdjEsIGNvbnN0IFNoYXBlSW50ZXJ2YWxzJiB2MiwgU2hhcGVJbnRlcnZhbHMm
IHJ2KQorICAgIHsKKyAgICAgICAgc2l6ZV90IHYxU2l6ZSA9IHYxLnNpemUoKTsKKyAgICAgICAg
c2l6ZV90IHYyU2l6ZSA9IHYyLnNpemUoKTsKKworICAgICAgICBpZiAoIXYxU2l6ZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXYyU2l6ZSkKKyAgICAgICAgICAgIHJ2LmFw
cGVuZFJhbmdlKHYxLmJlZ2luKCksIHYxLmVuZCgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBzaXplX3QgaTEgPSAwLCBpMiA9IDA7CisgICAgICAgICAgICBydi5hcHBlbmRSYW5nZSh2
MS5iZWdpbigpLCB2MS5lbmQoKSk7CisKKyAgICAgICAgICAgIHdoaWxlIChpMSA8IHJ2LnNpemUo
KSAmJiBpMiA8IHYyU2l6ZSkgeworICAgICAgICAgICAgICAgIFNoYXBlSW50ZXJ2YWw8VD4mIGlu
dGVydmFsMSA9IHJ2W2kxXTsKKyAgICAgICAgICAgICAgICBjb25zdCBTaGFwZUludGVydmFsPFQ+
JiBpbnRlcnZhbDIgPSB2MltpMl07CisKKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJ2YWwyLngx
KCkgPD0gaW50ZXJ2YWwxLngxKCkgJiYgaW50ZXJ2YWwyLngyKCkgPj0gaW50ZXJ2YWwxLngyKCkp
CisgICAgICAgICAgICAgICAgICAgIHJ2LnJlbW92ZShpMSk7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoaW50ZXJ2YWwyLngyKCkgPCBpbnRlcnZhbDEueDEoKSkKKyAgICAgICAgICAgICAgICAg
ICAgaTIgKz0gMTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChpbnRlcnZhbDIueDEoKSA+IGlu
dGVydmFsMS54MigpKQorICAgICAgICAgICAgICAgICAgICBpMSArPSAxOworICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGludGVydmFsMi54MSgpID4gaW50ZXJ2YWwxLngxKCkgJiYgaW50ZXJ2YWwy
LngyKCkgPCBpbnRlcnZhbDEueDIoKSkgeworICAgICAgICAgICAgICAgICAgICBydi5pbnNlcnQo
aTEsIFNoYXBlSW50ZXJ2YWwoaW50ZXJ2YWwxLngxKCksIGludGVydmFsMi54MSgpKSk7CisgICAg
ICAgICAgICAgICAgICAgIGludGVydmFsMS5zZXQoaW50ZXJ2YWwyLngyKCksIGludGVydmFsMS54
MigpKTsKKyAgICAgICAgICAgICAgICAgICAgaTIgKz0gMTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGludGVydmFsMi54MSgpIDw9IGludGVydmFsMS54MSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGludGVydmFsMS5zZXQoaW50ZXJ2YWwyLngyKCksIGludGVydmFsMS54MigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaTIgKz0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgIHsgLy8g
KGludGVydmFsMi54MigpID49IGludGVydmFsMS54MigpKQorICAgICAgICAgICAgICAgICAgICBp
bnRlcnZhbDEuc2V0KGludGVydmFsMS54MSgpLCBpbnRlcnZhbDIueDEoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGkxICs9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlSW50ZXJ2YWw8
VD4mIG90aGVyKSBjb25zdCB7IHJldHVybiB4MSgpID09IG90aGVyLngxKCkgJiYgeDIoKSA9PSBv
dGhlci54MigpOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4m
IG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KKyAgICBib29sIG9w
ZXJhdG9yPCAoY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHgx
KCkgPCBvdGhlci54MSgpOyB9CisgICAgYm9vbCBvcGVyYXRvcj4gKGNvbnN0IFNoYXBlSW50ZXJ2
YWw8VD4mIG90aGVyKSBjb25zdCB7IHJldHVybiBvcGVyYXRvcjwgKG90aGVyLCAqdGhpcyk7IH0K
KyAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICFvcGVyYXRvcj4gKG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I+PShjb25z
dCBTaGFwZUludGVydmFsPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPCAob3Ro
ZXIpOyB9CisKK3ByaXZhdGU6CisgICAgVCBtX3gxOworICAgIFQgbV94MjsKIH07CiAKLXZvaWQg
c29ydFNoYXBlSW50ZXJ2YWxzKFZlY3RvcjxTaGFwZUludGVydmFsPiYpOwotdm9pZCBtZXJnZVNo
YXBlSW50ZXJ2YWxzKGNvbnN0IFZlY3RvcjxTaGFwZUludGVydmFsPiYsIGNvbnN0IFZlY3RvcjxT
aGFwZUludGVydmFsPiYsIFZlY3RvcjxTaGFwZUludGVydmFsPiYpOwotdm9pZCBpbnRlcnNlY3RT
aGFwZUludGVydmFscyhjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mLCBjb25zdCBWZWN0b3I8
U2hhcGVJbnRlcnZhbD4mLCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mKTsKLXZvaWQgc3VidHJhY3RT
aGFwZUludGVydmFscyhjb25zdCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mLCBjb25zdCBWZWN0b3I8
U2hhcGVJbnRlcnZhbD4mLCBWZWN0b3I8U2hhcGVJbnRlcnZhbD4mKTsKK3R5cGVkZWYgU2hhcGVJ
bnRlcnZhbDxpbnQ+IEludFNoYXBlSW50ZXJ2YWw7Cit0eXBlZGVmIFNoYXBlSW50ZXJ2YWw8Zmxv
YXQ+IEZsb2F0U2hhcGVJbnRlcnZhbDsKKwordHlwZWRlZiBWZWN0b3I8SW50U2hhcGVJbnRlcnZh
bD4gSW50U2hhcGVJbnRlcnZhbHM7Cit0eXBlZGVmIFZlY3RvcjxGbG9hdFNoYXBlSW50ZXJ2YWw+
IEZsb2F0U2hhcGVJbnRlcnZhbHM7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>