<?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>240259</bug_id>
          
          <creation_ts>2022-05-09 14:48:55 -0700</creation_ts>
          <short_desc>Implement contain flag for ray() in offset path</short_desc>
          <delta_ts>2022-05-19 18:23:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>233344</dependson>
          <blocked>203847</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikos Mouchtaris">nmouchtaris</reporter>
          <assigned_to name="Nikos Mouchtaris">nmouchtaris</assigned_to>
          <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1867786</commentid>
    <comment_count>0</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-05-09 14:48:55 -0700</bug_when>
    <thetext>Support contain flag for ray() in offset path</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867816</commentid>
    <comment_count>1</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-05-09 18:22:55 -0700</bug_when>
    <thetext>Contain implemented here: https://github.com/ewilligers/petrogale-purpureicollis/blob/20b7403d85d664eb943232e2a34bc95b6f4a8b62/ray.py. Need to understand if it is ok to adapt this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868608</commentid>
    <comment_count>2</comment_count>
      <attachid>459267</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-05-12 18:11:43 -0700</bug_when>
    <thetext>Created attachment 459267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869436</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-16 14:49:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/93374029&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869850</commentid>
    <comment_count>4</comment_count>
      <attachid>459267</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-17 16:22:50 -0700</bug_when>
    <thetext>Comment on attachment 459267
Patch

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

&gt; Source/WebCore/ChangeLog:23
&gt; +        Implement contain flag for ray(). Contains purpose is to have the entire box
&gt; +        being animated be contained within the path. &quot;Contained within the path&quot; is defined
&gt; +        as having the box remain within a circle with a radius of the path length and positioned at the offset
&gt; +        anchor. The way this problem is tackled is based on the approach here: 
&gt; +        https://github.com/ewilligers/petrogale-purpureicollis/blob/20b7403d85d664eb943232e2a34bc95b6f4a8b62/ray.py.
&gt; +        The way this solution works is that you construct a coordinate system with the origin being the offset anchor.
&gt; +        You then calculate the position of each vertex of the box in this coordinate system. Next, rotate the vertices based
&gt; +        on the angle&apos;s difference from the x axis. We rotate based on the x-axis as we will translate the box along the 
&gt; +        x axis (rather than in the direction of the angle of the ray) as this simplifies the calculation. Next, using the
&gt; +        circle equation (x^2 + y^2 = r^2), we want to find an offset such that (x + offset)^2 + y^2 &lt;= r^2, as this will
&gt; +        result in all points being contained in the circle. Solving for this equation, we get the upper and lower bounds 
&gt; +        of such an offset for each vertex: -x - sqrt(r^2 - y^2) &lt;= offset &lt;= -x + sqrt(r^2 - y^2). Finally, we find the 
&gt; +        largest lower bound and smallest upper bound, and choose the larger of the two values to get the clamped offset.
&gt; +        This currently doesn&apos;t take into account if it is not possible to fit the box within the path, as this will 
&gt; +        be completed in a separate patch. Currently test 4 is failing due to rounding error (might want to look into fixing/
&gt; +        deleting this test), and test 5 is failing due to the part not implemented yet.

This needs breaking into paragraphs.

&gt; Source/WebCore/platform/graphics/GeometryUtilities.h:96
&gt; +Vector&lt;FloatPoint&gt; verticesForBox(const FloatRect&amp;, const FloatPoint);

The return value should be a FloatQuad (per maybe a std::array&lt;FloatPoint, 4&gt;. Vector&lt;&gt; implies variable size, and it never is.

&gt; Source/WebCore/rendering/PathOperation.cpp:87
&gt; +    Vector&lt;std::pair&lt;double, double&gt;&gt; bounds;

Vector&lt;..., 4&gt; for inline capacity. Or use a std::array&lt;&gt; and track the early exit some other way.

&gt; Source/WebCore/rendering/PathOperation.cpp:125
&gt; +    double length = lengthForPath();

lengthForPath returns a float</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870550</commentid>
    <comment_count>5</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2022-05-19 15:31:57 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/806</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870588</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-19 18:23:22 -0700</bug_when>
    <thetext>Committed r294520 (250776@main): &lt;https://commits.webkit.org/250776@main&gt;

Reviewed commits have been landed. Closing PR #806 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459267</attachid>
            <date>2022-05-12 18:11:43 -0700</date>
            <delta_ts>2022-05-17 16:22:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240259-20220512181142.patch</filename>
            <type>text/plain</type>
            <size>15016</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjk0MDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFkMGI0ODIzMTc4NTM0
OTBiYWQyY2RhNmYxZDM5ZmI5YmVjMDFmZC4uNjhkZWVkZjNlOGFkZmY5Y2ViYmMzOTM1YTU3MDRh
NTE5MDVjNzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTA1LTEyICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBv
cnQgY29udGFpbiBmbGFnIGZvciByYXkoKSBpbiBvZmZzZXQgcGF0aAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwMjU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGNvbnRhaW4gZmxhZyBm
b3IgcmF5KCkuIENvbnRhaW5zIHB1cnBvc2UgaXMgdG8gaGF2ZSB0aGUgZW50aXJlIGJveAorICAg
ICAgICBiZWluZyBhbmltYXRlZCBiZSBjb250YWluZWQgd2l0aGluIHRoZSBwYXRoLiAiQ29udGFp
bmVkIHdpdGhpbiB0aGUgcGF0aCIgaXMgZGVmaW5lZAorICAgICAgICBhcyBoYXZpbmcgdGhlIGJv
eCByZW1haW4gd2l0aGluIGEgY2lyY2xlIHdpdGggYSByYWRpdXMgb2YgdGhlIHBhdGggbGVuZ3Ro
IGFuZCBwb3NpdGlvbmVkIGF0IHRoZSBvZmZzZXQKKyAgICAgICAgYW5jaG9yLiBUaGUgd2F5IHRo
aXMgcHJvYmxlbSBpcyB0YWNrbGVkIGlzIGJhc2VkIG9uIHRoZSBhcHByb2FjaCBoZXJlOiAKKyAg
ICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2V3aWxsaWdlcnMvcGV0cm9nYWxlLXB1cnB1cmVpY29s
bGlzL2Jsb2IvMjBiNzQwM2Q4NWQ2NjRlYjk0MzIzMmUyYTM0YmM5NWI2ZjRhOGI2Mi9yYXkucHku
CisgICAgICAgIFRoZSB3YXkgdGhpcyBzb2x1dGlvbiB3b3JrcyBpcyB0aGF0IHlvdSBjb25zdHJ1
Y3QgYSBjb29yZGluYXRlIHN5c3RlbSB3aXRoIHRoZSBvcmlnaW4gYmVpbmcgdGhlIG9mZnNldCBh
bmNob3IuCisgICAgICAgIFlvdSB0aGVuIGNhbGN1bGF0ZSB0aGUgcG9zaXRpb24gb2YgZWFjaCB2
ZXJ0ZXggb2YgdGhlIGJveCBpbiB0aGlzIGNvb3JkaW5hdGUgc3lzdGVtLiBOZXh0LCByb3RhdGUg
dGhlIHZlcnRpY2VzIGJhc2VkCisgICAgICAgIG9uIHRoZSBhbmdsZSdzIGRpZmZlcmVuY2UgZnJv
bSB0aGUgeCBheGlzLiBXZSByb3RhdGUgYmFzZWQgb24gdGhlIHgtYXhpcyBhcyB3ZSB3aWxsIHRy
YW5zbGF0ZSB0aGUgYm94IGFsb25nIHRoZSAKKyAgICAgICAgeCBheGlzIChyYXRoZXIgdGhhbiBp
biB0aGUgZGlyZWN0aW9uIG9mIHRoZSBhbmdsZSBvZiB0aGUgcmF5KSBhcyB0aGlzIHNpbXBsaWZp
ZXMgdGhlIGNhbGN1bGF0aW9uLiBOZXh0LCB1c2luZyB0aGUKKyAgICAgICAgY2lyY2xlIGVxdWF0
aW9uICh4XjIgKyB5XjIgPSByXjIpLCB3ZSB3YW50IHRvIGZpbmQgYW4gb2Zmc2V0IHN1Y2ggdGhh
dCAoeCArIG9mZnNldCleMiArIHleMiA8PSByXjIsIGFzIHRoaXMgd2lsbAorICAgICAgICByZXN1
bHQgaW4gYWxsIHBvaW50cyBiZWluZyBjb250YWluZWQgaW4gdGhlIGNpcmNsZS4gU29sdmluZyBm
b3IgdGhpcyBlcXVhdGlvbiwgd2UgZ2V0IHRoZSB1cHBlciBhbmQgbG93ZXIgYm91bmRzIAorICAg
ICAgICBvZiBzdWNoIGFuIG9mZnNldCBmb3IgZWFjaCB2ZXJ0ZXg6IC14IC0gc3FydChyXjIgLSB5
XjIpIDw9IG9mZnNldCA8PSAteCArIHNxcnQocl4yIC0geV4yKS4gRmluYWxseSwgd2UgZmluZCB0
aGUgCisgICAgICAgIGxhcmdlc3QgbG93ZXIgYm91bmQgYW5kIHNtYWxsZXN0IHVwcGVyIGJvdW5k
LCBhbmQgY2hvb3NlIHRoZSBsYXJnZXIgb2YgdGhlIHR3byB2YWx1ZXMgdG8gZ2V0IHRoZSBjbGFt
cGVkIG9mZnNldC4KKyAgICAgICAgVGhpcyBjdXJyZW50bHkgZG9lc24ndCB0YWtlIGludG8gYWNj
b3VudCBpZiBpdCBpcyBub3QgcG9zc2libGUgdG8gZml0IHRoZSBib3ggd2l0aGluIHRoZSBwYXRo
LCBhcyB0aGlzIHdpbGwgCisgICAgICAgIGJlIGNvbXBsZXRlZCBpbiBhIHNlcGFyYXRlIHBhdGNo
LiBDdXJyZW50bHkgdGVzdCA0IGlzIGZhaWxpbmcgZHVlIHRvIHJvdW5kaW5nIGVycm9yIChtaWdo
dCB3YW50IHRvIGxvb2sgaW50byBmaXhpbmcvCisgICAgICAgIGRlbGV0aW5nIHRoaXMgdGVzdCks
IGFuZCB0ZXN0IDUgaXMgZmFpbGluZyBkdWUgdG8gdGhlIHBhcnQgbm90IGltcGxlbWVudGVkIHll
dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvUmVsYXRlZEFjdXRlQW5nbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6ZGlzdGFuY2VPZlBvaW50VG9TaWRlc09mUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjp2ZXJ0
aWNlc0ZvckJveCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRp
ZXMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUGF0aE9wZXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSYXlQYXRoT3BlcmF0aW9uOjpsZW5ndGhGb3JQYXRoIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJheVBhdGhPcGVyYXRpb246Omxlbmd0aEZvckNvbnRhaW5QYXRoIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJheVBhdGhPcGVyYXRpb246OnBhdGhGb3JSZWZlcmVuY2VSZWN0
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUGF0aE9wZXJhdGlvbi5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQ
YXRoRnJvbVBhdGhPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFw
cGx5TW90aW9uUGF0aFRyYW5zZm9ybSBjb25zdCk6CisKIDIwMjItMDUtMTAgIFRpbSBOZ3V5ZW4g
IDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggaW5lcnRuZXNzIG9mIHBzZXVkby1lbGVt
ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0
cnlVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0
cnlVdGlsaXRpZXMuY3BwCmluZGV4IDcxYzc0OGY4MDlhNjYwZTRlNThmNmIyMWZmZGI0M2JhNWUz
N2VmNjcuLjZkYWJjM2FlNmIyMjczMWIxMDIxNmI4YWEyOTM0MTI0ZGRmNmY2ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGll
cy5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBmbG9hdCB0b1Bvc2l0aXZlQW5nbGUoZmxvYXQgYW5n
bGUpCiB9CiAKIC8vIENvbXB1dGUgYWN1dGUgYW5nbGUgZnJvbSB2ZXJ0aWNhbCBheGlzCi1zdGF0
aWMgZmxvYXQgdG9SZWxhdGVkQWN1dGVBbmdsZShmbG9hdCBhbmdsZSkKK2Zsb2F0IHRvUmVsYXRl
ZEFjdXRlQW5nbGUoZmxvYXQgYW5nbGUpCiB7CiAgICAgYW5nbGUgPSB0b1Bvc2l0aXZlQW5nbGUo
YW5nbGUpOwogICAgIGlmIChhbmdsZSA8IDkwKQpAQCAtMjg3LDE2ICsyODcsMjQgQEAgc3RhdGlj
IGZsb2F0IHRvUmVsYXRlZEFjdXRlQW5nbGUoZmxvYXQgYW5nbGUpCiAgICAgcmV0dXJuIHN0ZDo6
YWJzKDM2MCAtIGFuZ2xlKTsKIH0KIAotUmVjdEVkZ2VzPGRvdWJsZT4gZGlzdGFuY2VPZlBvaW50
VG9TaWRlc09mUmVjdChjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24pCitSZWN0RWRnZXM8ZG91YmxlPiBkaXN0YW5jZU9mUG9pbnRUb1NpZGVz
T2ZSZWN0KGNvbnN0IEZsb2F0UmVjdCYgYm94LCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikK
IHsKICAgICAvLyBDb21wdXRlIGRpc3RhbmNlIHRvIGVhY2ggc2lkZSBvZiB0aGUgY29udGFpbmlu
ZyBib3gKICAgICBkb3VibGUgdG9wID0gc3RkOjphYnMocG9zaXRpb24ueSgpKTsKLSAgICBkb3Vi
bGUgYm90dG9tID0gc3RkOjphYnMocG9zaXRpb24ueSgpIC0gYm91bmRpbmdSZWN0LmhlaWdodCgp
KTsKKyAgICBkb3VibGUgYm90dG9tID0gc3RkOjphYnMocG9zaXRpb24ueSgpIC0gYm94LmhlaWdo
dCgpKTsKICAgICBkb3VibGUgbGVmdCA9IHN0ZDo6YWJzKHBvc2l0aW9uLngoKSk7Ci0gICAgZG91
YmxlIHJpZ2h0ID0gc3RkOjphYnMocG9zaXRpb24ueCgpIC0gYm91bmRpbmdSZWN0LndpZHRoKCkp
OworICAgIGRvdWJsZSByaWdodCA9IHN0ZDo6YWJzKHBvc2l0aW9uLngoKSAtIGJveC53aWR0aCgp
KTsKICAgICByZXR1cm4gUmVjdEVkZ2VzPGRvdWJsZT4odG9wLCByaWdodCwgYm90dG9tLCBsZWZ0
KTsKIH0KIAorVmVjdG9yPEZsb2F0UG9pbnQ+IHZlcnRpY2VzRm9yQm94KGNvbnN0IEZsb2F0UmVj
dCYgYm94LCBjb25zdCBGbG9hdFBvaW50IHBvc2l0aW9uKQoreworICAgIHJldHVybiB7IEZsb2F0
UG9pbnQoLXBvc2l0aW9uLngoKSwgLXBvc2l0aW9uLnkoKSksCisgICAgICAgIEZsb2F0UG9pbnQo
Ym94LndpZHRoKCkgLSBwb3NpdGlvbi54KCksIC1wb3NpdGlvbi55KCkpLAorICAgICAgICBGbG9h
dFBvaW50KGJveC53aWR0aCgpIC0gcG9zaXRpb24ueCgpLCBib3guaGVpZ2h0KCkgLSBwb3NpdGlv
bi55KCkpLAorICAgICAgICBGbG9hdFBvaW50KC1wb3NpdGlvbi54KCksIGJveC5oZWlnaHQoKSAt
IHBvc2l0aW9uLnkoKSkgfTsKK30KKwogZG91YmxlIGxlbmd0aE9mUmF5SW50ZXJzZWN0aW9uV2l0
aEJvdW5kaW5nQm94KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBzdGQ6OnBh
aXI8Y29uc3QgRmxvYXRQb2ludCYsIGZsb2F0PiByYXkpCiB7CiAgICAgYXV0byBsZW5ndGggPSBs
ZW5ndGhPZlBvaW50VG9TaWRlT2ZJbnRlcnNlY3Rpb24oYm91bmRpbmdSZWN0LCByYXkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVz
LmgKaW5kZXggMDBlNjg5YTgxZDIyOTc4ZDQxOGJiODYzM2FmZDQzODQ4Yjc0ODczZS4uYjVkMjE1
ZTllZDEyZDFjM2ZiOGEwNDNiNjM4MDVlYTFlZmM5ZmM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oCkBAIC0yOSw2ICsy
OSw4IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RmxvYXRRdWFkOwpAQCAtODgsNyArOTAsMTMgQEAgZmxvYXQgYW5nbGVPZlBvaW50VG9TaWRlT2ZJ
bnRlcnNlY3Rpb24oY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IHN0ZDoKIAog
Ly8gR2l2ZW4gYSBib3ggYW5kIGFuIG9mZnNldCBmcm9tIHRoZSB0b3AgbGVmdCBjb3JuZXIsIGNh
bGN1bGF0ZSB0aGUgZGlzdGFuY2Ugb2YgdGhlIHBvaW50IGZyb20gZWFjaCBzaWRlCiBSZWN0RWRn
ZXM8ZG91YmxlPiBkaXN0YW5jZU9mUG9pbnRUb1NpZGVzT2ZSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UG9pbnQmKTsKKworLy8gR2l2ZW4gYSBib3ggYW5kIGFuIG9mZnNldCBmcm9t
IHRoZSB0b3AgbGVmdCBjb3JuZXIsIGNvbnN0cnVjdCBhIGNvb3JkaW5hdGUgc3lzdGVtIHdpdGgg
dGhpcyBvZmZzZXQgYXMgdGhlIG9yaWdpbiwKKy8vIGFuZCByZXR1cm4gdGhlIHZlcnRpY2VzIG9m
IHRoZSBib3ggaW4gdGhpcyBjb29yZGluYXRlIHN5c3RlbQorVmVjdG9yPEZsb2F0UG9pbnQ+IHZl
cnRpY2VzRm9yQm94KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQpOworCiBmbG9h
dCB0b1Bvc2l0aXZlQW5nbGUoZmxvYXQgYW5nbGUpOworZmxvYXQgdG9SZWxhdGVkQWN1dGVBbmds
ZShmbG9hdCBhbmdsZSk7CiAKIHN0cnVjdCBSb3RhdGVkUmVjdCB7CiAgICAgRmxvYXRQb2ludCBj
ZW50ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGF0aE9wZXJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGF0aE9wZXJhdGlvbi5jcHAKaW5kZXgg
N2Q2ODlhMmU0MjY4ODNjYTQwMmZlNDFiN2FkZjdjNjdkMmZhZmE2Ny4uN2E0YTM5YTViOTkwM2Q4
ZjEwOGVlN2NmNjRhYzVhOTY3OTk0ZmYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1BhdGhPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Q
YXRoT3BlcmF0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCBjb25zdCBTVkdFbGVtZW50KiBSZWZl
cmVuY2VQYXRoT3BlcmF0aW9uOjplbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9lbGVtZW50
LmdldCgpOwogfQogCi1kb3VibGUgUmF5UGF0aE9wZXJhdGlvbjo6bGVuZ3RoRm9yUGF0aCgpIGNv
bnN0CitmbG9hdCBSYXlQYXRoT3BlcmF0aW9uOjpsZW5ndGhGb3JQYXRoKCkgY29uc3QKIHsKICAg
ICBhdXRvIGJvdW5kaW5nQm94ID0gbV9jb250YWluaW5nQmxvY2tCb3VuZGluZ1JlY3Q7CiAgICAg
YXV0byBkaXN0YW5jZXMgPSBkaXN0YW5jZU9mUG9pbnRUb1NpZGVzT2ZSZWN0KGJvdW5kaW5nQm94
LCBtX3Bvc2l0aW9uKTsKQEAgLTY5LDEzICs2OSw2MyBAQCBkb3VibGUgUmF5UGF0aE9wZXJhdGlv
bjo6bGVuZ3RoRm9yUGF0aCgpIGNvbnN0CiAgICAgfQogfQogCi1jb25zdCBQYXRoIFJheVBhdGhP
cGVyYXRpb246OnBhdGhGb3JSZWZlcmVuY2VSZWN0KCkgY29uc3QKK2RvdWJsZSBSYXlQYXRoT3Bl
cmF0aW9uOjpsZW5ndGhGb3JDb250YWluUGF0aChjb25zdCBGbG9hdFJlY3QmIGVsZW1lbnRSZWN0
LCBkb3VibGUgY29tcHV0ZWRQYXRoTGVuZ3RoLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3IsIGNv
bnN0IE9mZnNldFJvdGF0aW9uIHJvdGF0aW9uKSBjb25zdAoreworICAgIC8vIENvbnN0cnVjdCB2
ZXJ0aWNlcyBvZiBlbGVtZW50IGZvciBkZXRlcm1pbmluZyBpZiB0aGV5IGFyZSB3aXRoaW4gdGhl
IHBhdGggbGVuZ3RoCisgICAgLy8gQW5jaG9yIHBvaW50IGFzIG9yaWdpbgorICAgIFZlY3RvcjxG
bG9hdFBvaW50PiB2ZXJ0aWNlcyA9IHZlcnRpY2VzRm9yQm94KGVsZW1lbnRSZWN0LCBhbmNob3Ip
OworICAgIAorICAgIC8vIFJvdGF0ZSB2ZXJ0aWNlcyBkZXBlbmRpbmcgb24gb2Zmc2V0IHJvdGF0
ZSBvciBhbmdsZQorICAgIGlmICghcm90YXRpb24uaGFzQXV0bygpKSB7CisgICAgICAgIGF1dG8g
ZGVnID0gdG9SZWxhdGVkQWN1dGVBbmdsZSh0b1Bvc2l0aXZlQW5nbGUobV9hbmdsZSAtIHJvdGF0
aW9uLmFuZ2xlKCkpKTsKKyAgICAgICAgYXV0byBhbmdsZSA9IGRlZzJyYWQoZGVnKTsKKyAgICAg
ICAgc3RkOjpmb3JfZWFjaCh2ZXJ0aWNlcy5iZWdpbigpLCB2ZXJ0aWNlcy5lbmQoKSwgW2FuZ2xl
XSAoRmxvYXRQb2ludCYgcCkgeworICAgICAgICAgICAgcC5yb3RhdGUoYW5nbGUpOworICAgICAg
ICB9KTsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+
IGJvdW5kczsKKyAgICAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHAgOiB2ZXJ0aWNlcykgeworICAg
ICAgICAvLyBVc2UgZXF1YXRpb24gZm9yIGNpcmNsZSAob2Zmc2V0IGRpc3RhbmNlICsgeCleMiAr
IHleMiA8PSByXjIgdG8gZmluZCBvZmZzZXQgZGlzdGFuY2UgdGhhdCBzYXRpc2ZpZXMgZXF1YXRp
b24KKyAgICAgICAgLy8gSWYgbm8gc29sdXRpb24gZm9yIGFib3ZlIGVxdWF0aW9uLCBtdXN0IG1p
bmltYWxseSBpbmNyZWFzZSBpdCwgb3RoZXJ3aXNlIGNsYW1wIHN1Y2ggdGhhdAorICAgICAgICAv
LyBldmVyeSBwb2ludCBpcyB3aXRoaW4gcGF0aAorICAgICAgICBkb3VibGUgZGlzY3JpbWluYW50
ID0gY29tcHV0ZWRQYXRoTGVuZ3RoICogY29tcHV0ZWRQYXRoTGVuZ3RoIC0gcC55KCkgKiBwLnko
KTsKKyAgICAgICAgaWYgKGRpc2NyaW1pbmFudCA8IDApIHsKKyAgICAgICAgICAgIC8vIE5lZWQg
dG8gbWluaW1hbGx5IGluY3JlYXNlIHBhdGggbGVuZ3RoCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBib3VuZHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKC1wLngoKSAtIHN0
ZDo6c3FydChkaXNjcmltaW5hbnQpLCAtcC54KCkgKyBzdGQ6OnNxcnQoZGlzY3JpbWluYW50KSkp
OworICAgIH0KKyAgICAKKyAgICBpZiAodmVydGljZXMuc2l6ZSgpID09IGJvdW5kcy5zaXplKCkp
IHsKKyAgICAgICAgYXV0byBsb3dlckJvdW5kID0gc3RkOjptYXhfZWxlbWVudChib3VuZHMuYmVn
aW4oKSwgYm91bmRzLmVuZCgpLAorICAgICAgICAgICAgW10gKHN0ZDo6cGFpcjxkb3VibGUsIGRv
dWJsZT4gY29uc3QgbGhzLCBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IGNvbnN0IHJocykgewor
ICAgICAgICAgICAgcmV0dXJuIGxocy5maXJzdCA8IHJocy5maXJzdDsKKyAgICAgICAgfSktPmZp
cnN0OworICAgICAgICAKKyAgICAgICAgYXV0byB1cHBlckJvdW5kID0gc3RkOjptaW5fZWxlbWVu
dChib3VuZHMuYmVnaW4oKSwgYm91bmRzLmVuZCgpLAorICAgICAgICAgICAgW10gKHN0ZDo6cGFp
cjxkb3VibGUsIGRvdWJsZT4gY29uc3QgbGhzLCBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IGNv
bnN0IHJocykgeworICAgICAgICAgICAgcmV0dXJuIGxocy5zZWNvbmQgPCByaHMuc2Vjb25kOwor
ICAgICAgICB9KS0+c2Vjb25kOworICAgICAgICAKKyAgICAgICAgaWYgKGxvd2VyQm91bmQgPD0g
dXBwZXJCb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heChsb3dlckJvdW5kLCBzdGQ6
Om1pbih1cHBlckJvdW5kLCBjb21wdXRlZFBhdGhMZW5ndGgpKTsKKyAgICB9CisgICAgCisgICAg
Ly8gVE9ETzogSW1wbGVtZW50IG1pbmltYWxseSBpbmNyZWFzaW5nIHBhdGggbGVuZ3RoIHRvIGFs
bG93IGFsbCB2ZXJ0aWNlcyB0byBiZSB3aXRoaW4gc3VjaCBhIHBhdGggbGVuZ3RoCisgICAgcmV0
dXJuIGNvbXB1dGVkUGF0aExlbmd0aDsKK30KKworY29uc3QgUGF0aCBSYXlQYXRoT3BlcmF0aW9u
OjpwYXRoRm9yUmVmZXJlbmNlUmVjdChjb25zdCBGbG9hdFJlY3QmIGVsZW1lbnRSZWN0LCBjb25z
dCBGbG9hdFBvaW50JiBhbmNob3IsIGNvbnN0IE9mZnNldFJvdGF0aW9uIHJvdGF0aW9uKSBjb25z
dAogewogICAgIFBhdGggcGF0aDsKICAgICBpZiAobV9jb250YWluaW5nQmxvY2tCb3VuZGluZ1Jl
Y3QuaXNaZXJvKCkpCiAgICAgICAgIHJldHVybiBwYXRoOwotICAgIGF1dG8gbGVuZ3RoID0gbGVu
Z3RoRm9yUGF0aCgpOwotICAgIGF1dG8gcmFkaWFucyA9IGRlZzJyYWQodG9Qb3NpdGl2ZUFuZ2xl
KG1fYW5nbGUpIC0gOTApOworICAgIGRvdWJsZSBsZW5ndGggPSBsZW5ndGhGb3JQYXRoKCk7Cisg
ICAgaWYgKG1faXNDb250YWluaW5nKQorICAgICAgICBsZW5ndGggPSBsZW5ndGhGb3JDb250YWlu
UGF0aChlbGVtZW50UmVjdCwgbGVuZ3RoLCBhbmNob3IsIHJvdGF0aW9uKTsKKyAgICBhdXRvIHJh
ZGlhbnMgPSBkZWcycmFkKHRvUG9zaXRpdmVBbmdsZShtX2FuZ2xlKSAtIDkwLjApOwogICAgIGF1
dG8gcG9pbnQgPSBGbG9hdFBvaW50KHN0ZDo6Y29zKHJhZGlhbnMpICogbGVuZ3RoLCBzdGQ6OnNp
bihyYWRpYW5zKSAqIGxlbmd0aCk7CiAgICAgcGF0aC5hZGRMaW5lVG8ocG9pbnQpOwogICAgIHJl
dHVybiBwYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhdGhPcGVy
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYXRoT3BlcmF0aW9uLmgKaW5kZXgg
ODI5OThiNWUxNWRjZWI5ODdmOGI3MDczYjI2ZGVlZDczOWI3MGM0OS4uNDU2OWQ0ZjUwN2YzYTFh
NjcxNDJlZmFhOTE3OGExZDViOGI4Y2JkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1BhdGhPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGF0
aE9wZXJhdGlvbi5oCkBAIC0xOTYsOCArMTk2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
UmF5UGF0aE9wZXJhdGlvbjo6Y3JlYXRlKFdlYkNvcmU6OmJsZW5kKG1fYW5nbGUsIHRvLm1fYW5n
bGUsIGNvbnRleHQpLCBtX3NpemUsIG1faXNDb250YWluaW5nKTsKICAgICB9CiAKLSAgICBjb25z
dCBQYXRoIHBhdGhGb3JSZWZlcmVuY2VSZWN0KCkgY29uc3Q7Ci0gICAgZG91YmxlIGxlbmd0aEZv
clBhdGgoKSBjb25zdDsKKyAgICBjb25zdCBQYXRoIHBhdGhGb3JSZWZlcmVuY2VSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvciwgY29uc3Qg
T2Zmc2V0Um90YXRpb24gcm90YXRpb24pIGNvbnN0OworICAgIGZsb2F0IGxlbmd0aEZvclBhdGgo
KSBjb25zdDsKKyAgICBkb3VibGUgbGVuZ3RoRm9yQ29udGFpblBhdGgoY29uc3QgRmxvYXRSZWN0
JiBlbGVtZW50UmVjdCwgZG91YmxlIGNvbXB1dGVkUGF0aExlbmd0aCwgY29uc3QgRmxvYXRQb2lu
dCYgYW5jaG9yLCBjb25zdCBPZmZzZXRSb3RhdGlvbiByb3RhdGlvbikgY29uc3Q7CiAgICAgCiAg
ICAgdm9pZCBzZXRDb250YWluaW5nQmxvY2tSZWZlcmVuY2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
Ym91bmRpbmdSZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCmluZGV4IDAzNDMwMzExNjQxY2RlODFiZmNkZWVmNjJkNmEyYWE4ZTZl
Yjk0MGUuLjY3OTliMTNkZDk2ZWY0YmQzZDI5ZWUxYTkzOWYwMWQ4OGMzMTBkMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTU1Nyw3
ICsxNTU3LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlDU1NUcmFuc2Zvcm0oVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXQKICAgICAvLyAoaW1wbGVtZW50ZWQg
aW4gdW5hcHBseVRyYW5zZm9ybU9yaWdpbikKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF0
aD4gZ2V0UGF0aEZyb21QYXRoT3BlcmF0aW9uKGNvbnN0IEZsb2F0UmVjdCYgYm94LCBjb25zdCBQ
YXRoT3BlcmF0aW9uJiBvcGVyYXRpb24pCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXRoPiBnZXRQ
YXRoRnJvbVBhdGhPcGVyYXRpb24oY29uc3QgRmxvYXRSZWN0JiBib3gsIGNvbnN0IFBhdGhPcGVy
YXRpb24mIG9wZXJhdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yLCBPZmZzZXRSb3RhdGlv
biByb3RhdGlvbikKIHsKICAgICBzd2l0Y2ggKG9wZXJhdGlvbi50eXBlKCkpIHsKICAgICBjYXNl
IFBhdGhPcGVyYXRpb246OlNoYXBlOgpAQCAtMTU2OSw3ICsxNTY5LDcgQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UGF0aD4gZ2V0UGF0aEZyb21QYXRoT3BlcmF0aW9uKGNvbnN0IEZsb2F0UmVjdCYg
Ym94LCBjb25zdAogICAgIGNhc2UgUGF0aE9wZXJhdGlvbjo6Qm94OgogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8Qm94UGF0aE9wZXJhdGlvbj4ob3BlcmF0aW9uKS5nZXRQYXRoKCk7CiAgICAgY2Fz
ZSBQYXRoT3BlcmF0aW9uOjpSYXk6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxSYXlQYXRoT3Bl
cmF0aW9uPihvcGVyYXRpb24pLnBhdGhGb3JSZWZlcmVuY2VSZWN0KCk7CisgICAgICAgIHJldHVy
biBkb3duY2FzdDxSYXlQYXRoT3BlcmF0aW9uPihvcGVyYXRpb24pLnBhdGhGb3JSZWZlcmVuY2VS
ZWN0KGJveCwgYW5jaG9yLCByb3RhdGlvbik7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CkBAIC0xNTk4LDE4ICsxNTk4LDE5IEBAIHZvaWQgUmVuZGVyU3R5bGU6
OmFwcGx5TW90aW9uUGF0aFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
LCBjb25zCiAgICAgaWYgKCFvZmZzZXRQYXRoKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1
dG8gdHJhbnNmb3JtT3JpZ2luID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9y
aWdpblhZKCksIGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigpOwor
ICAgIGF1dG8gYW5jaG9yID0gdHJhbnNmb3JtT3JpZ2luOworICAgIGlmICghb2Zmc2V0QW5jaG9y
KCkueCgpLmlzQXV0bygpKQorICAgICAgICBhbmNob3IgPSBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9p
bnQob2Zmc2V0QW5jaG9yKCksIGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2Nh
dGlvbigpOworICAgIAogICAgIC8vIFNoaWZ0IGVsZW1lbnQgdG8gdGhlIHBvaW50IG9uIHBhdGgg
c3BlY2lmaWVkIGJ5IG9mZnNldC1wYXRoIGFuZCBvZmZzZXQtZGlzdGFuY2UuCi0gICAgYXV0byBw
YXRoID0gZ2V0UGF0aEZyb21QYXRoT3BlcmF0aW9uKGJvdW5kaW5nQm94LCAqb2Zmc2V0UGF0aCgp
KTsKKyAgICBhdXRvIHBhdGggPSBnZXRQYXRoRnJvbVBhdGhPcGVyYXRpb24oYm91bmRpbmdCb3gs
ICpvZmZzZXRQYXRoKCksIGFuY2hvciwgb2Zmc2V0Um90YXRlKCkpOwogICAgIGlmICghcGF0aCkK
ICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gdHJhdmVyc2FsU3RhdGUgPSBnZXRUcmF2ZXJzYWxT
dGF0ZUF0RGlzdGFuY2UoKnBhdGgsIG9mZnNldERpc3RhbmNlKCkpOwogICAgIHRyYW5zZm9ybS50
cmFuc2xhdGUodHJhdmVyc2FsU3RhdGUuY3VycmVudCgpLngoKSwgdHJhdmVyc2FsU3RhdGUuY3Vy
cmVudCgpLnkoKSk7CiAKICAgICAvLyBTaGlmdCBlbGVtZW50IHRvIHRoZSBhbmNob3Igc3BlY2lm
aWVkIGJ5IG9mZnNldC1hbmNob3IuCi0gICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBmbG9hdFBv
aW50Rm9yTGVuZ3RoUG9pbnQodHJhbnNmb3JtT3JpZ2luWFkoKSwgYm91bmRpbmdCb3guc2l6ZSgp
KSArIGJvdW5kaW5nQm94LmxvY2F0aW9uKCk7Ci0gICAgYXV0byBhbmNob3IgPSB0cmFuc2Zvcm1P
cmlnaW47Ci0gICAgaWYgKCFvZmZzZXRBbmNob3IoKS54KCkuaXNBdXRvKCkpCi0gICAgICAgIGFu
Y2hvciA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChvZmZzZXRBbmNob3IoKSwgYm91bmRpbmdC
b3guc2l6ZSgpKSArIGJvdW5kaW5nQm94LmxvY2F0aW9uKCk7CiAgICAgdHJhbnNmb3JtLnRyYW5z
bGF0ZSgtYW5jaG9yLngoKSwgLWFuY2hvci55KCkpOwogCiAgICAgYXV0byBzaGlmdFRvT3JpZ2lu
ID0gYW5jaG9yIC0gdHJhbnNmb3JtT3JpZ2luOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE4NzgyM2UwM2ExNzRkZGMyZWVh
NDMxNDNjZTJmZTYxOTdkYThjNjguLmMzZWI2NWRiNzVlNjU3ODQyZWExNTVkZWI3MzkxZGVlN2Uw
NzYyZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMi0wNS0xMiAgTmlrb2xhb3MgTW91Y2h0
YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGNvbnRhaW4g
ZmxhZyBmb3IgcmF5KCkgaW4gb2Zmc2V0IHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDI1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMi0wNS0xMCAg
VGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBpbmVydG5lc3Mgb2Yg
cHNldWRvLWVsZW1lbnRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmY2FkNTZlMGU1ODYzOTA3MTc1
YzEyOGRiOTU5OTg3MjFmOGFmNmE4Li4wYTEzNjI5YTFhMjJmMWM3YmM1YWQwOTk3NzFjNTQ0NDlj
NTBjMTVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUwNzgsOSArNTA3OCw2IEBAIHdlYmtpdC5v
cmcvYi8yMzMzNDAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29m
ZnNldC1hbmNob3ItdHJhCiB3ZWJraXQub3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcGF0aC1yYXktMDA3Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIAogIyBDU1MgbW90aW9uIHBhdGggbmVlZHMgdG8gaW1wbGVtZW50IGNvbnRh
aW4gZm9yIHJheTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDI1
OS4KLXdlYmtpdC5vcmcvYi8yMzMzNDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvbW90aW9uL29mZnNldC1wYXRoLXJheS1jb250YWluLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL21vdGlvbi9vZmZzZXQtcGF0aC1yYXktY29udGFpbi0wMDIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzMzM0NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9tb3Rpb24vb2Zmc2V0LXBhdGgtcmF5LWNvbnRhaW4tMDAzLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzMzNDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvbW90aW9uL29mZnNldC1wYXRoLXJheS1jb250YWluLTAwNC5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjMzMzQ0IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL21vdGlvbi9vZmZzZXQtcGF0aC1yYXktY29udGFpbi0wMDUuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogCg==
</data>
<flag name="review"
          id="488305"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="488468"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>