<?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>81076</bug_id>
          
          <creation_ts>2012-03-13 21:26:37 -0700</creation_ts>
          <short_desc>Region::intersects() and Region::contains() are slow due to copy overhead</short_desc>
          <delta_ts>2012-05-07 17:10:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>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>85260</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>andersca</cc>
    
    <cc>backer</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>578147</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-13 21:26:37 -0700</bug_when>
    <thetext>Region::intersects() and Region::contains() are slow due to copy overhead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578148</commentid>
    <comment_count>1</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-13 21:28:28 -0700</bug_when>
    <thetext>Testing contains() and intersects() requires a copy which ends up invoking a malloc on sufficiently complicated web pages, and slows down the test unnecessarily. These methods can be done by iterating over the Region::Shape values rather than making a copy of the entire region and manipulating it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578150</commentid>
    <comment_count>2</comment_count>
      <attachid>131782</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-13 21:33:11 -0700</bug_when>
    <thetext>Created attachment 131782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578280</commentid>
    <comment_count>3</comment_count>
      <attachid>131782</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-14 02:59:53 -0700</bug_when>
    <thetext>Comment on attachment 131782
Patch

Attachment 131782 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/11951139</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578384</commentid>
    <comment_count>4</comment_count>
      <attachid>131844</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-14 07:53:44 -0700</bug_when>
    <thetext>Created attachment 131844
Patch

Comment out ununsed parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613225</commentid>
    <comment_count>5</comment_count>
      <attachid>139579</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-30 21:59:22 -0700</bug_when>
    <thetext>Created attachment 139579
Patch

Rebased, and moved the Region::compareRegions function to Region::Shape::compareShapes, so that ShapeOpertions&apos; trySimpleOperation can make use of it - specifically, union can make a simple case when shape2.contains(shape1) by setting result to shape2.

Some motivation:

We have a test case with 500 composited divs that are constantly moved. The Region class becomes the most expensive thing in the stack in this case.

The test case: http://chromium.googlecode.com/issues/attachment?aid=1246870000000&amp;name=absolute-divs.html&amp;token=KOhmGHsHqUSprb_Hk0wlH3M9UJc%3A1335840366548
Comes from bug: http://code.google.com/p/chromium/issues/detail?id=124687

The Region::intersects() test becomes a hotspot in the code to compute the overlap map for composited layers, due to copying Region overhead.

The Region::unite() method becomes the most expensive piece, but we make it much faster by testing Region::contains() with an early-out, avoiding a copy.

I see an improvement of this test case in chromium from 28fps to 37fps (32% improvement) by using this CL along with the early-out in Region::unite().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615472</commentid>
    <comment_count>6</comment_count>
      <attachid>140060</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-03 12:02:00 -0700</bug_when>
    <thetext>Created attachment 140060
perf demo layout test

I&apos;m not sure if this is the best way to demonstrate perf impact, as the majority of time in a layout test is in setup/teardown, but here&apos;s some more data. This test is not as pathological as the rects moving randomly every frame test mentioned in the crbug, but it still demonstrates the change.

There&apos;s 3 numbers here, one on ToT, one with this CL to speed up intersects(), and the third with the followup cl #85260 to make unite() check contains().

This test tries to stress the composited layer overlap code, as it makes use of a Region to decide if a layer overlaps composited layers. I ran the test with --repeat-each=100.

ToT: 57.47s
#81076: 56.79s = 1.2% improvement
#85260: 54.97s = 4.4% improvement

Actual numbers:

% time drt --no-new-test-results compositing/layer-creation/overlap-many-children.html --repeat-each=100
All 100 tests ran as expected.                      
real	0m47.069s
user	0m57.470s
sys	0m1.640s
% time drt --no-new-test-results compositing/layer-creation/overlap-many-children.html --repeat-each=100
All 100 tests ran as expected.                      
real	0m46.332s
user	0m56.790s
sys	0m1.620s
% time drt --no-new-test-results compositing/layer-creation/overlap-many-children.html --repeat-each=100
All 100 tests ran as expected.                      
real	0m44.203s
user	0m54.970s
sys	0m1.680s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618025</commentid>
    <comment_count>7</comment_count>
      <attachid>140607</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-07 15:39:56 -0700</bug_when>
    <thetext>Created attachment 140607
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618127</commentid>
    <comment_count>8</comment_count>
      <attachid>140607</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-07 17:10:52 -0700</bug_when>
    <thetext>Comment on attachment 140607
Patch for landing

Clearing flags on attachment: 140607

Committed r116377: &lt;http://trac.webkit.org/changeset/116377&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618128</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-07 17:10:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131782</attachid>
            <date>2012-03-13 21:33:11 -0700</date>
            <delta_ts>2012-03-14 07:53:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81076-20120314003309.patch</filename>
            <type>text/plain</type>
            <size>16600</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAyYTRiNWMyN2FhNWRl
MzM5YjFhYWI1NTNiYzkwZWI5YTYwOTIwNi4uZjc3NzYzYjFmZjM5NjJiYmZjYzQxMzBmNjAzNzQx
NmIxZmNmOTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQwIEBACiAyMDEyLTAzLTEzICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFJlZ2lvbjo6aW50ZXJz
ZWN0cygpIGFuZCBSZWdpb246OmNvbnRhaW5zKCkgYXJlIHNsb3cgZHVlIHRvIGNvcHkgb3Zlcmhl
YWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDc2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGlu
ZyBjb250YWlucygpIGFuZCBpbnRlcnNlY3RzKCkgcmVxdWlyZXMgYSBjb3B5IHdoaWNoIGVuZHMg
dXAKKyAgICAgICAgaW52b2tpbmcgYSBtYWxsb2Mgb24gc3VmZmljaWVudGx5IGNvbXBsaWNhdGVk
IHdlYiBwYWdlcywgYW5kIHNsb3dzIGRvd24KKyAgICAgICAgdGhlIHRlc3QgdW5uZWNlc3Nhcmls
eS4gVGhlc2UgbWV0aG9kcyBjYW4gYmUgZG9uZSBieSBpdGVyYXRpbmcgb3ZlciB0aGUKKyAgICAg
ICAgUmVnaW9uOjpTaGFwZSB2YWx1ZXMgcmF0aGVyIHRoYW4gbWFraW5nIGEgY29weSBvZiB0aGUg
ZW50aXJlIHJlZ2lvbiBhbmQKKyAgICAgICAgbWFuaXB1bGF0aW5nIGl0LgorCisgICAgICAgIFRo
aXMgdXNlcyBSZWdpb246OmNvbXBhcmVSZWdpb25zKCkgdG8gd2FsayB0aGUgcXVlcnkgcmVnaW9u
cyBhbmQgY29tcHV0ZQorICAgICAgICB0aGUgcmVzdWx0IG9mIHRoZSBpbnRlcnNlY3RzIG9yIGNv
bnRhaW5zIHRlc3RzIHdpdGhvdXQgbWFraW5nIGEgY29weS4KKworICAgICAgICBVbml0IHRlc3Q6
IFJlZ2lvblRlc3QuaW50ZXJzZWN0c1JlZ2lvbgorICAgICAgICAgICAgICAgICAgIFJlZ2lvblRl
c3QuY29udGFpbnNSZWdpb24KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5j
cHA6CisgICAgICAgIChDb21wYXJlQ29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFy
ZUNvbnRhaW5zOjphT3V0c2lkZUIpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFyZUNvbnRhaW5z
OjpiT3V0c2lkZUEpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFyZUNvbnRhaW5zOjphT3Zlcmxh
cHNCKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpjb250
YWlucyk6CisgICAgICAgIChDb21wYXJlSW50ZXJzZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBhcmVJbnRlcnNlY3Rpb246OmFPdXRzaWRlQik6CisgICAgICAgIChXZWJDb3JlOjpDb21w
YXJlSW50ZXJzZWN0aW9uOjpiT3V0c2lkZUEpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFyZUlu
dGVyc2VjdGlvbjo6YU92ZXJsYXBzQik6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OmludGVy
c2VjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpjb21wYXJlUmVnaW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmg6CisgICAgICAgIChSZWdpb24pOgorCisy
MDEyLTAzLTEzICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCiAgICAgICAg
IFJlZ2lvbjo6Y29udGFpbnMoSW50UG9pbnQpIGlzIHNsb3cKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggOTQ4YjAxNDYwNzFhYzM4NTZmMWYzNjNmYjk1M2RkNzQyZWRmZTNlOC4uZTEyMjc2
ZTljOTZlYTRkMTk3ZDZkYjk0ZmJjZDQ0ZWIyZTY3MTE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAxMi0wMy0xMyAgRGFuYSBKYW5zZW5zICA8ZGFuYWtq
QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZWdpb246OmludGVyc2VjdHMoKSBhbmQgUmVnaW9u
Ojpjb250YWlucygpIGFyZSBzbG93IGR1ZSB0byBjb3B5IG92ZXJoZWFkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTA3NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvUmVnaW9uVGVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCisyMDEyLTAz
LTEzICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJlZ2lv
bjo6Y29udGFpbnMoSW50UG9pbnQpIGlzIHNsb3cKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZWdpb24uY3BwCmluZGV4IDk4OWViZWMyYjBjNjg0NDc5ZDcyN2U5NzQ4OWE5ZDg1
MzdmMWNmYzQuLjNlMDZmMWVmNDNhMzgwMmVjMmViMTVlZWJkNDk3NmI0NmZjYzI0MWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcApAQCAtNjUsOSArNjUs
MTkgQEAgVmVjdG9yPEludFJlY3Q+IFJlZ2lvbjo6cmVjdHMoKSBjb25zdAogICAgIHJldHVybiBy
ZWN0czsKIH0KIAorc3RydWN0IENvbXBhcmVDb250YWlucyB7CisgICAgY29uc3Qgc3RhdGljIGJv
b2wgZGVmYXVsdFJlc3VsdCA9IHRydWU7CisgICAgaW5saW5lIHN0YXRpYyBib29sIGFPdXRzaWRl
Qihib29sJiByZXN1bHQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgaW5saW5lIHN0YXRpYyBib29s
IGJPdXRzaWRlQShib29sJiByZXN1bHQpIHsgcmVzdWx0ID0gZmFsc2U7IHJldHVybiB0cnVlOyB9
CisgICAgaW5saW5lIHN0YXRpYyBib29sIGFPdmVybGFwc0IoYm9vbCYgcmVzdWx0KSB7IHJldHVy
biBmYWxzZTsgfQorfTsKKwogYm9vbCBSZWdpb246OmNvbnRhaW5zKGNvbnN0IFJlZ2lvbiYgcmVn
aW9uKSBjb25zdAogewotICAgIHJldHVybiBXZWJDb3JlOjppbnRlcnNlY3QocmVnaW9uLCAqdGhp
cykgPT0gcmVnaW9uOworICAgIGlmICghbV9ib3VuZHMuY29udGFpbnMocmVnaW9uLm1fYm91bmRz
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGNvbXBhcmVSZWdpb25zPENv
bXBhcmVDb250YWlucz4ocmVnaW9uKTsKIH0KIAogYm9vbCBSZWdpb246OmNvbnRhaW5zKGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKQEAgLTk4LDE1ICsxMDgsMTkgQEAgYm9vbCBSZWdpb246
OmNvbnRhaW5zKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK3N0cnVjdCBDb21wYXJlSW50ZXJzZWN0aW9uIHsKKyAgICBjb25zdCBzdGF0aWMgYm9v
bCBkZWZhdWx0UmVzdWx0ID0gZmFsc2U7CisgICAgaW5saW5lIHN0YXRpYyBib29sIGFPdXRzaWRl
Qihib29sJiByZXN1bHQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgaW5saW5lIHN0YXRpYyBib29s
IGJPdXRzaWRlQShib29sJiByZXN1bHQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgaW5saW5lIHN0
YXRpYyBib29sIGFPdmVybGFwc0IoYm9vbCYgcmVzdWx0KSB7IHJlc3VsdCA9IHRydWU7IHJldHVy
biB0cnVlOyB9Cit9OworCiBib29sIFJlZ2lvbjo6aW50ZXJzZWN0cyhjb25zdCBSZWdpb24mIHJl
Z2lvbikgY29uc3QKIHsKICAgICBpZiAoIW1fYm91bmRzLmludGVyc2VjdHMocmVnaW9uLm1fYm91
bmRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gRklYTUU6IHRoaXMgY291bGQg
YmUgb3B0aW1pemVkLgotICAgIFJlZ2lvbiB0ZW1wUmVnaW9uKCp0aGlzKTsKLSAgICB0ZW1wUmVn
aW9uLmludGVyc2VjdChyZWdpb24pOwotICAgIHJldHVybiAhdGVtcFJlZ2lvbi5pc0VtcHR5KCk7
CisgICAgcmV0dXJuIGNvbXBhcmVSZWdpb25zPENvbXBhcmVJbnRlcnNlY3Rpb24+KHJlZ2lvbik7
CiB9CiAKIHVuc2lnbmVkIFJlZ2lvbjo6dG90YWxBcmVhKCkgY29uc3QKQEAgLTEyMyw2ICsxMzcs
OTIgQEAgdW5zaWduZWQgUmVnaW9uOjp0b3RhbEFyZWEoKSBjb25zdAogICAgIHJldHVybiB0b3Rh
bEFyZWE7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENvbXBhcmVPcGVyYXRpb24+Citib29sIFJl
Z2lvbjo6Y29tcGFyZVJlZ2lvbnMoY29uc3QgUmVnaW9uJiByZWdpb24pIGNvbnN0Cit7CisgICAg
Ym9vbCByZXN1bHQgPSBDb21wYXJlT3BlcmF0aW9uOjpkZWZhdWx0UmVzdWx0OworICAgIGNvbnN0
IFNoYXBlJiBhU2hhcGUgPSBtX3NoYXBlOworICAgIGNvbnN0IFNoYXBlJiBiU2hhcGUgPSByZWdp
b24ubV9zaGFwZTsKKworICAgIFNoYXBlOjpTcGFuSXRlcmF0b3IgYVNwYW4gPSBhU2hhcGUuc3Bh
bnNfYmVnaW4oKTsKKyAgICBTaGFwZTo6U3Bhbkl0ZXJhdG9yIGFTcGFuRW5kID0gYVNoYXBlLnNw
YW5zX2VuZCgpOworICAgIFNoYXBlOjpTcGFuSXRlcmF0b3IgYlNwYW4gPSBiU2hhcGUuc3BhbnNf
YmVnaW4oKTsKKyAgICBTaGFwZTo6U3Bhbkl0ZXJhdG9yIGJTcGFuRW5kID0gYlNoYXBlLnNwYW5z
X2VuZCgpOworCisgICAgYm9vbCBhSGFkU2VnbWVudEluUHJldmlvdXNTcGFuID0gZmFsc2U7Cisg
ICAgYm9vbCBiSGFkU2VnbWVudEluUHJldmlvdXNTcGFuID0gZmFsc2U7CisgICAgd2hpbGUgKGFT
cGFuICE9IGFTcGFuRW5kICYmIGJTcGFuICE9IGJTcGFuRW5kKSB7CisgICAgICAgIGludCBhWSA9
IGFTcGFuLT55OworICAgICAgICBpbnQgYU1heFkgPSAoYVNwYW4gKyAxKS0+eTsKKyAgICAgICAg
aW50IGJZID0gYlNwYW4tPnk7CisgICAgICAgIGludCBiTWF4WSA9IChiU3BhbiArIDEpLT55Owor
CisgICAgICAgIFNoYXBlOjpTZWdtZW50SXRlcmF0b3IgYVNlZ21lbnQgPSBhU2hhcGUuc2VnbWVu
dHNfYmVnaW4oYVNwYW4pOworICAgICAgICBTaGFwZTo6U2VnbWVudEl0ZXJhdG9yIGFTZWdtZW50
RW5kID0gYVNoYXBlLnNlZ21lbnRzX2VuZChhU3Bhbik7CisgICAgICAgIFNoYXBlOjpTZWdtZW50
SXRlcmF0b3IgYlNlZ21lbnQgPSBiU2hhcGUuc2VnbWVudHNfYmVnaW4oYlNwYW4pOworICAgICAg
ICBTaGFwZTo6U2VnbWVudEl0ZXJhdG9yIGJTZWdtZW50RW5kID0gYlNoYXBlLnNlZ21lbnRzX2Vu
ZChiU3Bhbik7CisKKyAgICAgICAgLy8gTG9vayBmb3IgYSBub24tb3ZlcmxhcHBpbmcgcGFydCBv
ZiB0aGUgc3BhbnMuIElmIEIgaGFkIGEgc2VnbWVudCBpbiBpdHMgcHJldmlvdXMgc3BhbiwgdGhl
biB3ZSBhbHJlYWR5IHRlc3RlZCBBIGFnYWluc3QgQiB3aXRoaW4gdGhhdCBzcGFuLgorICAgICAg
ICBib29sIGFIYXNTZWdtZW50SW5TcGFuID0gYVNlZ21lbnQgIT0gYVNlZ21lbnRFbmQ7CisgICAg
ICAgIGJvb2wgYkhhc1NlZ21lbnRJblNwYW4gPSBiU2VnbWVudCAhPSBiU2VnbWVudEVuZDsKKyAg
ICAgICAgaWYgKGFZIDwgYlkgJiYgIWJIYWRTZWdtZW50SW5QcmV2aW91c1NwYW4gJiYgYUhhc1Nl
Z21lbnRJblNwYW4gJiYgQ29tcGFyZU9wZXJhdGlvbjo6YU91dHNpZGVCKHJlc3VsdCkpCisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBpZiAoYlkgPCBhWSAmJiAhYUhhZFNlZ21l
bnRJblByZXZpb3VzU3BhbiAmJiBiSGFzU2VnbWVudEluU3BhbiAmJiBDb21wYXJlT3BlcmF0aW9u
OjpiT3V0c2lkZUEocmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAg
ICAgYUhhZFNlZ21lbnRJblByZXZpb3VzU3BhbiA9IGFIYXNTZWdtZW50SW5TcGFuOworICAgICAg
ICBiSGFkU2VnbWVudEluUHJldmlvdXNTcGFuID0gYkhhc1NlZ21lbnRJblNwYW47CisKKyAgICAg
ICAgYm9vbCBzcGFuc092ZXJsYXAgPSBiTWF4WSA+IGFZICYmIGJZIDwgYU1heFk7CisgICAgICAg
IGlmIChzcGFuc092ZXJsYXApIHsKKyAgICAgICAgICAgIHdoaWxlIChhU2VnbWVudCAhPSBhU2Vn
bWVudEVuZCAmJiBiU2VnbWVudCAhPSBiU2VnbWVudEVuZCkgeworICAgICAgICAgICAgICAgIGlu
dCBhWCA9ICphU2VnbWVudDsKKyAgICAgICAgICAgICAgICBpbnQgYU1heFggPSAqKGFTZWdtZW50
ICsgMSk7CisgICAgICAgICAgICAgICAgaW50IGJYID0gKmJTZWdtZW50OworICAgICAgICAgICAg
ICAgIGludCBiTWF4WCA9ICooYlNlZ21lbnQgKyAxKTsKKworICAgICAgICAgICAgICAgIGJvb2wg
c2VnbWVudHNPdmVybGFwID0gYk1heFggPiBhWCAmJiBiWCA8IGFNYXhYOworICAgICAgICAgICAg
ICAgIGlmIChzZWdtZW50c092ZXJsYXAgJiYgQ29tcGFyZU9wZXJhdGlvbjo6YU92ZXJsYXBzQihy
ZXN1bHQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAg
ICAgIGlmIChhWCA8IGJYICYmIENvbXBhcmVPcGVyYXRpb246OmFPdXRzaWRlQihyZXN1bHQpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIGlmIChi
WCA8IGFYICYmIENvbXBhcmVPcGVyYXRpb246OmJPdXRzaWRlQShyZXN1bHQpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgICAgICAgICAgaWYgKGFNYXhYIDwg
Yk1heFgpCisgICAgICAgICAgICAgICAgICAgIGFTZWdtZW50ICs9IDI7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoYk1heFggPCBhTWF4WCkKKyAgICAgICAgICAgICAgICAgICAgYlNlZ21lbnQg
Kz0gMjsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYVNlZ21l
bnQgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgYlNlZ21lbnQgKz0gMjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhU2VnbWVudCAhPSBhU2Vn
bWVudEVuZCAmJiBDb21wYXJlT3BlcmF0aW9uOjphT3V0c2lkZUIocmVzdWx0KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgaWYgKGJTZWdtZW50ICE9IGJTZWdt
ZW50RW5kICYmIENvbXBhcmVPcGVyYXRpb246OmJPdXRzaWRlQShyZXN1bHQpKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYU1heFkgPCBi
TWF4WSkKKyAgICAgICAgICAgIGFTcGFuICs9IDE7CisgICAgICAgIGVsc2UgaWYgKGJNYXhZIDwg
YU1heFkpCisgICAgICAgICAgICBiU3BhbiArPSAxOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGFTcGFuICs9IDE7CisgICAgICAgICAgICBiU3BhbiArPSAxOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGFTcGFuICE9IGFTcGFuRW5kICYmIGFTcGFuICsgMSAhPSBhU3BhbkVuZCAm
JiBDb21wYXJlT3BlcmF0aW9uOjphT3V0c2lkZUIocmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICBpZiAoYlNwYW4gIT0gYlNwYW5FbmQgJiYgYlNwYW4gKyAxICE9IGJTcGFuRW5k
ICYmIENvbXBhcmVPcGVyYXRpb246OmJPdXRzaWRlQShyZXN1bHQpKQorICAgICAgICByZXR1cm4g
cmVzdWx0OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogUmVnaW9uOjpTaGFwZTo6U2hhcGUo
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVn
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAppbmRleCBh
ODcyNjk1NjdhNWEyMjAwMDVhZTk0YjRkZDg3YWJkOTEzMWVmZGMyLi44NzI0ZjU5M2NjOWM0Mzhk
MmMwN2JjZGY2ZWY3ODQyNGU5MzhlMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uaApAQCAtMTIwLDYgKzEyMCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGUmLCBjb25zdCBTaGFwZSYpOwogICAgIH07CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb21wYXJlT3BlcmF0aW9uPgorICAgIGJvb2wgY29tcGFy
ZVJlZ2lvbnMoY29uc3QgUmVnaW9uJikgY29uc3Q7CisKICAgICBJbnRSZWN0IG1fYm91bmRzOwog
ICAgIFNoYXBlIG1fc2hhcGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvUmVnaW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1JlZ2lv
blRlc3QuY3BwCmluZGV4IDEzNjFhNDE5NDk2Y2E3NGJhODI3Y2E3ZTAzMGYwZjE0MDkxYjc4Nzku
LmU2ZGIyNDA2NWVkMGExY2YzMTViZDdiYTlhNzBhN2IzZDVlNGM5OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUmVnaW9uVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9SZWdpb25UZXN0LmNwcApAQCAtMTEyLDQgKzExMiwyMTkgQEAg
VEVTVChSZWdpb25UZXN0LCBjb250YWluc1BvaW50KQogICAgIFRFU1RfQk9UVE9NX09GX1JFQ1Qo
ciwgMzEsIDQwLCAxMCwgMTApOwogfQogCisjZGVmaW5lIFRFU1RfTk9fSU5URVJTRUNUKGEsIGIp
ICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBSZWdp
b24gYXIgPSBhOyAgICAgICAgICAgICAgICAgICBcCisgICAgUmVnaW9uIGJyID0gYjsgICAgICAg
ICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShhci5pbnRlcnNlY3RzKGJyKSk7IFwKKyAg
ICBFWFBFQ1RfRkFMU0UoYnIuaW50ZXJzZWN0cyhhcikpOyBcCit9CisKKyNkZWZpbmUgVEVTVF9J
TlRFUlNFQ1QoYSwgYikgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBSZWdpb24gYXIgPSBhOyAgICAgICAgICAgICAgICAgIFwKKyAgICBSZWdpb24g
YnIgPSBiOyAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShhci5pbnRlcnNlY3Rz
KGJyKSk7IFwKKyAgICBFWFBFQ1RfVFJVRShici5pbnRlcnNlY3RzKGFyKSk7IFwKK30KKworVEVT
VChSZWdpb25UZXN0LCBpbnRlcnNlY3RzUmVnaW9uKQoreworICAgIFJlZ2lvbiByOworCisgICAg
VEVTVF9OT19JTlRFUlNFQ1QoSW50UmVjdCgpLCBJbnRSZWN0KCkpOworICAgIFRFU1RfTk9fSU5U
RVJTRUNUKEludFJlY3QoKSwgSW50UmVjdCgwLCAwLCAxLCAxKSk7CisgICAgVEVTVF9OT19JTlRF
UlNFQ1QoSW50UmVjdCgpLCBJbnRSZWN0KDEsIDEsIDEsIDEpKTsKKworICAgIHIudW5pdGUoSW50
UmVjdCgwLCAwLCAxLCAxKSk7CisgICAgVEVTVF9OT19JTlRFUlNFQ1QociwgSW50UmVjdCgpKTsK
KyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKKyAgICBURVNUX0lO
VEVSU0VDVChyLCBJbnRSZWN0KDAsIDAsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJ
bnRSZWN0KC0xLCAwLCAyLCAyKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgtMSwg
LTEsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIC0xLCAyLCAyKSk7
CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgtMSwgLTEsIDMsIDMpKTsKKworICAgIHIu
dW5pdGUoSW50UmVjdCgwLCAwLCAzLCAzKSk7CisgICAgci51bml0ZShJbnRSZWN0KDEwLCAwLCAz
LCAzKSk7CisgICAgci51bml0ZShJbnRSZWN0KDAsIDEwLCAxMywgMykpOworICAgIFRFU1RfTk9f
SU5URVJTRUNUKHIsIEludFJlY3QoKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgx
LCAxLCAxLCAxKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgwLCAwLCAyLCAyKSk7
CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgxLCAwLCAyLCAyKSk7CisgICAgVEVTVF9J
TlRFUlNFQ1QociwgSW50UmVjdCgxLCAxLCAyLCAyKSk7CisgICAgVEVTVF9JTlRFUlNFQ1Qociwg
SW50UmVjdCgwLCAxLCAyLCAyKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgwLCAw
LCAzLCAzKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgtMSwgLTEsIDIsIDIpKTsK
KyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDIsIC0xLCAyLCAyKSk7CisgICAgVEVTVF9J
TlRFUlNFQ1QociwgSW50UmVjdCgyLCAyLCAyLCAyKSk7CisgICAgVEVTVF9JTlRFUlNFQ1Qociwg
SW50UmVjdCgtMSwgMiwgMiwgMikpOworCisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgx
MSwgMSwgMSwgMSkpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMTAsIDAsIDIsIDIp
KTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDExLCAwLCAyLCAyKSk7CisgICAgVEVT
VF9JTlRFUlNFQ1QociwgSW50UmVjdCgxMSwgMSwgMiwgMikpOworICAgIFRFU1RfSU5URVJTRUNU
KHIsIEludFJlY3QoMTAsIDEsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0
KDEwLCAwLCAzLCAzKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCg5LCAtMSwgMiwg
MikpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMTIsIC0xLCAyLCAyKSk7CisgICAg
VEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgxMiwgMiwgMiwgMikpOworICAgIFRFU1RfSU5URVJT
RUNUKHIsIEludFJlY3QoOSwgMiwgMiwgMikpOworCisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50
UmVjdCgwLCAtMSwgMTMsIDUpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDEsIC0x
LCAxMSwgNSkpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMiwgLTEsIDksIDUpKTsK
KyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDIsIC0xLCA4LCA1KSk7CisgICAgVEVTVF9J
TlRFUlNFQ1QociwgSW50UmVjdCgzLCAtMSwgOCwgNSkpOworICAgIFRFU1RfTk9fSU5URVJTRUNU
KHIsIEludFJlY3QoMywgLTEsIDcsIDUpKTsKKworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJl
Y3QoMCwgMSwgMTMsIDEpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDEsIDEsIDEx
LCAxKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgyLCAxLCA5LCAxKSk7CisgICAg
VEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgyLCAxLCA4LCAxKSk7CisgICAgVEVTVF9JTlRFUlNF
Q1QociwgSW50UmVjdCgzLCAxLCA4LCAxKSk7CisgICAgVEVTVF9OT19JTlRFUlNFQ1QociwgSW50
UmVjdCgzLCAxLCA3LCAxKSk7CisKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIDAs
IDEzLCAxMykpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMCwgMSwgMTMsIDExKSk7
CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgwLCAyLCAxMywgOSkpOworICAgIFRFU1Rf
SU5URVJTRUNUKHIsIEludFJlY3QoMCwgMiwgMTMsIDgpKTsKKyAgICBURVNUX0lOVEVSU0VDVChy
LCBJbnRSZWN0KDAsIDMsIDEzLCA4KSk7CisgICAgVEVTVF9OT19JTlRFUlNFQ1QociwgSW50UmVj
dCgwLCAzLCAxMywgNykpOworfQorCisjZGVmaW5lIFRFU1RfTk9fQ09OVEFJTlMoYSwgYikgICAg
IFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJlZ2lvbiBhciA9
IGE7ICAgICAgICAgICAgICAgICBcCisgICAgUmVnaW9uIGJyID0gYjsgICAgICAgICAgICAgICAg
IFwKKyAgICBFWFBFQ1RfRkFMU0UoYXIuY29udGFpbnMoYnIpKTsgXAorfQorCisjZGVmaW5lIFRF
U1RfQ09OVEFJTlMoYSwgYikgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBSZWdpb24gYXIgPSBhOyAgICAgICAgICAgICAgICBcCisgICAgUmVnaW9uIGJy
ID0gYjsgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9UUlVFKGFyLmNvbnRhaW5zKGJyKSk7
IFwKK30KKworVEVTVChSZWdpb25UZXN0LCBjb250YWluc1JlZ2lvbikKK3sKKyAgICBURVNUX0NP
TlRBSU5TKEludFJlY3QoKSwgSW50UmVjdCgpKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJl
Y3QoKSwgSW50UmVjdCgwLCAwLCAxLCAxKSk7CisgICAgVEVTVF9OT19DT05UQUlOUyhJbnRSZWN0
KCksIEludFJlY3QoMSwgMSwgMSwgMSkpOworCisgICAgVEVTVF9OT19DT05UQUlOUyhJbnRSZWN0
KDEwLCAxMCwgMSwgMSksIEludFJlY3QoMTEsIDEwLCAxLCAxKSk7CisgICAgVEVTVF9OT19DT05U
QUlOUyhJbnRSZWN0KDEwLCAxMCwgMSwgMSksIEludFJlY3QoMTAsIDExLCAxLCAxKSk7CisgICAg
VEVTVF9OT19DT05UQUlOUyhJbnRSZWN0KDEwLCAxMCwgMSwgMSksIEludFJlY3QoOSwgMTAsIDEs
IDEpKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCAxLCAxKSwgSW50UmVj
dCgxMCwgOSwgMSwgMSkpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgxMCwgMTAsIDEs
IDEpLCBJbnRSZWN0KDksIDksIDIsIDIpKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3Qo
MTAsIDEwLCAxLCAxKSwgSW50UmVjdCgxMCwgOSwgMiwgMikpOworICAgIFRFU1RfTk9fQ09OVEFJ
TlMoSW50UmVjdCgxMCwgMTAsIDEsIDEpLCBJbnRSZWN0KDksIDEwLCAyLCAyKSk7CisgICAgVEVT
VF9OT19DT05UQUlOUyhJbnRSZWN0KDEwLCAxMCwgMSwgMSksIEludFJlY3QoMTAsIDEwLCAyLCAy
KSk7CisgICAgVEVTVF9OT19DT05UQUlOUyhJbnRSZWN0KDEwLCAxMCwgMSwgMSksIEludFJlY3Qo
OSwgOSwgMywgMykpOworCisgICAgUmVnaW9uIGhMaW5lczsKKyAgICBmb3IgKGludCBpID0gMTA7
IGkgPCAyMDsgaSArPSAyKQorICAgICAgICBoTGluZXMudW5pdGUoSW50UmVjdChpLCAxMCwgMSwg
MTApKTsKKworICAgIFRFU1RfQ09OVEFJTlMoSW50UmVjdCgxMCwgMTAsIDksIDEwKSwgaExpbmVz
KTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCA5LCA5KSwgaExpbmVzKTsK
KyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDExLCA5LCA5KSwgaExpbmVzKTsKKyAg
ICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCA4LCAxMCksIGhMaW5lcyk7CisgICAg
VEVTVF9OT19DT05UQUlOUyhJbnRSZWN0KDExLCAxMCwgOCwgMTApLCBoTGluZXMpOworCisgICAg
UmVnaW9uIHZMaW5lczsKKyAgICBmb3IgKGludCBpID0gMTA7IGkgPCAyMDsgaSArPSAyKQorICAg
ICAgICB2TGluZXMudW5pdGUoSW50UmVjdCgxMCwgaSwgMTAsIDEpKTsKKworICAgIFRFU1RfQ09O
VEFJTlMoSW50UmVjdCgxMCwgMTAsIDEwLCA5KSwgdkxpbmVzKTsKKyAgICBURVNUX05PX0NPTlRB
SU5TKEludFJlY3QoMTAsIDEwLCA5LCA5KSwgdkxpbmVzKTsKKyAgICBURVNUX05PX0NPTlRBSU5T
KEludFJlY3QoMTEsIDEwLCA5LCA5KSwgdkxpbmVzKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKElu
dFJlY3QoMTAsIDEwLCAxMCwgOCksIHZMaW5lcyk7CisgICAgVEVTVF9OT19DT05UQUlOUyhJbnRS
ZWN0KDEwLCAxMSwgMTAsIDgpLCB2TGluZXMpOworCisgICAgUmVnaW9uIGdyaWQ7CisgICAgZm9y
IChpbnQgaSA9IDEwOyBpIDwgMjA7IGkgKz0gMikKKyAgICAgICAgZm9yIChpbnQgaiA9IDEwOyBq
IDwgMjA7IGogKz0gMikKKyAgICAgICAgICAgIGdyaWQudW5pdGUoSW50UmVjdChpLCBqLCAxLCAx
KSk7CisKKyAgICBURVNUX0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCA5LCA5KSwgZ3JpZCk7Cisg
ICAgVEVTVF9OT19DT05UQUlOUyhJbnRSZWN0KDEwLCAxMCwgOSwgOCksIGdyaWQpOworICAgIFRF
U1RfTk9fQ09OVEFJTlMoSW50UmVjdCgxMCwgMTEsIDksIDgpLCBncmlkKTsKKyAgICBURVNUX05P
X0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCA4LCA5KSwgZ3JpZCk7CisgICAgVEVTVF9OT19DT05U
QUlOUyhJbnRSZWN0KDExLCAxMCwgOCwgOSksIGdyaWQpOworCisgICAgVEVTVF9DT05UQUlOUyho
TGluZXMsIGhMaW5lcyk7CisgICAgVEVTVF9DT05UQUlOUyh2TGluZXMsIHZMaW5lcyk7CisgICAg
VEVTVF9OT19DT05UQUlOUyh2TGluZXMsIGhMaW5lcyk7CisgICAgVEVTVF9OT19DT05UQUlOUyho
TGluZXMsIHZMaW5lcyk7CisgICAgVEVTVF9DT05UQUlOUyhncmlkLCBncmlkKTsKKyAgICBURVNU
X0NPTlRBSU5TKGhMaW5lcywgZ3JpZCk7CisgICAgVEVTVF9DT05UQUlOUyh2TGluZXMsIGdyaWQp
OworICAgIFRFU1RfTk9fQ09OVEFJTlMoZ3JpZCwgaExpbmVzKTsKKyAgICBURVNUX05PX0NPTlRB
SU5TKGdyaWQsIHZMaW5lcyk7CisKKyAgICBmb3IgKGludCBpID0gMTA7IGkgPCAyMDsgaSArPSAy
KQorICAgICAgICBURVNUX0NPTlRBSU5TKGhMaW5lcywgSW50UmVjdChpLCAxMCwgMSwgMTApKTsK
KworICAgIGZvciAoaW50IGkgPSAxMDsgaSA8IDIwOyBpICs9IDIpCisgICAgICAgIFRFU1RfQ09O
VEFJTlModkxpbmVzLCBJbnRSZWN0KDEwLCBpLCAxMCwgMSkpOworCisgICAgZm9yIChpbnQgaSA9
IDEwOyBpIDwgMjA7IGkgKz0gMikKKyAgICAgICAgZm9yIChpbnQgaiA9IDEwOyBqIDwgMjA7IGog
Kz0gMikKKyAgICAgICAgICAgIFRFU1RfQ09OVEFJTlMoZ3JpZCwgSW50UmVjdChpLCBqLCAxLCAx
KSk7CisKKyAgICBSZWdpb24gY29udGFpbmVyOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0
KDAsIDAsIDQwLCAyMCkpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDIwLCA0MSwg
MjApKTsKKyAgICBURVNUX0NPTlRBSU5TKGNvbnRhaW5lciwgSW50UmVjdCg1LCA1LCAzMCwgMzAp
KTsKKworICAgIGNvbnRhaW5lciA9IFJlZ2lvbigpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRS
ZWN0KDAsIDAsIDEwLCAxMCkpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDMwLCAx
MCwgMTApKTsKKyAgICBjb250YWluZXIudW5pdGUoSW50UmVjdCgzMCwgMzAsIDEwLCAxMCkpOwor
ICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDMwLCAwLCAxMCwgMTApKTsKKyAgICBURVNUX05P
X0NPTlRBSU5TKGNvbnRhaW5lciwgSW50UmVjdCg1LCA1LCAzMCwgMzApKTsKKworICAgIGNvbnRh
aW5lciA9IFJlZ2lvbigpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDAsIDEwLCAx
MCkpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDMwLCAxMCwgMTApKTsKKyAgICBj
b250YWluZXIudW5pdGUoSW50UmVjdCgzMCwgMCwgMTAsIDQwKSk7CisgICAgVEVTVF9OT19DT05U
QUlOUyhjb250YWluZXIsIEludFJlY3QoNSwgNSwgMzAsIDMwKSk7CisKKyAgICBjb250YWluZXIg
PSBSZWdpb24oKTsKKyAgICBjb250YWluZXIudW5pdGUoSW50UmVjdCgzMCwgMCwgMTAsIDEwKSk7
CisgICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMzAsIDMwLCAxMCwgMTApKTsKKyAgICBjb250
YWluZXIudW5pdGUoSW50UmVjdCgwLCAwLCAxMCwgNDApKTsKKyAgICBURVNUX05PX0NPTlRBSU5T
KGNvbnRhaW5lciwgSW50UmVjdCg1LCA1LCAzMCwgMzApKTsKKworICAgIGNvbnRhaW5lciA9IFJl
Z2lvbigpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDAsIDEwLCA0MCkpOworICAg
IGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDMwLCAwLCAxMCwgNDApKTsKKyAgICBURVNUX05PX0NP
TlRBSU5TKGNvbnRhaW5lciwgSW50UmVjdCg1LCA1LCAzMCwgMzApKTsKKworICAgIGNvbnRhaW5l
ciA9IFJlZ2lvbigpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDAsIDQwLCA0MCkp
OworICAgIFRFU1RfTk9fQ09OVEFJTlMoY29udGFpbmVyLCBJbnRSZWN0KDEwLCAtMSwgMjAsIDEw
KSk7CisKKyAgICBjb250YWluZXIgPSBSZWdpb24oKTsKKyAgICBjb250YWluZXIudW5pdGUoSW50
UmVjdCgwLCAwLCA0MCwgNDApKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKGNvbnRhaW5lciwgSW50
UmVjdCgxMCwgMzEsIDIwLCAxMCkpOworCisgICAgY29udGFpbmVyID0gUmVnaW9uKCk7CisgICAg
Y29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMCwgNDAsIDIwKSk7CisgICAgY29udGFpbmVyLnVu
aXRlKEludFJlY3QoMCwgMjAsIDQxLCAyMCkpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoY29udGFp
bmVyLCBJbnRSZWN0KC0xLCAxMCwgMTAsIDIwKSk7CisKKyAgICBjb250YWluZXIgPSBSZWdpb24o
KTsKKyAgICBjb250YWluZXIudW5pdGUoSW50UmVjdCgwLCAwLCA0MCwgMjApKTsKKyAgICBjb250
YWluZXIudW5pdGUoSW50UmVjdCgwLCAyMCwgNDEsIDIwKSk7CisgICAgVEVTVF9OT19DT05UQUlO
Uyhjb250YWluZXIsIEludFJlY3QoMzEsIDEwLCAxMCwgMjApKTsKKworICAgIGNvbnRhaW5lciA9
IFJlZ2lvbigpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDAsIDQwLCA0MCkpOwor
ICAgIGNvbnRhaW5lci5zdWJ0cmFjdChJbnRSZWN0KDAsIDIwLCA2MCwgMCkpOworICAgIFRFU1Rf
Tk9fQ09OVEFJTlMoY29udGFpbmVyLCBJbnRSZWN0KDMxLCAxMCwgMTAsIDIwKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131844</attachid>
            <date>2012-03-14 07:53:44 -0700</date>
            <delta_ts>2012-04-30 21:59:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81076-20120314105340.patch</filename>
            <type>text/plain</type>
            <size>16593</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I2NTYxOTBmYjFkMzFm
YTNiNjk1NGQwNzMyMGYxZmE0NjQ1NjNkNi4uZGY1M2I4MjMyMTExOGZlZTJiYTlkMjZhOTA3YjRl
ZWExOWQxYTQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAzLTEzICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZ2lvbjo6aW50ZXJz
ZWN0cygpIGFuZCBSZWdpb246OmNvbnRhaW5zKCkgYXJlIHNsb3cgZHVlIHRvIGNvcHkgb3Zlcmhl
YWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDc2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGlu
ZyBjb250YWlucygpIGFuZCBpbnRlcnNlY3RzKCkgcmVxdWlyZXMgYSBjb3B5IHdoaWNoIGVuZHMg
dXAKKyAgICAgICAgaW52b2tpbmcgYSBtYWxsb2Mgb24gc3VmZmljaWVudGx5IGNvbXBsaWNhdGVk
IHdlYiBwYWdlcywgYW5kIHNsb3dzIGRvd24KKyAgICAgICAgdGhlIHRlc3QgdW5uZWNlc3Nhcmls
eS4gVGhlc2UgbWV0aG9kcyBjYW4gYmUgZG9uZSBieSBpdGVyYXRpbmcgb3ZlciB0aGUKKyAgICAg
ICAgUmVnaW9uOjpTaGFwZSB2YWx1ZXMgcmF0aGVyIHRoYW4gbWFraW5nIGEgY29weSBvZiB0aGUg
ZW50aXJlIHJlZ2lvbiBhbmQKKyAgICAgICAgbWFuaXB1bGF0aW5nIGl0LgorCisgICAgICAgIFRo
aXMgdXNlcyBSZWdpb246OmNvbXBhcmVSZWdpb25zKCkgdG8gd2FsayB0aGUgcXVlcnkgcmVnaW9u
cyBhbmQgY29tcHV0ZQorICAgICAgICB0aGUgcmVzdWx0IG9mIHRoZSBpbnRlcnNlY3RzIG9yIGNv
bnRhaW5zIHRlc3RzIHdpdGhvdXQgbWFraW5nIGEgY29weS4KKworICAgICAgICBVbml0IHRlc3Q6
IFJlZ2lvblRlc3QuaW50ZXJzZWN0c1JlZ2lvbgorICAgICAgICAgICAgICAgICAgIFJlZ2lvblRl
c3QuY29udGFpbnNSZWdpb24KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5j
cHA6CisgICAgICAgIChDb21wYXJlQ29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFy
ZUNvbnRhaW5zOjphT3V0c2lkZUIpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFyZUNvbnRhaW5z
OjpiT3V0c2lkZUEpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFyZUNvbnRhaW5zOjphT3Zlcmxh
cHNCKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpjb250
YWlucyk6CisgICAgICAgIChDb21wYXJlSW50ZXJzZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBhcmVJbnRlcnNlY3Rpb246OmFPdXRzaWRlQik6CisgICAgICAgIChXZWJDb3JlOjpDb21w
YXJlSW50ZXJzZWN0aW9uOjpiT3V0c2lkZUEpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFyZUlu
dGVyc2VjdGlvbjo6YU92ZXJsYXBzQik6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OmludGVy
c2VjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpjb21wYXJlUmVnaW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmg6CisgICAgICAgIChSZWdpb24pOgorCiAy
MDEyLTAzLTE0ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXgu
aW50ZWwuY29tPgogCiAgICAgICAgIEJ1aWxkIGVycm9yOiBETlNTb3VwLmNwcDozMDogZmF0YWwg
ZXJyb3I6IENTdHJpbmcuaDogTm8gc3VjaCBmaWxlIG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDFjZjQzNDQyODRhZjFmYjdmMGFlNDlmMWUxNzZjYmZiZjA2YzgyNDguLjc2NGZjNGUx
MDAxMmFhMTZlYmExN2E5ZjZiOTQ5ZTQzOWQ4ZDNiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDMtMTMgIERhbmEgSmFuc2VucyAgPGRhbmFrakBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVnaW9uOjppbnRlcnNlY3RzKCkgYW5kIFJlZ2lvbjo6
Y29udGFpbnMoKSBhcmUgc2xvdyBkdWUgdG8gY29weSBvdmVyaGVhZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEwNzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL1JlZ2lvblRlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wMy0x
NCAgTWFyamEgSMO2bHR0w6QgIDxtYXJqYUBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYkhUVFBC
b2R5OiBLZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlIGRhdGEgaW5jbHVkZXMgcGFzc3dvcmRzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKaW5kZXggOTg5ZWJl
YzJiMGM2ODQ0NzlkNzI3ZTk3NDg5YTlkODUzN2YxY2ZjNC4uNmY1OGRmMmY0ODg2OTNiZDBjMTI3
NDE2MzJjOTFkMTI2MTFkYjE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9SZWdpb24uY3BwCkBAIC02NSw5ICs2NSwxOSBAQCBWZWN0b3I8SW50UmVjdD4gUmVnaW9uOjpy
ZWN0cygpIGNvbnN0CiAgICAgcmV0dXJuIHJlY3RzOwogfQogCitzdHJ1Y3QgQ29tcGFyZUNvbnRh
aW5zIHsKKyAgICBjb25zdCBzdGF0aWMgYm9vbCBkZWZhdWx0UmVzdWx0ID0gdHJ1ZTsKKyAgICBp
bmxpbmUgc3RhdGljIGJvb2wgYU91dHNpZGVCKGJvb2wmIC8qIHJlc3VsdCAqLykgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBpbmxpbmUgc3RhdGljIGJvb2wgYk91dHNpZGVBKGJvb2wmIHJlc3VsdCkg
eyByZXN1bHQgPSBmYWxzZTsgcmV0dXJuIHRydWU7IH0KKyAgICBpbmxpbmUgc3RhdGljIGJvb2wg
YU92ZXJsYXBzQihib29sJiAvKiByZXN1bHQgKi8pIHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCiBi
b29sIFJlZ2lvbjo6Y29udGFpbnMoY29uc3QgUmVnaW9uJiByZWdpb24pIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OmludGVyc2VjdChyZWdpb24sICp0aGlzKSA9PSByZWdpb247CisgICAg
aWYgKCFtX2JvdW5kcy5jb250YWlucyhyZWdpb24ubV9ib3VuZHMpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gY29tcGFyZVJlZ2lvbnM8Q29tcGFyZUNvbnRhaW5zPihyZWdp
b24pOwogfQogCiBib29sIFJlZ2lvbjo6Y29udGFpbnMoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdApAQCAtOTgsMTUgKzEwOCwxOSBAQCBib29sIFJlZ2lvbjo6Y29udGFpbnMoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RydWN0IENvbXBh
cmVJbnRlcnNlY3Rpb24geworICAgIGNvbnN0IHN0YXRpYyBib29sIGRlZmF1bHRSZXN1bHQgPSBm
YWxzZTsKKyAgICBpbmxpbmUgc3RhdGljIGJvb2wgYU91dHNpZGVCKGJvb2wmIC8qIHJlc3VsdCAq
LykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBpbmxpbmUgc3RhdGljIGJvb2wgYk91dHNpZGVBKGJv
b2wmIC8qIHJlc3VsdCAqLykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBpbmxpbmUgc3RhdGljIGJv
b2wgYU92ZXJsYXBzQihib29sJiByZXN1bHQpIHsgcmVzdWx0ID0gdHJ1ZTsgcmV0dXJuIHRydWU7
IH0KK307CisKIGJvb2wgUmVnaW9uOjppbnRlcnNlY3RzKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKSBj
b25zdAogewogICAgIGlmICghbV9ib3VuZHMuaW50ZXJzZWN0cyhyZWdpb24ubV9ib3VuZHMpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogdGhpcyBjb3VsZCBiZSBvcHRp
bWl6ZWQuCi0gICAgUmVnaW9uIHRlbXBSZWdpb24oKnRoaXMpOwotICAgIHRlbXBSZWdpb24uaW50
ZXJzZWN0KHJlZ2lvbik7Ci0gICAgcmV0dXJuICF0ZW1wUmVnaW9uLmlzRW1wdHkoKTsKKyAgICBy
ZXR1cm4gY29tcGFyZVJlZ2lvbnM8Q29tcGFyZUludGVyc2VjdGlvbj4ocmVnaW9uKTsKIH0KIAog
dW5zaWduZWQgUmVnaW9uOjp0b3RhbEFyZWEoKSBjb25zdApAQCAtMTIzLDYgKzEzNyw5MiBAQCB1
bnNpZ25lZCBSZWdpb246OnRvdGFsQXJlYSgpIGNvbnN0CiAgICAgcmV0dXJuIHRvdGFsQXJlYTsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ29tcGFyZU9wZXJhdGlvbj4KK2Jvb2wgUmVnaW9uOjpj
b21wYXJlUmVnaW9ucyhjb25zdCBSZWdpb24mIHJlZ2lvbikgY29uc3QKK3sKKyAgICBib29sIHJl
c3VsdCA9IENvbXBhcmVPcGVyYXRpb246OmRlZmF1bHRSZXN1bHQ7CisgICAgY29uc3QgU2hhcGUm
IGFTaGFwZSA9IG1fc2hhcGU7CisgICAgY29uc3QgU2hhcGUmIGJTaGFwZSA9IHJlZ2lvbi5tX3No
YXBlOworCisgICAgU2hhcGU6OlNwYW5JdGVyYXRvciBhU3BhbiA9IGFTaGFwZS5zcGFuc19iZWdp
bigpOworICAgIFNoYXBlOjpTcGFuSXRlcmF0b3IgYVNwYW5FbmQgPSBhU2hhcGUuc3BhbnNfZW5k
KCk7CisgICAgU2hhcGU6OlNwYW5JdGVyYXRvciBiU3BhbiA9IGJTaGFwZS5zcGFuc19iZWdpbigp
OworICAgIFNoYXBlOjpTcGFuSXRlcmF0b3IgYlNwYW5FbmQgPSBiU2hhcGUuc3BhbnNfZW5kKCk7
CisKKyAgICBib29sIGFIYWRTZWdtZW50SW5QcmV2aW91c1NwYW4gPSBmYWxzZTsKKyAgICBib29s
IGJIYWRTZWdtZW50SW5QcmV2aW91c1NwYW4gPSBmYWxzZTsKKyAgICB3aGlsZSAoYVNwYW4gIT0g
YVNwYW5FbmQgJiYgYlNwYW4gIT0gYlNwYW5FbmQpIHsKKyAgICAgICAgaW50IGFZID0gYVNwYW4t
Pnk7CisgICAgICAgIGludCBhTWF4WSA9IChhU3BhbiArIDEpLT55OworICAgICAgICBpbnQgYlkg
PSBiU3Bhbi0+eTsKKyAgICAgICAgaW50IGJNYXhZID0gKGJTcGFuICsgMSktPnk7CisKKyAgICAg
ICAgU2hhcGU6OlNlZ21lbnRJdGVyYXRvciBhU2VnbWVudCA9IGFTaGFwZS5zZWdtZW50c19iZWdp
bihhU3Bhbik7CisgICAgICAgIFNoYXBlOjpTZWdtZW50SXRlcmF0b3IgYVNlZ21lbnRFbmQgPSBh
U2hhcGUuc2VnbWVudHNfZW5kKGFTcGFuKTsKKyAgICAgICAgU2hhcGU6OlNlZ21lbnRJdGVyYXRv
ciBiU2VnbWVudCA9IGJTaGFwZS5zZWdtZW50c19iZWdpbihiU3Bhbik7CisgICAgICAgIFNoYXBl
OjpTZWdtZW50SXRlcmF0b3IgYlNlZ21lbnRFbmQgPSBiU2hhcGUuc2VnbWVudHNfZW5kKGJTcGFu
KTsKKworICAgICAgICAvLyBMb29rIGZvciBhIG5vbi1vdmVybGFwcGluZyBwYXJ0IG9mIHRoZSBz
cGFucy4gSWYgQiBoYWQgYSBzZWdtZW50IGluIGl0cyBwcmV2aW91cyBzcGFuLCB0aGVuIHdlIGFs
cmVhZHkgdGVzdGVkIEEgYWdhaW5zdCBCIHdpdGhpbiB0aGF0IHNwYW4uCisgICAgICAgIGJvb2wg
YUhhc1NlZ21lbnRJblNwYW4gPSBhU2VnbWVudCAhPSBhU2VnbWVudEVuZDsKKyAgICAgICAgYm9v
bCBiSGFzU2VnbWVudEluU3BhbiA9IGJTZWdtZW50ICE9IGJTZWdtZW50RW5kOworICAgICAgICBp
ZiAoYVkgPCBiWSAmJiAhYkhhZFNlZ21lbnRJblByZXZpb3VzU3BhbiAmJiBhSGFzU2VnbWVudElu
U3BhbiAmJiBDb21wYXJlT3BlcmF0aW9uOjphT3V0c2lkZUIocmVzdWx0KSkKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIGlmIChiWSA8IGFZICYmICFhSGFkU2VnbWVudEluUHJl
dmlvdXNTcGFuICYmIGJIYXNTZWdtZW50SW5TcGFuICYmIENvbXBhcmVPcGVyYXRpb246OmJPdXRz
aWRlQShyZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgICAgICBhSGFk
U2VnbWVudEluUHJldmlvdXNTcGFuID0gYUhhc1NlZ21lbnRJblNwYW47CisgICAgICAgIGJIYWRT
ZWdtZW50SW5QcmV2aW91c1NwYW4gPSBiSGFzU2VnbWVudEluU3BhbjsKKworICAgICAgICBib29s
IHNwYW5zT3ZlcmxhcCA9IGJNYXhZID4gYVkgJiYgYlkgPCBhTWF4WTsKKyAgICAgICAgaWYgKHNw
YW5zT3ZlcmxhcCkgeworICAgICAgICAgICAgd2hpbGUgKGFTZWdtZW50ICE9IGFTZWdtZW50RW5k
ICYmIGJTZWdtZW50ICE9IGJTZWdtZW50RW5kKSB7CisgICAgICAgICAgICAgICAgaW50IGFYID0g
KmFTZWdtZW50OworICAgICAgICAgICAgICAgIGludCBhTWF4WCA9ICooYVNlZ21lbnQgKyAxKTsK
KyAgICAgICAgICAgICAgICBpbnQgYlggPSAqYlNlZ21lbnQ7CisgICAgICAgICAgICAgICAgaW50
IGJNYXhYID0gKihiU2VnbWVudCArIDEpOworCisgICAgICAgICAgICAgICAgYm9vbCBzZWdtZW50
c092ZXJsYXAgPSBiTWF4WCA+IGFYICYmIGJYIDwgYU1heFg7CisgICAgICAgICAgICAgICAgaWYg
KHNlZ21lbnRzT3ZlcmxhcCAmJiBDb21wYXJlT3BlcmF0aW9uOjphT3ZlcmxhcHNCKHJlc3VsdCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgaWYg
KGFYIDwgYlggJiYgQ29tcGFyZU9wZXJhdGlvbjo6YU91dHNpZGVCKHJlc3VsdCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgaWYgKGJYIDwgYVgg
JiYgQ29tcGFyZU9wZXJhdGlvbjo6Yk91dHNpZGVBKHJlc3VsdCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgICAgICAgICBpZiAoYU1heFggPCBiTWF4WCkK
KyAgICAgICAgICAgICAgICAgICAgYVNlZ21lbnQgKz0gMjsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChiTWF4WCA8IGFNYXhYKQorICAgICAgICAgICAgICAgICAgICBiU2VnbWVudCArPSAyOwor
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhU2VnbWVudCArPSAy
OworICAgICAgICAgICAgICAgICAgICBiU2VnbWVudCArPSAyOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGFTZWdtZW50ICE9IGFTZWdtZW50RW5k
ICYmIENvbXBhcmVPcGVyYXRpb246OmFPdXRzaWRlQihyZXN1bHQpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBpZiAoYlNlZ21lbnQgIT0gYlNlZ21lbnRFbmQg
JiYgQ29tcGFyZU9wZXJhdGlvbjo6Yk91dHNpZGVBKHJlc3VsdCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhTWF4WSA8IGJNYXhZKQor
ICAgICAgICAgICAgYVNwYW4gKz0gMTsKKyAgICAgICAgZWxzZSBpZiAoYk1heFkgPCBhTWF4WSkK
KyAgICAgICAgICAgIGJTcGFuICs9IDE7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYVNw
YW4gKz0gMTsKKyAgICAgICAgICAgIGJTcGFuICs9IDE7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAoYVNwYW4gIT0gYVNwYW5FbmQgJiYgYVNwYW4gKyAxICE9IGFTcGFuRW5kICYmIENvbXBh
cmVPcGVyYXRpb246OmFPdXRzaWRlQihyZXN1bHQpKQorICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIGlmIChiU3BhbiAhPSBiU3BhbkVuZCAmJiBiU3BhbiArIDEgIT0gYlNwYW5FbmQgJiYgQ29t
cGFyZU9wZXJhdGlvbjo6Yk91dHNpZGVBKHJlc3VsdCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBSZWdpb246OlNoYXBlOjpTaGFwZSgpCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCmluZGV4IGE4NzI2OTU2
N2E1YTIyMDAwNWFlOTRiNGRkODdhYmQ5MTMxZWZkYzIuLjg3MjRmNTkzY2M5YzQzOGQyYzA3YmNk
ZjZlZjc4NDI0ZTkzOGUzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
Z2lvbi5oCkBAIC0xMjAsNiArMTIwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTaGFwZSYsIGNvbnN0IFNoYXBlJik7CiAgICAgfTsKIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENvbXBhcmVPcGVyYXRpb24+CisgICAgYm9vbCBjb21wYXJlUmVnaW9u
cyhjb25zdCBSZWdpb24mKSBjb25zdDsKKwogICAgIEludFJlY3QgbV9ib3VuZHM7CiAgICAgU2hh
cGUgbV9zaGFwZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9S
ZWdpb25UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUmVnaW9uVGVzdC5j
cHAKaW5kZXggMTM2MWE0MTk0OTZjYTc0YmE4MjdjYTdlMDMwZjBmMTQwOTFiNzg3OS4uZTZkYjI0
MDY1ZWQwYTFjZjMxNWJkN2JhOWE3MGE3YjNkNWU0Yzk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9SZWdpb25UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1JlZ2lvblRlc3QuY3BwCkBAIC0xMTIsNCArMTEyLDIxOSBAQCBURVNUKFJl
Z2lvblRlc3QsIGNvbnRhaW5zUG9pbnQpCiAgICAgVEVTVF9CT1RUT01fT0ZfUkVDVChyLCAzMSwg
NDAsIDEwLCAxMCk7CiB9CiAKKyNkZWZpbmUgVEVTVF9OT19JTlRFUlNFQ1QoYSwgYikgICAgICBc
Cit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJlZ2lvbiBhciA9
IGE7ICAgICAgICAgICAgICAgICAgIFwKKyAgICBSZWdpb24gYnIgPSBiOyAgICAgICAgICAgICAg
ICAgICBcCisgICAgRVhQRUNUX0ZBTFNFKGFyLmludGVyc2VjdHMoYnIpKTsgXAorICAgIEVYUEVD
VF9GQUxTRShici5pbnRlcnNlY3RzKGFyKSk7IFwKK30KKworI2RlZmluZSBURVNUX0lOVEVSU0VD
VChhLCBiKSAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIFJlZ2lvbiBhciA9IGE7ICAgICAgICAgICAgICAgICAgXAorICAgIFJlZ2lvbiBiciA9IGI7
ICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9UUlVFKGFyLmludGVyc2VjdHMoYnIpKTsg
XAorICAgIEVYUEVDVF9UUlVFKGJyLmludGVyc2VjdHMoYXIpKTsgXAorfQorCitURVNUKFJlZ2lv
blRlc3QsIGludGVyc2VjdHNSZWdpb24pCit7CisgICAgUmVnaW9uIHI7CisKKyAgICBURVNUX05P
X0lOVEVSU0VDVChJbnRSZWN0KCksIEludFJlY3QoKSk7CisgICAgVEVTVF9OT19JTlRFUlNFQ1Qo
SW50UmVjdCgpLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKKyAgICBURVNUX05PX0lOVEVSU0VDVChJ
bnRSZWN0KCksIEludFJlY3QoMSwgMSwgMSwgMSkpOworCisgICAgci51bml0ZShJbnRSZWN0KDAs
IDAsIDEsIDEpKTsKKyAgICBURVNUX05PX0lOVEVSU0VDVChyLCBJbnRSZWN0KCkpOworICAgIFRF
U1RfSU5URVJTRUNUKHIsIEludFJlY3QoMCwgMCwgMSwgMSkpOworICAgIFRFU1RfSU5URVJTRUNU
KHIsIEludFJlY3QoMCwgMCwgMiwgMikpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3Qo
LTEsIDAsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KC0xLCAtMSwgMiwg
MikpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMCwgLTEsIDIsIDIpKTsKKyAgICBU
RVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KC0xLCAtMSwgMywgMykpOworCisgICAgci51bml0ZShJ
bnRSZWN0KDAsIDAsIDMsIDMpKTsKKyAgICByLnVuaXRlKEludFJlY3QoMTAsIDAsIDMsIDMpKTsK
KyAgICByLnVuaXRlKEludFJlY3QoMCwgMTAsIDEzLCAzKSk7CisgICAgVEVTVF9OT19JTlRFUlNF
Q1QociwgSW50UmVjdCgpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDEsIDEsIDEs
IDEpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIDAsIDIsIDIpKTsKKyAgICBU
RVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDEsIDAsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VD
VChyLCBJbnRSZWN0KDEsIDEsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0
KDAsIDEsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIDAsIDMsIDMp
KTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KC0xLCAtMSwgMiwgMikpOworICAgIFRF
U1RfSU5URVJTRUNUKHIsIEludFJlY3QoMiwgLTEsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VD
VChyLCBJbnRSZWN0KDIsIDIsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0
KC0xLCAyLCAyLCAyKSk7CisKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDExLCAxLCAx
LCAxKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgxMCwgMCwgMiwgMikpOworICAg
IFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMTEsIDAsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVS
U0VDVChyLCBJbnRSZWN0KDExLCAxLCAyLCAyKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50
UmVjdCgxMCwgMSwgMiwgMikpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMTAsIDAs
IDMsIDMpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDksIC0xLCAyLCAyKSk7Cisg
ICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgxMiwgLTEsIDIsIDIpKTsKKyAgICBURVNUX0lO
VEVSU0VDVChyLCBJbnRSZWN0KDEyLCAyLCAyLCAyKSk7CisgICAgVEVTVF9JTlRFUlNFQ1Qociwg
SW50UmVjdCg5LCAyLCAyLCAyKSk7CisKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAs
IC0xLCAxMywgNSkpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMSwgLTEsIDExLCA1
KSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgyLCAtMSwgOSwgNSkpOworICAgIFRF
U1RfSU5URVJTRUNUKHIsIEludFJlY3QoMiwgLTEsIDgsIDUpKTsKKyAgICBURVNUX0lOVEVSU0VD
VChyLCBJbnRSZWN0KDMsIC0xLCA4LCA1KSk7CisgICAgVEVTVF9OT19JTlRFUlNFQ1QociwgSW50
UmVjdCgzLCAtMSwgNywgNSkpOworCisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgwLCAx
LCAxMywgMSkpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMSwgMSwgMTEsIDEpKTsK
KyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDIsIDEsIDksIDEpKTsKKyAgICBURVNUX0lO
VEVSU0VDVChyLCBJbnRSZWN0KDIsIDEsIDgsIDEpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJ
bnRSZWN0KDMsIDEsIDgsIDEpKTsKKyAgICBURVNUX05PX0lOVEVSU0VDVChyLCBJbnRSZWN0KDMs
IDEsIDcsIDEpKTsKKworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMCwgMCwgMTMsIDEz
KSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgwLCAxLCAxMywgMTEpKTsKKyAgICBU
RVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIDIsIDEzLCA5KSk7CisgICAgVEVTVF9JTlRFUlNF
Q1QociwgSW50UmVjdCgwLCAyLCAxMywgOCkpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJl
Y3QoMCwgMywgMTMsIDgpKTsKKyAgICBURVNUX05PX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIDMs
IDEzLCA3KSk7Cit9CisKKyNkZWZpbmUgVEVTVF9OT19DT05UQUlOUyhhLCBiKSAgICAgXAoreyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUmVnaW9uIGFyID0gYTsgICAg
ICAgICAgICAgICAgIFwKKyAgICBSZWdpb24gYnIgPSBiOyAgICAgICAgICAgICAgICAgXAorICAg
IEVYUEVDVF9GQUxTRShhci5jb250YWlucyhicikpOyBcCit9CisKKyNkZWZpbmUgVEVTVF9DT05U
QUlOUyhhLCBiKSAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIFJlZ2lvbiBhciA9IGE7ICAgICAgICAgICAgICAgIFwKKyAgICBSZWdpb24gYnIgPSBiOyAg
ICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX1RSVUUoYXIuY29udGFpbnMoYnIpKTsgXAorfQor
CitURVNUKFJlZ2lvblRlc3QsIGNvbnRhaW5zUmVnaW9uKQoreworICAgIFRFU1RfQ09OVEFJTlMo
SW50UmVjdCgpLCBJbnRSZWN0KCkpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgpLCBJ
bnRSZWN0KDAsIDAsIDEsIDEpKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoKSwgSW50
UmVjdCgxLCAxLCAxLCAxKSk7CisKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDEw
LCAxLCAxKSwgSW50UmVjdCgxMSwgMTAsIDEsIDEpKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKElu
dFJlY3QoMTAsIDEwLCAxLCAxKSwgSW50UmVjdCgxMCwgMTEsIDEsIDEpKTsKKyAgICBURVNUX05P
X0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCAxLCAxKSwgSW50UmVjdCg5LCAxMCwgMSwgMSkpOwor
ICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgxMCwgMTAsIDEsIDEpLCBJbnRSZWN0KDEwLCA5
LCAxLCAxKSk7CisgICAgVEVTVF9OT19DT05UQUlOUyhJbnRSZWN0KDEwLCAxMCwgMSwgMSksIElu
dFJlY3QoOSwgOSwgMiwgMikpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgxMCwgMTAs
IDEsIDEpLCBJbnRSZWN0KDEwLCA5LCAyLCAyKSk7CisgICAgVEVTVF9OT19DT05UQUlOUyhJbnRS
ZWN0KDEwLCAxMCwgMSwgMSksIEludFJlY3QoOSwgMTAsIDIsIDIpKTsKKyAgICBURVNUX05PX0NP
TlRBSU5TKEludFJlY3QoMTAsIDEwLCAxLCAxKSwgSW50UmVjdCgxMCwgMTAsIDIsIDIpKTsKKyAg
ICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCAxLCAxKSwgSW50UmVjdCg5LCA5LCAz
LCAzKSk7CisKKyAgICBSZWdpb24gaExpbmVzOworICAgIGZvciAoaW50IGkgPSAxMDsgaSA8IDIw
OyBpICs9IDIpCisgICAgICAgIGhMaW5lcy51bml0ZShJbnRSZWN0KGksIDEwLCAxLCAxMCkpOwor
CisgICAgVEVTVF9DT05UQUlOUyhJbnRSZWN0KDEwLCAxMCwgOSwgMTApLCBoTGluZXMpOworICAg
IFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgxMCwgMTAsIDksIDkpLCBoTGluZXMpOworICAgIFRF
U1RfTk9fQ09OVEFJTlMoSW50UmVjdCgxMCwgMTEsIDksIDkpLCBoTGluZXMpOworICAgIFRFU1Rf
Tk9fQ09OVEFJTlMoSW50UmVjdCgxMCwgMTAsIDgsIDEwKSwgaExpbmVzKTsKKyAgICBURVNUX05P
X0NPTlRBSU5TKEludFJlY3QoMTEsIDEwLCA4LCAxMCksIGhMaW5lcyk7CisKKyAgICBSZWdpb24g
dkxpbmVzOworICAgIGZvciAoaW50IGkgPSAxMDsgaSA8IDIwOyBpICs9IDIpCisgICAgICAgIHZM
aW5lcy51bml0ZShJbnRSZWN0KDEwLCBpLCAxMCwgMSkpOworCisgICAgVEVTVF9DT05UQUlOUyhJ
bnRSZWN0KDEwLCAxMCwgMTAsIDkpLCB2TGluZXMpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50
UmVjdCgxMCwgMTAsIDksIDkpLCB2TGluZXMpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50UmVj
dCgxMSwgMTAsIDksIDkpLCB2TGluZXMpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgx
MCwgMTAsIDEwLCA4KSwgdkxpbmVzKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAs
IDExLCAxMCwgOCksIHZMaW5lcyk7CisKKyAgICBSZWdpb24gZ3JpZDsKKyAgICBmb3IgKGludCBp
ID0gMTA7IGkgPCAyMDsgaSArPSAyKQorICAgICAgICBmb3IgKGludCBqID0gMTA7IGogPCAyMDsg
aiArPSAyKQorICAgICAgICAgICAgZ3JpZC51bml0ZShJbnRSZWN0KGksIGosIDEsIDEpKTsKKwor
ICAgIFRFU1RfQ09OVEFJTlMoSW50UmVjdCgxMCwgMTAsIDksIDkpLCBncmlkKTsKKyAgICBURVNU
X05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCA5LCA4KSwgZ3JpZCk7CisgICAgVEVTVF9OT19D
T05UQUlOUyhJbnRSZWN0KDEwLCAxMSwgOSwgOCksIGdyaWQpOworICAgIFRFU1RfTk9fQ09OVEFJ
TlMoSW50UmVjdCgxMCwgMTAsIDgsIDkpLCBncmlkKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKElu
dFJlY3QoMTEsIDEwLCA4LCA5KSwgZ3JpZCk7CisKKyAgICBURVNUX0NPTlRBSU5TKGhMaW5lcywg
aExpbmVzKTsKKyAgICBURVNUX0NPTlRBSU5TKHZMaW5lcywgdkxpbmVzKTsKKyAgICBURVNUX05P
X0NPTlRBSU5TKHZMaW5lcywgaExpbmVzKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKGhMaW5lcywg
dkxpbmVzKTsKKyAgICBURVNUX0NPTlRBSU5TKGdyaWQsIGdyaWQpOworICAgIFRFU1RfQ09OVEFJ
TlMoaExpbmVzLCBncmlkKTsKKyAgICBURVNUX0NPTlRBSU5TKHZMaW5lcywgZ3JpZCk7CisgICAg
VEVTVF9OT19DT05UQUlOUyhncmlkLCBoTGluZXMpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoZ3Jp
ZCwgdkxpbmVzKTsKKworICAgIGZvciAoaW50IGkgPSAxMDsgaSA8IDIwOyBpICs9IDIpCisgICAg
ICAgIFRFU1RfQ09OVEFJTlMoaExpbmVzLCBJbnRSZWN0KGksIDEwLCAxLCAxMCkpOworCisgICAg
Zm9yIChpbnQgaSA9IDEwOyBpIDwgMjA7IGkgKz0gMikKKyAgICAgICAgVEVTVF9DT05UQUlOUyh2
TGluZXMsIEludFJlY3QoMTAsIGksIDEwLCAxKSk7CisKKyAgICBmb3IgKGludCBpID0gMTA7IGkg
PCAyMDsgaSArPSAyKQorICAgICAgICBmb3IgKGludCBqID0gMTA7IGogPCAyMDsgaiArPSAyKQor
ICAgICAgICAgICAgVEVTVF9DT05UQUlOUyhncmlkLCBJbnRSZWN0KGksIGosIDEsIDEpKTsKKwor
ICAgIFJlZ2lvbiBjb250YWluZXI7CisgICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMCwg
NDAsIDIwKSk7CisgICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMjAsIDQxLCAyMCkpOwor
ICAgIFRFU1RfQ09OVEFJTlMoY29udGFpbmVyLCBJbnRSZWN0KDUsIDUsIDMwLCAzMCkpOworCisg
ICAgY29udGFpbmVyID0gUmVnaW9uKCk7CisgICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwg
MCwgMTAsIDEwKSk7CisgICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMzAsIDEwLCAxMCkp
OworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDMwLCAzMCwgMTAsIDEwKSk7CisgICAgY29u
dGFpbmVyLnVuaXRlKEludFJlY3QoMzAsIDAsIDEwLCAxMCkpOworICAgIFRFU1RfTk9fQ09OVEFJ
TlMoY29udGFpbmVyLCBJbnRSZWN0KDUsIDUsIDMwLCAzMCkpOworCisgICAgY29udGFpbmVyID0g
UmVnaW9uKCk7CisgICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMCwgMTAsIDEwKSk7Cisg
ICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMzAsIDEwLCAxMCkpOworICAgIGNvbnRhaW5l
ci51bml0ZShJbnRSZWN0KDMwLCAwLCAxMCwgNDApKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKGNv
bnRhaW5lciwgSW50UmVjdCg1LCA1LCAzMCwgMzApKTsKKworICAgIGNvbnRhaW5lciA9IFJlZ2lv
bigpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDMwLCAwLCAxMCwgMTApKTsKKyAgICBj
b250YWluZXIudW5pdGUoSW50UmVjdCgzMCwgMzAsIDEwLCAxMCkpOworICAgIGNvbnRhaW5lci51
bml0ZShJbnRSZWN0KDAsIDAsIDEwLCA0MCkpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoY29udGFp
bmVyLCBJbnRSZWN0KDUsIDUsIDMwLCAzMCkpOworCisgICAgY29udGFpbmVyID0gUmVnaW9uKCk7
CisgICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMCwgMTAsIDQwKSk7CisgICAgY29udGFp
bmVyLnVuaXRlKEludFJlY3QoMzAsIDAsIDEwLCA0MCkpOworICAgIFRFU1RfTk9fQ09OVEFJTlMo
Y29udGFpbmVyLCBJbnRSZWN0KDUsIDUsIDMwLCAzMCkpOworCisgICAgY29udGFpbmVyID0gUmVn
aW9uKCk7CisgICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMCwgNDAsIDQwKSk7CisgICAg
VEVTVF9OT19DT05UQUlOUyhjb250YWluZXIsIEludFJlY3QoMTAsIC0xLCAyMCwgMTApKTsKKwor
ICAgIGNvbnRhaW5lciA9IFJlZ2lvbigpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAs
IDAsIDQwLCA0MCkpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoY29udGFpbmVyLCBJbnRSZWN0KDEw
LCAzMSwgMjAsIDEwKSk7CisKKyAgICBjb250YWluZXIgPSBSZWdpb24oKTsKKyAgICBjb250YWlu
ZXIudW5pdGUoSW50UmVjdCgwLCAwLCA0MCwgMjApKTsKKyAgICBjb250YWluZXIudW5pdGUoSW50
UmVjdCgwLCAyMCwgNDEsIDIwKSk7CisgICAgVEVTVF9OT19DT05UQUlOUyhjb250YWluZXIsIElu
dFJlY3QoLTEsIDEwLCAxMCwgMjApKTsKKworICAgIGNvbnRhaW5lciA9IFJlZ2lvbigpOworICAg
IGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDAsIDQwLCAyMCkpOworICAgIGNvbnRhaW5lci51
bml0ZShJbnRSZWN0KDAsIDIwLCA0MSwgMjApKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKGNvbnRh
aW5lciwgSW50UmVjdCgzMSwgMTAsIDEwLCAyMCkpOworCisgICAgY29udGFpbmVyID0gUmVnaW9u
KCk7CisgICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMCwgNDAsIDQwKSk7CisgICAgY29u
dGFpbmVyLnN1YnRyYWN0KEludFJlY3QoMCwgMjAsIDYwLCAwKSk7CisgICAgVEVTVF9OT19DT05U
QUlOUyhjb250YWluZXIsIEludFJlY3QoMzEsIDEwLCAxMCwgMjApKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139579</attachid>
            <date>2012-04-30 21:59:22 -0700</date>
            <delta_ts>2012-05-07 15:39:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81076-20120501005920.patch</filename>
            <type>text/plain</type>
            <size>16831</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE1N2Q2YzA2MDA2YzNm
ZjE3NzY1NWI0YmZmMTNmYTViNWFlNzVmYi4uMjIwZTk0YzQ0ODk3ZDJmOWJhZjY5NDBhN2E4ZGQ2
ZTRlYWNlMzVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA0LTMwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZ2lvbjo6aW50ZXJz
ZWN0cygpIGFuZCBSZWdpb246OmNvbnRhaW5zKCkgYXJlIHNsb3cgZHVlIHRvIGNvcHkgb3Zlcmhl
YWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDc2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGlu
ZyBjb250YWlucygpIGFuZCBpbnRlcnNlY3RzKCkgcmVxdWlyZXMgYSBjb3B5IHdoaWNoIGVuZHMg
dXAKKyAgICAgICAgaW52b2tpbmcgYSBtYWxsb2Mgb24gc3VmZmljaWVudGx5IGNvbXBsaWNhdGVk
IHdlYiBwYWdlcywgYW5kIHNsb3dzIGRvd24KKyAgICAgICAgdGhlIHRlc3QgdW5uZWNlc3Nhcmls
eS4gVGhlc2UgbWV0aG9kcyBjYW4gYmUgZG9uZSBieSBpdGVyYXRpbmcgb3ZlciB0aGUKKyAgICAg
ICAgUmVnaW9uOjpTaGFwZSB2YWx1ZXMgcmF0aGVyIHRoYW4gbWFraW5nIGEgY29weSBvZiB0aGUg
ZW50aXJlIHJlZ2lvbiBhbmQKKyAgICAgICAgbWFuaXB1bGF0aW5nIGl0LgorCisgICAgICAgIFRo
aXMgdXNlcyBSZWdpb246OlNoYXBlOjpjb21wYXJlU2hhcGVzKCkgdG8gd2FsayB0aGUgcXVlcnkg
cmVnaW9ucyBhbmQKKyAgICAgICAgY29tcHV0ZSB0aGUgcmVzdWx0IG9mIHRoZSBpbnRlcnNlY3Rz
IG9yIGNvbnRhaW5zIHRlc3RzIHdpdGhvdXQgbWFraW5nIGEKKyAgICAgICAgY29weS4KKworICAg
ICAgICBVbml0IHRlc3Q6IFJlZ2lvblRlc3QuaW50ZXJzZWN0c1JlZ2lvbgorICAgICAgICAgICAg
ICAgICAgIFJlZ2lvblRlc3QuY29udGFpbnNSZWdpb24KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OmNvbnRhaW5zKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6aW50ZXJzZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6U2hhcGU6OmNvbXBhcmVTaGFwZXMpOgorICAg
ICAgICAoUmVnaW9uOjpTaGFwZTo6Q29tcGFyZUNvbnRhaW5zT3BlcmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlZ2lvbjo6U2hhcGU6OkNvbXBhcmVDb250YWluc09wZXJhdGlvbjo6YU91dHNp
ZGVCKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6U2hhcGU6OkNvbXBhcmVDb250YWluc09w
ZXJhdGlvbjo6Yk91dHNpZGVBKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6U2hhcGU6OkNv
bXBhcmVDb250YWluc09wZXJhdGlvbjo6YU92ZXJsYXBzQik6CisgICAgICAgIChSZWdpb246OlNo
YXBlOjpDb21wYXJlSW50ZXJzZWN0c09wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZWdp
b246OlNoYXBlOjpDb21wYXJlSW50ZXJzZWN0c09wZXJhdGlvbjo6YU91dHNpZGVCKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlZ2lvbjo6U2hhcGU6OkNvbXBhcmVJbnRlcnNlY3RzT3BlcmF0aW9uOjpi
T3V0c2lkZUEpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpTaGFwZTo6Q29tcGFyZUludGVy
c2VjdHNPcGVyYXRpb246OmFPdmVybGFwc0IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1JlZ2lvbi5oOgorICAgICAgICAoU2hhcGUpOgorCiAyMDEyLTA0LTMwICBOYXRlIENoYXBpbiAg
PGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92ZSBtb3JlIG9mIGNvbW1pdHRpbmcg
YW5kIHN0YXJ0aW5nIHRvIHdyaXRlIGEgRG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggNTA5NzI2MDAwNjU4MjdmZTUyM2JmY2Y2MTQxNDYxZmM1YTZjNGY5Ny4uYmJiNTY4OTVk
YjE0ZjQ4MzU5NjQ1MzBhM2VhZWI2MzI3MTg2ZWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNC0zMCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZWdpb246OmludGVyc2VjdHMoKSBhbmQgUmVnaW9uOjpj
b250YWlucygpIGFyZSBzbG93IGR1ZSB0byBjb3B5IG92ZXJoZWFkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTA3NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvUmVnaW9uVGVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTA0LTMw
ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21p
dW1dIFJlbW92ZSBQbGF0Zm9ybVN1cHBvcnQ6OmxvYWRQbGF0Zm9ybUF1ZGlvUmVzb3VyY2UsIGNh
bGwgbG9hZFJlc291cmNlIGRpcmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVnaW9uLmNwcAppbmRleCA1ZjI5ZGU3NTkxZTUwZThjYTQ3NmRlMjZjMTBkMzA2N2U3YjA1
ODQ0Li43NmNlN2JlMmM0NjQ3MzZlNDljNDE5MDgwM2I4NTJhNGI3M2EwMzQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKQEAgLTcwLDcgKzcwLDcgQEAg
Ym9vbCBSZWdpb246OmNvbnRhaW5zKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKSBjb25zdAogICAgIGlm
ICghbV9ib3VuZHMuY29udGFpbnMocmVnaW9uLm1fYm91bmRzKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OmludGVyc2VjdChyZWdpb24sICp0aGlzKSA9PSBy
ZWdpb247CisgICAgcmV0dXJuIFNoYXBlOjpjb21wYXJlU2hhcGVzPFNoYXBlOjpDb21wYXJlQ29u
dGFpbnNPcGVyYXRpb24+KG1fc2hhcGUsIHJlZ2lvbi5tX3NoYXBlKTsKIH0KIAogYm9vbCBSZWdp
b246OmNvbnRhaW5zKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKQEAgLTEwNiwxMCArMTA2
LDcgQEAgYm9vbCBSZWdpb246OmludGVyc2VjdHMoY29uc3QgUmVnaW9uJiByZWdpb24pIGNvbnN0
CiAgICAgaWYgKCFtX2JvdW5kcy5pbnRlcnNlY3RzKHJlZ2lvbi5tX2JvdW5kcykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIC8vIEZJWE1FOiB0aGlzIGNvdWxkIGJlIG9wdGltaXplZC4K
LSAgICBSZWdpb24gdGVtcFJlZ2lvbigqdGhpcyk7Ci0gICAgdGVtcFJlZ2lvbi5pbnRlcnNlY3Qo
cmVnaW9uKTsKLSAgICByZXR1cm4gIXRlbXBSZWdpb24uaXNFbXB0eSgpOworICAgIHJldHVybiBT
aGFwZTo6Y29tcGFyZVNoYXBlczxTaGFwZTo6Q29tcGFyZUludGVyc2VjdHNPcGVyYXRpb24+KG1f
c2hhcGUsIHJlZ2lvbi5tX3NoYXBlKTsKIH0KIAogdW5zaWduZWQgUmVnaW9uOjp0b3RhbEFyZWEo
KSBjb25zdApAQCAtMTI2LDYgKzEyMywxMDQgQEAgdW5zaWduZWQgUmVnaW9uOjp0b3RhbEFyZWEo
KSBjb25zdAogICAgIHJldHVybiB0b3RhbEFyZWE7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENv
bXBhcmVPcGVyYXRpb24+Citib29sIFJlZ2lvbjo6U2hhcGU6OmNvbXBhcmVTaGFwZXMoY29uc3Qg
U2hhcGUmIGFTaGFwZSwgY29uc3QgU2hhcGUmIGJTaGFwZSkKK3sKKyAgICBib29sIHJlc3VsdCA9
IENvbXBhcmVPcGVyYXRpb246OmRlZmF1bHRSZXN1bHQ7CisKKyAgICBTaGFwZTo6U3Bhbkl0ZXJh
dG9yIGFTcGFuID0gYVNoYXBlLnNwYW5zX2JlZ2luKCk7CisgICAgU2hhcGU6OlNwYW5JdGVyYXRv
ciBhU3BhbkVuZCA9IGFTaGFwZS5zcGFuc19lbmQoKTsKKyAgICBTaGFwZTo6U3Bhbkl0ZXJhdG9y
IGJTcGFuID0gYlNoYXBlLnNwYW5zX2JlZ2luKCk7CisgICAgU2hhcGU6OlNwYW5JdGVyYXRvciBi
U3BhbkVuZCA9IGJTaGFwZS5zcGFuc19lbmQoKTsKKworICAgIGJvb2wgYUhhZFNlZ21lbnRJblBy
ZXZpb3VzU3BhbiA9IGZhbHNlOworICAgIGJvb2wgYkhhZFNlZ21lbnRJblByZXZpb3VzU3BhbiA9
IGZhbHNlOworICAgIHdoaWxlIChhU3BhbiAhPSBhU3BhbkVuZCAmJiBiU3BhbiAhPSBiU3BhbkVu
ZCkgeworICAgICAgICBpbnQgYVkgPSBhU3Bhbi0+eTsKKyAgICAgICAgaW50IGFNYXhZID0gKGFT
cGFuICsgMSktPnk7CisgICAgICAgIGludCBiWSA9IGJTcGFuLT55OworICAgICAgICBpbnQgYk1h
eFkgPSAoYlNwYW4gKyAxKS0+eTsKKworICAgICAgICBTaGFwZTo6U2VnbWVudEl0ZXJhdG9yIGFT
ZWdtZW50ID0gYVNoYXBlLnNlZ21lbnRzX2JlZ2luKGFTcGFuKTsKKyAgICAgICAgU2hhcGU6OlNl
Z21lbnRJdGVyYXRvciBhU2VnbWVudEVuZCA9IGFTaGFwZS5zZWdtZW50c19lbmQoYVNwYW4pOwor
ICAgICAgICBTaGFwZTo6U2VnbWVudEl0ZXJhdG9yIGJTZWdtZW50ID0gYlNoYXBlLnNlZ21lbnRz
X2JlZ2luKGJTcGFuKTsKKyAgICAgICAgU2hhcGU6OlNlZ21lbnRJdGVyYXRvciBiU2VnbWVudEVu
ZCA9IGJTaGFwZS5zZWdtZW50c19lbmQoYlNwYW4pOworCisgICAgICAgIC8vIExvb2sgZm9yIGEg
bm9uLW92ZXJsYXBwaW5nIHBhcnQgb2YgdGhlIHNwYW5zLiBJZiBCIGhhZCBhIHNlZ21lbnQgaW4g
aXRzIHByZXZpb3VzIHNwYW4sIHRoZW4gd2UgYWxyZWFkeSB0ZXN0ZWQgQSBhZ2FpbnN0IEIgd2l0
aGluIHRoYXQgc3Bhbi4KKyAgICAgICAgYm9vbCBhSGFzU2VnbWVudEluU3BhbiA9IGFTZWdtZW50
ICE9IGFTZWdtZW50RW5kOworICAgICAgICBib29sIGJIYXNTZWdtZW50SW5TcGFuID0gYlNlZ21l
bnQgIT0gYlNlZ21lbnRFbmQ7CisgICAgICAgIGlmIChhWSA8IGJZICYmICFiSGFkU2VnbWVudElu
UHJldmlvdXNTcGFuICYmIGFIYXNTZWdtZW50SW5TcGFuICYmIENvbXBhcmVPcGVyYXRpb246OmFP
dXRzaWRlQihyZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgaWYg
KGJZIDwgYVkgJiYgIWFIYWRTZWdtZW50SW5QcmV2aW91c1NwYW4gJiYgYkhhc1NlZ21lbnRJblNw
YW4gJiYgQ29tcGFyZU9wZXJhdGlvbjo6Yk91dHNpZGVBKHJlc3VsdCkpCisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworCisgICAgICAgIGFIYWRTZWdtZW50SW5QcmV2aW91c1NwYW4gPSBhSGFz
U2VnbWVudEluU3BhbjsKKyAgICAgICAgYkhhZFNlZ21lbnRJblByZXZpb3VzU3BhbiA9IGJIYXNT
ZWdtZW50SW5TcGFuOworCisgICAgICAgIGJvb2wgc3BhbnNPdmVybGFwID0gYk1heFkgPiBhWSAm
JiBiWSA8IGFNYXhZOworICAgICAgICBpZiAoc3BhbnNPdmVybGFwKSB7CisgICAgICAgICAgICB3
aGlsZSAoYVNlZ21lbnQgIT0gYVNlZ21lbnRFbmQgJiYgYlNlZ21lbnQgIT0gYlNlZ21lbnRFbmQp
IHsKKyAgICAgICAgICAgICAgICBpbnQgYVggPSAqYVNlZ21lbnQ7CisgICAgICAgICAgICAgICAg
aW50IGFNYXhYID0gKihhU2VnbWVudCArIDEpOworICAgICAgICAgICAgICAgIGludCBiWCA9ICpi
U2VnbWVudDsKKyAgICAgICAgICAgICAgICBpbnQgYk1heFggPSAqKGJTZWdtZW50ICsgMSk7CisK
KyAgICAgICAgICAgICAgICBib29sIHNlZ21lbnRzT3ZlcmxhcCA9IGJNYXhYID4gYVggJiYgYlgg
PCBhTWF4WDsKKyAgICAgICAgICAgICAgICBpZiAoc2VnbWVudHNPdmVybGFwICYmIENvbXBhcmVP
cGVyYXRpb246OmFPdmVybGFwc0IocmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgICAgICAgICBpZiAoYVggPCBiWCAmJiBDb21wYXJlT3BlcmF0aW9u
OjphT3V0c2lkZUIocmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgICAgICAgICBpZiAoYlggPCBhWCAmJiBDb21wYXJlT3BlcmF0aW9uOjpiT3V0c2lk
ZUEocmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgICAg
ICAgICAgICAgIGlmIChhTWF4WCA8IGJNYXhYKQorICAgICAgICAgICAgICAgICAgICBhU2VnbWVu
dCArPSAyOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJNYXhYIDwgYU1heFgpCisgICAgICAg
ICAgICAgICAgICAgIGJTZWdtZW50ICs9IDI7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIGFTZWdtZW50ICs9IDI7CisgICAgICAgICAgICAgICAgICAgIGJTZWdt
ZW50ICs9IDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoYVNlZ21lbnQgIT0gYVNlZ21lbnRFbmQgJiYgQ29tcGFyZU9wZXJhdGlvbjo6YU91dHNp
ZGVCKHJlc3VsdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAg
IGlmIChiU2VnbWVudCAhPSBiU2VnbWVudEVuZCAmJiBDb21wYXJlT3BlcmF0aW9uOjpiT3V0c2lk
ZUEocmVzdWx0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGFNYXhZIDwgYk1heFkpCisgICAgICAgICAgICBhU3BhbiArPSAxOworICAg
ICAgICBlbHNlIGlmIChiTWF4WSA8IGFNYXhZKQorICAgICAgICAgICAgYlNwYW4gKz0gMTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBhU3BhbiArPSAxOworICAgICAgICAgICAgYlNwYW4g
Kz0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChhU3BhbiAhPSBhU3BhbkVuZCAmJiBh
U3BhbiArIDEgIT0gYVNwYW5FbmQgJiYgQ29tcGFyZU9wZXJhdGlvbjo6YU91dHNpZGVCKHJlc3Vs
dCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgaWYgKGJTcGFuICE9IGJTcGFuRW5kICYm
IGJTcGFuICsgMSAhPSBiU3BhbkVuZCAmJiBDb21wYXJlT3BlcmF0aW9uOjpiT3V0c2lkZUEocmVz
dWx0KSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3N0cnVjdCBSZWdpb246OlNoYXBlOjpDb21wYXJlQ29udGFpbnNPcGVyYXRpb24geworICAgIGNv
bnN0IHN0YXRpYyBib29sIGRlZmF1bHRSZXN1bHQgPSB0cnVlOworICAgIGlubGluZSBzdGF0aWMg
Ym9vbCBhT3V0c2lkZUIoYm9vbCYgLyogcmVzdWx0ICovKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGlubGluZSBzdGF0aWMgYm9vbCBiT3V0c2lkZUEoYm9vbCYgcmVzdWx0KSB7IHJlc3VsdCA9IGZh
bHNlOyByZXR1cm4gdHJ1ZTsgfQorICAgIGlubGluZSBzdGF0aWMgYm9vbCBhT3ZlcmxhcHNCKGJv
b2wmIC8qIHJlc3VsdCAqLykgeyByZXR1cm4gZmFsc2U7IH0KK307CisKK3N0cnVjdCBSZWdpb246
OlNoYXBlOjpDb21wYXJlSW50ZXJzZWN0c09wZXJhdGlvbiB7CisgICAgY29uc3Qgc3RhdGljIGJv
b2wgZGVmYXVsdFJlc3VsdCA9IGZhbHNlOworICAgIGlubGluZSBzdGF0aWMgYm9vbCBhT3V0c2lk
ZUIoYm9vbCYgLyogcmVzdWx0ICovKSB7IHJldHVybiBmYWxzZTsgfQorICAgIGlubGluZSBzdGF0
aWMgYm9vbCBiT3V0c2lkZUEoYm9vbCYgLyogcmVzdWx0ICovKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGlubGluZSBzdGF0aWMgYm9vbCBhT3ZlcmxhcHNCKGJvb2wmIHJlc3VsdCkgeyByZXN1bHQg
PSB0cnVlOyByZXR1cm4gdHJ1ZTsgfQorfTsKKwogUmVnaW9uOjpTaGFwZTo6U2hhcGUoKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAppbmRleCBhODcyNjk1
NjdhNWEyMjAwMDVhZTk0YjRkZDg3YWJkOTEzMWVmZGMyLi44OTNmMWNkMTY3ZmIzZGM5ZjllMWVi
M2M0MDI4MjY0NjU0MmEzYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZWdpb24uaApAQCAtOTUsNiArOTUsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCB0cmFuc2xh
dGUoY29uc3QgSW50U2l6ZSYpOwogICAgICAgICB2b2lkIHN3YXAoU2hhcGUmKTsKIAorICAgICAg
ICBzdHJ1Y3QgQ29tcGFyZUNvbnRhaW5zT3BlcmF0aW9uOworICAgICAgICBzdHJ1Y3QgQ29tcGFy
ZUludGVyc2VjdHNPcGVyYXRpb247CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29tcGFy
ZU9wZXJhdGlvbj4KKyAgICAgICAgc3RhdGljIGJvb2wgY29tcGFyZVNoYXBlcyhjb25zdCBTaGFw
ZSYgc2hhcGUxLCBjb25zdCBTaGFwZSYgc2hhcGUyKTsKKwogI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgdm9pZCBkdW1wKCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvUmVnaW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1JlZ2lvblRlc3QuY3BwCmluZGV4IGQyMDJhYjQwY2ZiYTQ5NmI3Y2U1ZTFlNTRjNmJiOGY3
ODY0ZTg1YjEuLjY1NzE3YmJlOGQwOTFhZDY0YjMxYWJiNjJhOWE3ZWY4MjU3MWM0NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUmVnaW9uVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9SZWdpb25UZXN0LmNwcApAQCAtMTI0LDQgKzEy
NCwyMTkgQEAgVEVTVChSZWdpb25UZXN0LCBlbXB0eVNwYW4pCiAgICAgICAgIEVYUEVDVF9GQUxT
RShyZWN0c1tpXS5pc0VtcHR5KCkpOwogfQogCisjZGVmaW5lIFRFU1RfTk9fSU5URVJTRUNUKGEs
IGIpICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBS
ZWdpb24gYXIgPSBhOyAgICAgICAgICAgICAgICAgICBcCisgICAgUmVnaW9uIGJyID0gYjsgICAg
ICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShhci5pbnRlcnNlY3RzKGJyKSk7IFwK
KyAgICBFWFBFQ1RfRkFMU0UoYnIuaW50ZXJzZWN0cyhhcikpOyBcCit9CisKKyNkZWZpbmUgVEVT
VF9JTlRFUlNFQ1QoYSwgYikgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBSZWdpb24gYXIgPSBhOyAgICAgICAgICAgICAgICAgIFwKKyAgICBSZWdp
b24gYnIgPSBiOyAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShhci5pbnRlcnNl
Y3RzKGJyKSk7IFwKKyAgICBFWFBFQ1RfVFJVRShici5pbnRlcnNlY3RzKGFyKSk7IFwKK30KKwor
VEVTVChSZWdpb25UZXN0LCBpbnRlcnNlY3RzUmVnaW9uKQoreworICAgIFJlZ2lvbiByOworCisg
ICAgVEVTVF9OT19JTlRFUlNFQ1QoSW50UmVjdCgpLCBJbnRSZWN0KCkpOworICAgIFRFU1RfTk9f
SU5URVJTRUNUKEludFJlY3QoKSwgSW50UmVjdCgwLCAwLCAxLCAxKSk7CisgICAgVEVTVF9OT19J
TlRFUlNFQ1QoSW50UmVjdCgpLCBJbnRSZWN0KDEsIDEsIDEsIDEpKTsKKworICAgIHIudW5pdGUo
SW50UmVjdCgwLCAwLCAxLCAxKSk7CisgICAgVEVTVF9OT19JTlRFUlNFQ1QociwgSW50UmVjdCgp
KTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKKyAgICBURVNU
X0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIDAsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChy
LCBJbnRSZWN0KC0xLCAwLCAyLCAyKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgt
MSwgLTEsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIC0xLCAyLCAy
KSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgtMSwgLTEsIDMsIDMpKTsKKworICAg
IHIudW5pdGUoSW50UmVjdCgwLCAwLCAzLCAzKSk7CisgICAgci51bml0ZShJbnRSZWN0KDEwLCAw
LCAzLCAzKSk7CisgICAgci51bml0ZShJbnRSZWN0KDAsIDEwLCAxMywgMykpOworICAgIFRFU1Rf
Tk9fSU5URVJTRUNUKHIsIEludFJlY3QoKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVj
dCgxLCAxLCAxLCAxKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgwLCAwLCAyLCAy
KSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgxLCAwLCAyLCAyKSk7CisgICAgVEVT
VF9JTlRFUlNFQ1QociwgSW50UmVjdCgxLCAxLCAyLCAyKSk7CisgICAgVEVTVF9JTlRFUlNFQ1Qo
ciwgSW50UmVjdCgwLCAxLCAyLCAyKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgw
LCAwLCAzLCAzKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgtMSwgLTEsIDIsIDIp
KTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDIsIC0xLCAyLCAyKSk7CisgICAgVEVT
VF9JTlRFUlNFQ1QociwgSW50UmVjdCgyLCAyLCAyLCAyKSk7CisgICAgVEVTVF9JTlRFUlNFQ1Qo
ciwgSW50UmVjdCgtMSwgMiwgMiwgMikpOworCisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVj
dCgxMSwgMSwgMSwgMSkpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMTAsIDAsIDIs
IDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDExLCAwLCAyLCAyKSk7CisgICAg
VEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgxMSwgMSwgMiwgMikpOworICAgIFRFU1RfSU5URVJT
RUNUKHIsIEludFJlY3QoMTAsIDEsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRS
ZWN0KDEwLCAwLCAzLCAzKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCg5LCAtMSwg
MiwgMikpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMTIsIC0xLCAyLCAyKSk7Cisg
ICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgxMiwgMiwgMiwgMikpOworICAgIFRFU1RfSU5U
RVJTRUNUKHIsIEludFJlY3QoOSwgMiwgMiwgMikpOworCisgICAgVEVTVF9JTlRFUlNFQ1Qociwg
SW50UmVjdCgwLCAtMSwgMTMsIDUpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDEs
IC0xLCAxMSwgNSkpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMiwgLTEsIDksIDUp
KTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDIsIC0xLCA4LCA1KSk7CisgICAgVEVT
VF9JTlRFUlNFQ1QociwgSW50UmVjdCgzLCAtMSwgOCwgNSkpOworICAgIFRFU1RfTk9fSU5URVJT
RUNUKHIsIEludFJlY3QoMywgLTEsIDcsIDUpKTsKKworICAgIFRFU1RfSU5URVJTRUNUKHIsIElu
dFJlY3QoMCwgMSwgMTMsIDEpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDEsIDEs
IDExLCAxKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgyLCAxLCA5LCAxKSk7Cisg
ICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgyLCAxLCA4LCAxKSk7CisgICAgVEVTVF9JTlRF
UlNFQ1QociwgSW50UmVjdCgzLCAxLCA4LCAxKSk7CisgICAgVEVTVF9OT19JTlRFUlNFQ1Qociwg
SW50UmVjdCgzLCAxLCA3LCAxKSk7CisKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAs
IDAsIDEzLCAxMykpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMCwgMSwgMTMsIDEx
KSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgwLCAyLCAxMywgOSkpOworICAgIFRF
U1RfSU5URVJTRUNUKHIsIEludFJlY3QoMCwgMiwgMTMsIDgpKTsKKyAgICBURVNUX0lOVEVSU0VD
VChyLCBJbnRSZWN0KDAsIDMsIDEzLCA4KSk7CisgICAgVEVTVF9OT19JTlRFUlNFQ1QociwgSW50
UmVjdCgwLCAzLCAxMywgNykpOworfQorCisjZGVmaW5lIFRFU1RfTk9fQ09OVEFJTlMoYSwgYikg
ICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJlZ2lvbiBh
ciA9IGE7ICAgICAgICAgICAgICAgICBcCisgICAgUmVnaW9uIGJyID0gYjsgICAgICAgICAgICAg
ICAgIFwKKyAgICBFWFBFQ1RfRkFMU0UoYXIuY29udGFpbnMoYnIpKTsgXAorfQorCisjZGVmaW5l
IFRFU1RfQ09OVEFJTlMoYSwgYikgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBSZWdpb24gYXIgPSBhOyAgICAgICAgICAgICAgICBcCisgICAgUmVnaW9u
IGJyID0gYjsgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9UUlVFKGFyLmNvbnRhaW5zKGJy
KSk7IFwKK30KKworVEVTVChSZWdpb25UZXN0LCBjb250YWluc1JlZ2lvbikKK3sKKyAgICBURVNU
X0NPTlRBSU5TKEludFJlY3QoKSwgSW50UmVjdCgpKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKElu
dFJlY3QoKSwgSW50UmVjdCgwLCAwLCAxLCAxKSk7CisgICAgVEVTVF9OT19DT05UQUlOUyhJbnRS
ZWN0KCksIEludFJlY3QoMSwgMSwgMSwgMSkpOworCisgICAgVEVTVF9OT19DT05UQUlOUyhJbnRS
ZWN0KDEwLCAxMCwgMSwgMSksIEludFJlY3QoMTEsIDEwLCAxLCAxKSk7CisgICAgVEVTVF9OT19D
T05UQUlOUyhJbnRSZWN0KDEwLCAxMCwgMSwgMSksIEludFJlY3QoMTAsIDExLCAxLCAxKSk7Cisg
ICAgVEVTVF9OT19DT05UQUlOUyhJbnRSZWN0KDEwLCAxMCwgMSwgMSksIEludFJlY3QoOSwgMTAs
IDEsIDEpKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCAxLCAxKSwgSW50
UmVjdCgxMCwgOSwgMSwgMSkpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgxMCwgMTAs
IDEsIDEpLCBJbnRSZWN0KDksIDksIDIsIDIpKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJl
Y3QoMTAsIDEwLCAxLCAxKSwgSW50UmVjdCgxMCwgOSwgMiwgMikpOworICAgIFRFU1RfTk9fQ09O
VEFJTlMoSW50UmVjdCgxMCwgMTAsIDEsIDEpLCBJbnRSZWN0KDksIDEwLCAyLCAyKSk7CisgICAg
VEVTVF9OT19DT05UQUlOUyhJbnRSZWN0KDEwLCAxMCwgMSwgMSksIEludFJlY3QoMTAsIDEwLCAy
LCAyKSk7CisgICAgVEVTVF9OT19DT05UQUlOUyhJbnRSZWN0KDEwLCAxMCwgMSwgMSksIEludFJl
Y3QoOSwgOSwgMywgMykpOworCisgICAgUmVnaW9uIGhMaW5lczsKKyAgICBmb3IgKGludCBpID0g
MTA7IGkgPCAyMDsgaSArPSAyKQorICAgICAgICBoTGluZXMudW5pdGUoSW50UmVjdChpLCAxMCwg
MSwgMTApKTsKKworICAgIFRFU1RfQ09OVEFJTlMoSW50UmVjdCgxMCwgMTAsIDksIDEwKSwgaExp
bmVzKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCA5LCA5KSwgaExpbmVz
KTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDExLCA5LCA5KSwgaExpbmVzKTsK
KyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCA4LCAxMCksIGhMaW5lcyk7Cisg
ICAgVEVTVF9OT19DT05UQUlOUyhJbnRSZWN0KDExLCAxMCwgOCwgMTApLCBoTGluZXMpOworCisg
ICAgUmVnaW9uIHZMaW5lczsKKyAgICBmb3IgKGludCBpID0gMTA7IGkgPCAyMDsgaSArPSAyKQor
ICAgICAgICB2TGluZXMudW5pdGUoSW50UmVjdCgxMCwgaSwgMTAsIDEpKTsKKworICAgIFRFU1Rf
Q09OVEFJTlMoSW50UmVjdCgxMCwgMTAsIDEwLCA5KSwgdkxpbmVzKTsKKyAgICBURVNUX05PX0NP
TlRBSU5TKEludFJlY3QoMTAsIDEwLCA5LCA5KSwgdkxpbmVzKTsKKyAgICBURVNUX05PX0NPTlRB
SU5TKEludFJlY3QoMTEsIDEwLCA5LCA5KSwgdkxpbmVzKTsKKyAgICBURVNUX05PX0NPTlRBSU5T
KEludFJlY3QoMTAsIDEwLCAxMCwgOCksIHZMaW5lcyk7CisgICAgVEVTVF9OT19DT05UQUlOUyhJ
bnRSZWN0KDEwLCAxMSwgMTAsIDgpLCB2TGluZXMpOworCisgICAgUmVnaW9uIGdyaWQ7CisgICAg
Zm9yIChpbnQgaSA9IDEwOyBpIDwgMjA7IGkgKz0gMikKKyAgICAgICAgZm9yIChpbnQgaiA9IDEw
OyBqIDwgMjA7IGogKz0gMikKKyAgICAgICAgICAgIGdyaWQudW5pdGUoSW50UmVjdChpLCBqLCAx
LCAxKSk7CisKKyAgICBURVNUX0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCA5LCA5KSwgZ3JpZCk7
CisgICAgVEVTVF9OT19DT05UQUlOUyhJbnRSZWN0KDEwLCAxMCwgOSwgOCksIGdyaWQpOworICAg
IFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgxMCwgMTEsIDksIDgpLCBncmlkKTsKKyAgICBURVNU
X05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCA4LCA5KSwgZ3JpZCk7CisgICAgVEVTVF9OT19D
T05UQUlOUyhJbnRSZWN0KDExLCAxMCwgOCwgOSksIGdyaWQpOworCisgICAgVEVTVF9DT05UQUlO
UyhoTGluZXMsIGhMaW5lcyk7CisgICAgVEVTVF9DT05UQUlOUyh2TGluZXMsIHZMaW5lcyk7Cisg
ICAgVEVTVF9OT19DT05UQUlOUyh2TGluZXMsIGhMaW5lcyk7CisgICAgVEVTVF9OT19DT05UQUlO
UyhoTGluZXMsIHZMaW5lcyk7CisgICAgVEVTVF9DT05UQUlOUyhncmlkLCBncmlkKTsKKyAgICBU
RVNUX0NPTlRBSU5TKGhMaW5lcywgZ3JpZCk7CisgICAgVEVTVF9DT05UQUlOUyh2TGluZXMsIGdy
aWQpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoZ3JpZCwgaExpbmVzKTsKKyAgICBURVNUX05PX0NP
TlRBSU5TKGdyaWQsIHZMaW5lcyk7CisKKyAgICBmb3IgKGludCBpID0gMTA7IGkgPCAyMDsgaSAr
PSAyKQorICAgICAgICBURVNUX0NPTlRBSU5TKGhMaW5lcywgSW50UmVjdChpLCAxMCwgMSwgMTAp
KTsKKworICAgIGZvciAoaW50IGkgPSAxMDsgaSA8IDIwOyBpICs9IDIpCisgICAgICAgIFRFU1Rf
Q09OVEFJTlModkxpbmVzLCBJbnRSZWN0KDEwLCBpLCAxMCwgMSkpOworCisgICAgZm9yIChpbnQg
aSA9IDEwOyBpIDwgMjA7IGkgKz0gMikKKyAgICAgICAgZm9yIChpbnQgaiA9IDEwOyBqIDwgMjA7
IGogKz0gMikKKyAgICAgICAgICAgIFRFU1RfQ09OVEFJTlMoZ3JpZCwgSW50UmVjdChpLCBqLCAx
LCAxKSk7CisKKyAgICBSZWdpb24gY29udGFpbmVyOworICAgIGNvbnRhaW5lci51bml0ZShJbnRS
ZWN0KDAsIDAsIDQwLCAyMCkpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDIwLCA0
MSwgMjApKTsKKyAgICBURVNUX0NPTlRBSU5TKGNvbnRhaW5lciwgSW50UmVjdCg1LCA1LCAzMCwg
MzApKTsKKworICAgIGNvbnRhaW5lciA9IFJlZ2lvbigpOworICAgIGNvbnRhaW5lci51bml0ZShJ
bnRSZWN0KDAsIDAsIDEwLCAxMCkpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDMw
LCAxMCwgMTApKTsKKyAgICBjb250YWluZXIudW5pdGUoSW50UmVjdCgzMCwgMzAsIDEwLCAxMCkp
OworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDMwLCAwLCAxMCwgMTApKTsKKyAgICBURVNU
X05PX0NPTlRBSU5TKGNvbnRhaW5lciwgSW50UmVjdCg1LCA1LCAzMCwgMzApKTsKKworICAgIGNv
bnRhaW5lciA9IFJlZ2lvbigpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDAsIDEw
LCAxMCkpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDMwLCAxMCwgMTApKTsKKyAg
ICBjb250YWluZXIudW5pdGUoSW50UmVjdCgzMCwgMCwgMTAsIDQwKSk7CisgICAgVEVTVF9OT19D
T05UQUlOUyhjb250YWluZXIsIEludFJlY3QoNSwgNSwgMzAsIDMwKSk7CisKKyAgICBjb250YWlu
ZXIgPSBSZWdpb24oKTsKKyAgICBjb250YWluZXIudW5pdGUoSW50UmVjdCgzMCwgMCwgMTAsIDEw
KSk7CisgICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMzAsIDMwLCAxMCwgMTApKTsKKyAgICBj
b250YWluZXIudW5pdGUoSW50UmVjdCgwLCAwLCAxMCwgNDApKTsKKyAgICBURVNUX05PX0NPTlRB
SU5TKGNvbnRhaW5lciwgSW50UmVjdCg1LCA1LCAzMCwgMzApKTsKKworICAgIGNvbnRhaW5lciA9
IFJlZ2lvbigpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDAsIDEwLCA0MCkpOwor
ICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDMwLCAwLCAxMCwgNDApKTsKKyAgICBURVNUX05P
X0NPTlRBSU5TKGNvbnRhaW5lciwgSW50UmVjdCg1LCA1LCAzMCwgMzApKTsKKworICAgIGNvbnRh
aW5lciA9IFJlZ2lvbigpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDAsIDQwLCA0
MCkpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoY29udGFpbmVyLCBJbnRSZWN0KDEwLCAtMSwgMjAs
IDEwKSk7CisKKyAgICBjb250YWluZXIgPSBSZWdpb24oKTsKKyAgICBjb250YWluZXIudW5pdGUo
SW50UmVjdCgwLCAwLCA0MCwgNDApKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKGNvbnRhaW5lciwg
SW50UmVjdCgxMCwgMzEsIDIwLCAxMCkpOworCisgICAgY29udGFpbmVyID0gUmVnaW9uKCk7Cisg
ICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMCwgNDAsIDIwKSk7CisgICAgY29udGFpbmVy
LnVuaXRlKEludFJlY3QoMCwgMjAsIDQxLCAyMCkpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoY29u
dGFpbmVyLCBJbnRSZWN0KC0xLCAxMCwgMTAsIDIwKSk7CisKKyAgICBjb250YWluZXIgPSBSZWdp
b24oKTsKKyAgICBjb250YWluZXIudW5pdGUoSW50UmVjdCgwLCAwLCA0MCwgMjApKTsKKyAgICBj
b250YWluZXIudW5pdGUoSW50UmVjdCgwLCAyMCwgNDEsIDIwKSk7CisgICAgVEVTVF9OT19DT05U
QUlOUyhjb250YWluZXIsIEludFJlY3QoMzEsIDEwLCAxMCwgMjApKTsKKworICAgIGNvbnRhaW5l
ciA9IFJlZ2lvbigpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDAsIDQwLCA0MCkp
OworICAgIGNvbnRhaW5lci5zdWJ0cmFjdChJbnRSZWN0KDAsIDIwLCA2MCwgMCkpOworICAgIFRF
U1RfTk9fQ09OVEFJTlMoY29udGFpbmVyLCBJbnRSZWN0KDMxLCAxMCwgMTAsIDIwKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>140060</attachid>
            <date>2012-05-03 12:02:00 -0700</date>
            <delta_ts>2012-05-03 12:02:00 -0700</delta_ts>
            <desc>perf demo layout test</desc>
            <filename>overlap-many-children.html</filename>
            <type>text/html</type>
            <size>2466</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c3R5bGU+CiAgICAuY29tcG9zaXRlZCB7CiAgICAgICAgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAg
ICAgIHdpZHRoOiAyMHB4OwogICAgICAgIGhlaWdodDogMjBweDsKICAgIH0KCiAgICAub3Zlcmxh
cCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHdpZHRoOiAyMHB4OwogICAg
ICAgIGhlaWdodDogMjBweDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKICAgIH0K
CiAgICAjbGF5ZXJ0cmVlIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVm
dDogMTAwMDBweDsKICAgICAgICB0b3A6IDBweDsKICAgIH0KCiAgICBib2R5IHsKICAgICAgICBv
dmVyZmxvdzogaGlkZGVuOwogICAgfQoKPC9zdHlsZT4KCjxzY3JpcHQ+CiAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCh0cnVlKTsKICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CiAgICB9CgogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigp
IHsKICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRh
aW5lciIpOwoKICAgICAgICAvLyBDb25zdHJ1Y3QgYSBncmlkIG9mIGNvbXBvc2l0ZWQgbGF5ZXJz
LgogICAgICAgIHZhciBudW1EaXZzID0gMTAwMDsKICAgICAgICB2YXIgeFJhbmdlID0gNjAwOwog
ICAgICAgIHZhciB5UmFuZ2UgPSA2MDA7CiAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCB5UmFu
Z2U7IHkgKz0gNDApIHsKICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB4UmFuZ2U7IHgg
Kz0gNDApIHsKICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJESVYiKTsKICAgICAgICAgICAgICAgIGRpdi5jbGFzc05hbWUgPSAiY29tcG9zaXRlZCI7CiAg
ICAgICAgICAgICAgICBkaXYuc3R5bGUubGVmdCA9IHggKyAicHgiOwogICAgICAgICAgICAgICAg
ZGl2LnN0eWxlLnRvcCA9IHkgKyAicHgiOwogICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVu
ZENoaWxkKGRpdik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBudW1EaXZz
ID0gMTAwMDsKICAgICAgICB2YXIgeCA9IDA7CiAgICAgICAgdmFyIHkgPSAwOwogICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbnVtRGl2czsgaSsrKSB7CiAgICAgICAgICAgIHZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTsKICAgICAgICAgICAgZGl2LmNsYXNzTmFtZSA9
ICJvdmVybGFwIjsKCiAgICAgICAgICAgIGlmIChpICUgMyA9PSAwKSB7CgkgICAgICAgIC8vIENv
bnRhaW5lZCBpbiB0aGUgZ3JpZAogICAgICAgICAgICAgICAgZGl2LnN0eWxlLmxlZnQgPSB4ICsg
InB4IjsKICAgICAgICAgICAgICAgIGRpdi5zdHlsZS50b3AgPSB5ICsgInB4IjsKICAgICAgICAg
ICAgfSBlbHNlIGlmIChpICUgMyA9PSAxKSB7CiAgICAgICAgICAgICAgICAvLyBJbnRlcnNlY3Rz
IHRoZSBncmlkCiAgICAgICAgICAgICAgICBkaXYuc3R5bGUubGVmdCA9ICh4ICsgMTApICsgInB4
IjsKICAgICAgICAgICAgICAgIGRpdi5zdHlsZS50b3AgPSAoeSArIDEwKSArICJweCI7CiAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBEb2VzIG5vdCBpbnRlcnNlY3QgdGhl
IGdyaWQKICAgICAgICAgICAgICAgIGRpdi5zdHlsZS5sZWZ0ID0gKHggKyAyMCkgKyAicHgiOwog
ICAgICAgICAgICAgICAgZGl2LnN0eWxlLnRvcCA9ICh5ICsgMjApICsgInB4IjsKICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGRpdik7CiAgICAgICAgICAg
IHggPSB4ICsgNDA7CiAgICAgICAgICAgIGlmICh4ID49IHhSYW5nZSkgewogICAgICAgICAgICAg
ICAgeCA9IDA7CiAgICAgICAgICAgICAgICB5ICs9IDQwOwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGlmICh5ID49IHlSYW5nZSkKICAgICAgICAgICAgICAgIHkgPSAwOwogICAgICAgIH0KCiAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibGF5ZXJ0cmVlIikuaW5uZXJUZXh0ID0gbGF5b3V0VGVzdENv
bnRyb2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7CiAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKICAgICAgICB9CiAgICB9LCBmYWxzZSk7Cjwvc2NyaXB0PgoKPGJv
ZHk+CiAgICA8IS0tIGNvbnRhaW5lciBmb3Igb3VyIG1hbnkgZGl2cyAtLT4KICAgIDxkaXYgaWQ9
ImNvbnRhaW5lciI+CiAgICA8L2Rpdj4KCiAgICA8cHJlIGlkPSJsYXllcnRyZWUiPjwvcHJlPgo8
L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140607</attachid>
            <date>2012-05-07 15:39:56 -0700</date>
            <delta_ts>2012-05-07 17:10:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81076-20120507183954.patch</filename>
            <type>text/plain</type>
            <size>17379</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY2ZjBmMmQ3N2E2OTlm
MzAxZGU3NzM1MGEzZWMyZjM0Njc0NGJlMy4uZjcyMzU5Zjg3MjdiZDg1MTBiNzIwYTYxZWMwNWJi
YjBjOTY2NmU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA0LTMwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZ2lvbjo6aW50ZXJz
ZWN0cygpIGFuZCBSZWdpb246OmNvbnRhaW5zKCkgYXJlIHNsb3cgZHVlIHRvIGNvcHkgb3Zlcmhl
YWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDc2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgorCisgICAgICAgIFRlc3Rp
bmcgY29udGFpbnMoKSBhbmQgaW50ZXJzZWN0cygpIHJlcXVpcmVzIGEgY29weSB3aGljaCBlbmRz
IHVwCisgICAgICAgIGludm9raW5nIGEgbWFsbG9jIG9uIHN1ZmZpY2llbnRseSBjb21wbGljYXRl
ZCB3ZWIgcGFnZXMsIGFuZCBzbG93cyBkb3duCisgICAgICAgIHRoZSB0ZXN0IHVubmVjZXNzYXJp
bHkuIFRoZXNlIG1ldGhvZHMgY2FuIGJlIGRvbmUgYnkgaXRlcmF0aW5nIG92ZXIgdGhlCisgICAg
ICAgIFJlZ2lvbjo6U2hhcGUgdmFsdWVzIHJhdGhlciB0aGFuIG1ha2luZyBhIGNvcHkgb2YgdGhl
IGVudGlyZSByZWdpb24gYW5kCisgICAgICAgIG1hbmlwdWxhdGluZyBpdC4KKworICAgICAgICBU
aGlzIHVzZXMgUmVnaW9uOjpTaGFwZTo6Y29tcGFyZVNoYXBlcygpIHRvIHdhbGsgdGhlIHF1ZXJ5
IHJlZ2lvbnMgYW5kCisgICAgICAgIGNvbXB1dGUgdGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJzZWN0
cyBvciBjb250YWlucyB0ZXN0cyB3aXRob3V0IG1ha2luZyBhCisgICAgICAgIGNvcHkuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgaW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBSZWdpb24g
b3ZlcmxhcCB0ZXN0aW5nIGZvcgorICAgICAgICBjb21wb3NpdGVkIGxheWVycywgYW5kIGFsbG93
cyBmb3IgdGVzdGluZyBjb250YWlucygpIGJlZm9yZSB1bml0ZSgpIHRvCisgICAgICAgIGF2b2lk
IHVubmVjZXNzYXJ5IGNvcGllcyBvZiB0aGUgUmVnaW9uIHdoZW4gaW5zZXJ0aW5nIGludG8gY29t
cGxleAorICAgICAgICBSZWdpb25zLiBXaXRoIGEgbGF5b3V0IHRlc3QgdGhhdCBoYXMgMjI1IGNv
bXBvc2l0ZWQgbGF5ZXJzLCBhbmQgdGVzdHMKKyAgICAgICAgUmVnaW9uLmludGVyc2VjdHMoKSBm
b3IgMTAwMCBsYXllcnMgYWJvdmUgdGhlbSwgdGhpcyBjaGFuZ2UgZGVjcmVhc2VzCisgICAgICAg
IHRoZSBydW5uaW5nIHRpbWUgb2YgdGhlIHRlc3QgYnkgMS4yJSBieSBhdm9pZGluZyBhIGNvcHkg
b2YgdGhlIDIyNQorICAgICAgICByZWN0cyBlYWNoIHRpbWUuCisKKyAgICAgICAgVW5pdCB0ZXN0
OiBSZWdpb25UZXN0LmludGVyc2VjdHNSZWdpb24KKyAgICAgICAgICAgICAgICAgICBSZWdpb25U
ZXN0LmNvbnRhaW5zUmVnaW9uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpjb250YWlucyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWdpb246OmludGVyc2VjdHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWdpb246OlNoYXBlOjpjb21wYXJlU2hhcGVzKToKKyAgICAgICAgKFJlZ2lvbjo6
U2hhcGU6OkNvbXBhcmVDb250YWluc09wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZWdp
b246OlNoYXBlOjpDb21wYXJlQ29udGFpbnNPcGVyYXRpb246OmFPdXRzaWRlQik6CisgICAgICAg
IChXZWJDb3JlOjpSZWdpb246OlNoYXBlOjpDb21wYXJlQ29udGFpbnNPcGVyYXRpb246OmJPdXRz
aWRlQSk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OlNoYXBlOjpDb21wYXJlQ29udGFpbnNP
cGVyYXRpb246OmFPdmVybGFwc0IpOgorICAgICAgICAoUmVnaW9uOjpTaGFwZTo6Q29tcGFyZUlu
dGVyc2VjdHNPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpTaGFwZTo6Q29t
cGFyZUludGVyc2VjdHNPcGVyYXRpb246OmFPdXRzaWRlQik6CisgICAgICAgIChXZWJDb3JlOjpS
ZWdpb246OlNoYXBlOjpDb21wYXJlSW50ZXJzZWN0c09wZXJhdGlvbjo6Yk91dHNpZGVBKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6U2hhcGU6OkNvbXBhcmVJbnRlcnNlY3RzT3BlcmF0aW9u
OjphT3ZlcmxhcHNCKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaDoKKyAg
ICAgICAgKFNoYXBlKToKKwogMjAxMi0wNS0wNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9w
aGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIG1lZGlhL3RyYWNrL3RyYWNrLWN1
ZS1yZW5kZXJpbmctc25hcC10by1saW5lcy1ub3Qtc2V0Lmh0bWwgZmFpbHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggNzczMTY1ZjM0MjhhOTgzODEwYWM5ZTc5ZmIwMjRmMzEyNWJjZmVj
YS4uYTczMjlhMTAzZmFmYWE5ZWU4MTYyNDUyOWJkZDYyOGVlMTRhMzAyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNC0zMCAgRGFuYSBKYW5zZW5z
ICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWdpb246OmludGVyc2VjdHMoKSBh
bmQgUmVnaW9uOjpjb250YWlucygpIGFyZSBzbG93IGR1ZSB0byBjb3B5IG92ZXJoZWFkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTA3NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICAqIHRlc3RzL1JlZ2lv
blRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToK
KwogMjAxMi0wNS0wNyAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZDogdGhlIHNhbWUgZml4IGluIGFub3RoZXIgZmlsZSBmb3IgY2hyb21p
dW0gd2luIGJ1aWxkLiAgQWRkaW5nIFdlYkNvcmUgbmFtZXNwYWNlIHRvIEZpbGVTeXN0ZW1UeXBl
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCmluZGV4IGM0
ZDJmNTYwMDVkMGJiYzhlNWVkMWQ3NDE0Mjc5M2RjNWVmMDgyYzguLjA4Zjg5OTZmNmFkM2QyZjVh
ZjU0ZmU0OWRlODY5Y2E0NDQwNmQ1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVnaW9uLmNwcApAQCAtNzAsNyArNzAsNyBAQCBib29sIFJlZ2lvbjo6Y29udGFpbnMo
Y29uc3QgUmVnaW9uJiByZWdpb24pIGNvbnN0CiAgICAgaWYgKCFtX2JvdW5kcy5jb250YWlucyhy
ZWdpb24ubV9ib3VuZHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gV2Vi
Q29yZTo6aW50ZXJzZWN0KHJlZ2lvbiwgKnRoaXMpID09IHJlZ2lvbjsKKyAgICByZXR1cm4gU2hh
cGU6OmNvbXBhcmVTaGFwZXM8U2hhcGU6OkNvbXBhcmVDb250YWluc09wZXJhdGlvbj4obV9zaGFw
ZSwgcmVnaW9uLm1fc2hhcGUpOwogfQogCiBib29sIFJlZ2lvbjo6Y29udGFpbnMoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdApAQCAtMTA2LDEwICsxMDYsNyBAQCBib29sIFJlZ2lvbjo6aW50
ZXJzZWN0cyhjb25zdCBSZWdpb24mIHJlZ2lvbikgY29uc3QKICAgICBpZiAoIW1fYm91bmRzLmlu
dGVyc2VjdHMocmVnaW9uLm1fYm91bmRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gRklYTUU6IHRoaXMgY291bGQgYmUgb3B0aW1pemVkLgotICAgIFJlZ2lvbiB0ZW1wUmVnaW9u
KCp0aGlzKTsKLSAgICB0ZW1wUmVnaW9uLmludGVyc2VjdChyZWdpb24pOwotICAgIHJldHVybiAh
dGVtcFJlZ2lvbi5pc0VtcHR5KCk7CisgICAgcmV0dXJuIFNoYXBlOjpjb21wYXJlU2hhcGVzPFNo
YXBlOjpDb21wYXJlSW50ZXJzZWN0c09wZXJhdGlvbj4obV9zaGFwZSwgcmVnaW9uLm1fc2hhcGUp
OwogfQogCiB1bnNpZ25lZCBSZWdpb246OnRvdGFsQXJlYSgpIGNvbnN0CkBAIC0xMjYsNiArMTIz
LDEwNCBAQCB1bnNpZ25lZCBSZWdpb246OnRvdGFsQXJlYSgpIGNvbnN0CiAgICAgcmV0dXJuIHRv
dGFsQXJlYTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ29tcGFyZU9wZXJhdGlvbj4KK2Jvb2wg
UmVnaW9uOjpTaGFwZTo6Y29tcGFyZVNoYXBlcyhjb25zdCBTaGFwZSYgYVNoYXBlLCBjb25zdCBT
aGFwZSYgYlNoYXBlKQoreworICAgIGJvb2wgcmVzdWx0ID0gQ29tcGFyZU9wZXJhdGlvbjo6ZGVm
YXVsdFJlc3VsdDsKKworICAgIFNoYXBlOjpTcGFuSXRlcmF0b3IgYVNwYW4gPSBhU2hhcGUuc3Bh
bnNfYmVnaW4oKTsKKyAgICBTaGFwZTo6U3Bhbkl0ZXJhdG9yIGFTcGFuRW5kID0gYVNoYXBlLnNw
YW5zX2VuZCgpOworICAgIFNoYXBlOjpTcGFuSXRlcmF0b3IgYlNwYW4gPSBiU2hhcGUuc3BhbnNf
YmVnaW4oKTsKKyAgICBTaGFwZTo6U3Bhbkl0ZXJhdG9yIGJTcGFuRW5kID0gYlNoYXBlLnNwYW5z
X2VuZCgpOworCisgICAgYm9vbCBhSGFkU2VnbWVudEluUHJldmlvdXNTcGFuID0gZmFsc2U7Cisg
ICAgYm9vbCBiSGFkU2VnbWVudEluUHJldmlvdXNTcGFuID0gZmFsc2U7CisgICAgd2hpbGUgKGFT
cGFuICE9IGFTcGFuRW5kICYmIGJTcGFuICE9IGJTcGFuRW5kKSB7CisgICAgICAgIGludCBhWSA9
IGFTcGFuLT55OworICAgICAgICBpbnQgYU1heFkgPSAoYVNwYW4gKyAxKS0+eTsKKyAgICAgICAg
aW50IGJZID0gYlNwYW4tPnk7CisgICAgICAgIGludCBiTWF4WSA9IChiU3BhbiArIDEpLT55Owor
CisgICAgICAgIFNoYXBlOjpTZWdtZW50SXRlcmF0b3IgYVNlZ21lbnQgPSBhU2hhcGUuc2VnbWVu
dHNfYmVnaW4oYVNwYW4pOworICAgICAgICBTaGFwZTo6U2VnbWVudEl0ZXJhdG9yIGFTZWdtZW50
RW5kID0gYVNoYXBlLnNlZ21lbnRzX2VuZChhU3Bhbik7CisgICAgICAgIFNoYXBlOjpTZWdtZW50
SXRlcmF0b3IgYlNlZ21lbnQgPSBiU2hhcGUuc2VnbWVudHNfYmVnaW4oYlNwYW4pOworICAgICAg
ICBTaGFwZTo6U2VnbWVudEl0ZXJhdG9yIGJTZWdtZW50RW5kID0gYlNoYXBlLnNlZ21lbnRzX2Vu
ZChiU3Bhbik7CisKKyAgICAgICAgLy8gTG9vayBmb3IgYSBub24tb3ZlcmxhcHBpbmcgcGFydCBv
ZiB0aGUgc3BhbnMuIElmIEIgaGFkIGEgc2VnbWVudCBpbiBpdHMgcHJldmlvdXMgc3BhbiwgdGhl
biB3ZSBhbHJlYWR5IHRlc3RlZCBBIGFnYWluc3QgQiB3aXRoaW4gdGhhdCBzcGFuLgorICAgICAg
ICBib29sIGFIYXNTZWdtZW50SW5TcGFuID0gYVNlZ21lbnQgIT0gYVNlZ21lbnRFbmQ7CisgICAg
ICAgIGJvb2wgYkhhc1NlZ21lbnRJblNwYW4gPSBiU2VnbWVudCAhPSBiU2VnbWVudEVuZDsKKyAg
ICAgICAgaWYgKGFZIDwgYlkgJiYgIWJIYWRTZWdtZW50SW5QcmV2aW91c1NwYW4gJiYgYUhhc1Nl
Z21lbnRJblNwYW4gJiYgQ29tcGFyZU9wZXJhdGlvbjo6YU91dHNpZGVCKHJlc3VsdCkpCisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBpZiAoYlkgPCBhWSAmJiAhYUhhZFNlZ21l
bnRJblByZXZpb3VzU3BhbiAmJiBiSGFzU2VnbWVudEluU3BhbiAmJiBDb21wYXJlT3BlcmF0aW9u
OjpiT3V0c2lkZUEocmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAg
ICAgYUhhZFNlZ21lbnRJblByZXZpb3VzU3BhbiA9IGFIYXNTZWdtZW50SW5TcGFuOworICAgICAg
ICBiSGFkU2VnbWVudEluUHJldmlvdXNTcGFuID0gYkhhc1NlZ21lbnRJblNwYW47CisKKyAgICAg
ICAgYm9vbCBzcGFuc092ZXJsYXAgPSBiTWF4WSA+IGFZICYmIGJZIDwgYU1heFk7CisgICAgICAg
IGlmIChzcGFuc092ZXJsYXApIHsKKyAgICAgICAgICAgIHdoaWxlIChhU2VnbWVudCAhPSBhU2Vn
bWVudEVuZCAmJiBiU2VnbWVudCAhPSBiU2VnbWVudEVuZCkgeworICAgICAgICAgICAgICAgIGlu
dCBhWCA9ICphU2VnbWVudDsKKyAgICAgICAgICAgICAgICBpbnQgYU1heFggPSAqKGFTZWdtZW50
ICsgMSk7CisgICAgICAgICAgICAgICAgaW50IGJYID0gKmJTZWdtZW50OworICAgICAgICAgICAg
ICAgIGludCBiTWF4WCA9ICooYlNlZ21lbnQgKyAxKTsKKworICAgICAgICAgICAgICAgIGJvb2wg
c2VnbWVudHNPdmVybGFwID0gYk1heFggPiBhWCAmJiBiWCA8IGFNYXhYOworICAgICAgICAgICAg
ICAgIGlmIChzZWdtZW50c092ZXJsYXAgJiYgQ29tcGFyZU9wZXJhdGlvbjo6YU92ZXJsYXBzQihy
ZXN1bHQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAg
ICAgIGlmIChhWCA8IGJYICYmIENvbXBhcmVPcGVyYXRpb246OmFPdXRzaWRlQihyZXN1bHQpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIGlmIChi
WCA8IGFYICYmIENvbXBhcmVPcGVyYXRpb246OmJPdXRzaWRlQShyZXN1bHQpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgICAgICAgICAgaWYgKGFNYXhYIDwg
Yk1heFgpCisgICAgICAgICAgICAgICAgICAgIGFTZWdtZW50ICs9IDI7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoYk1heFggPCBhTWF4WCkKKyAgICAgICAgICAgICAgICAgICAgYlNlZ21lbnQg
Kz0gMjsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYVNlZ21l
bnQgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgYlNlZ21lbnQgKz0gMjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhU2VnbWVudCAhPSBhU2Vn
bWVudEVuZCAmJiBDb21wYXJlT3BlcmF0aW9uOjphT3V0c2lkZUIocmVzdWx0KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgaWYgKGJTZWdtZW50ICE9IGJTZWdt
ZW50RW5kICYmIENvbXBhcmVPcGVyYXRpb246OmJPdXRzaWRlQShyZXN1bHQpKQorICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYU1heFkgPCBi
TWF4WSkKKyAgICAgICAgICAgIGFTcGFuICs9IDE7CisgICAgICAgIGVsc2UgaWYgKGJNYXhZIDwg
YU1heFkpCisgICAgICAgICAgICBiU3BhbiArPSAxOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGFTcGFuICs9IDE7CisgICAgICAgICAgICBiU3BhbiArPSAxOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGFTcGFuICE9IGFTcGFuRW5kICYmIGFTcGFuICsgMSAhPSBhU3BhbkVuZCAm
JiBDb21wYXJlT3BlcmF0aW9uOjphT3V0c2lkZUIocmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICBpZiAoYlNwYW4gIT0gYlNwYW5FbmQgJiYgYlNwYW4gKyAxICE9IGJTcGFuRW5k
ICYmIENvbXBhcmVPcGVyYXRpb246OmJPdXRzaWRlQShyZXN1bHQpKQorICAgICAgICByZXR1cm4g
cmVzdWx0OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RydWN0IFJlZ2lvbjo6U2hhcGU6
OkNvbXBhcmVDb250YWluc09wZXJhdGlvbiB7CisgICAgY29uc3Qgc3RhdGljIGJvb2wgZGVmYXVs
dFJlc3VsdCA9IHRydWU7CisgICAgaW5saW5lIHN0YXRpYyBib29sIGFPdXRzaWRlQihib29sJiAv
KiByZXN1bHQgKi8pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgaW5saW5lIHN0YXRpYyBib29sIGJP
dXRzaWRlQShib29sJiByZXN1bHQpIHsgcmVzdWx0ID0gZmFsc2U7IHJldHVybiB0cnVlOyB9Cisg
ICAgaW5saW5lIHN0YXRpYyBib29sIGFPdmVybGFwc0IoYm9vbCYgLyogcmVzdWx0ICovKSB7IHJl
dHVybiBmYWxzZTsgfQorfTsKKworc3RydWN0IFJlZ2lvbjo6U2hhcGU6OkNvbXBhcmVJbnRlcnNl
Y3RzT3BlcmF0aW9uIHsKKyAgICBjb25zdCBzdGF0aWMgYm9vbCBkZWZhdWx0UmVzdWx0ID0gZmFs
c2U7CisgICAgaW5saW5lIHN0YXRpYyBib29sIGFPdXRzaWRlQihib29sJiAvKiByZXN1bHQgKi8p
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgaW5saW5lIHN0YXRpYyBib29sIGJPdXRzaWRlQShib29s
JiAvKiByZXN1bHQgKi8pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgaW5saW5lIHN0YXRpYyBib29s
IGFPdmVybGFwc0IoYm9vbCYgcmVzdWx0KSB7IHJlc3VsdCA9IHRydWU7IHJldHVybiB0cnVlOyB9
Cit9OworCiBSZWdpb246OlNoYXBlOjpTaGFwZSgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5oCmluZGV4IGE4NzI2OTU2N2E1YTIyMDAwNWFlOTRiNGRkODdh
YmQ5MTMxZWZkYzIuLjg5M2YxY2QxNjdmYjNkYzlmOWUxZWIzYzQwMjgyNjQ2NTQyYTNjNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCkBAIC05NSw2ICs5NSwx
MiBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBJbnRTaXplJik7CiAg
ICAgICAgIHZvaWQgc3dhcChTaGFwZSYpOwogCisgICAgICAgIHN0cnVjdCBDb21wYXJlQ29udGFp
bnNPcGVyYXRpb247CisgICAgICAgIHN0cnVjdCBDb21wYXJlSW50ZXJzZWN0c09wZXJhdGlvbjsK
KworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb21wYXJlT3BlcmF0aW9uPgorICAgICAgICBz
dGF0aWMgYm9vbCBjb21wYXJlU2hhcGVzKGNvbnN0IFNoYXBlJiBzaGFwZTEsIGNvbnN0IFNoYXBl
JiBzaGFwZTIpOworCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICB2b2lkIGR1bXAoKSBjb25zdDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9SZWdpb25U
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUmVnaW9uVGVzdC5jcHAKaW5k
ZXggZDIwMmFiNDBjZmJhNDk2YjdjZTVlMWU1NGM2YmI4Zjc4NjRlODViMS4uNjU3MTdiYmU4ZDA5
MWFkNjRiMzFhYmI2MmE5YTdlZjgyNTcxYzQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9SZWdpb25UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1JlZ2lvblRlc3QuY3BwCkBAIC0xMjQsNCArMTI0LDIxOSBAQCBURVNUKFJlZ2lvblRl
c3QsIGVtcHR5U3BhbikKICAgICAgICAgRVhQRUNUX0ZBTFNFKHJlY3RzW2ldLmlzRW1wdHkoKSk7
CiB9CiAKKyNkZWZpbmUgVEVTVF9OT19JTlRFUlNFQ1QoYSwgYikgICAgICBcCit7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJlZ2lvbiBhciA9IGE7ICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBSZWdpb24gYnIgPSBiOyAgICAgICAgICAgICAgICAgICBcCisgICAg
RVhQRUNUX0ZBTFNFKGFyLmludGVyc2VjdHMoYnIpKTsgXAorICAgIEVYUEVDVF9GQUxTRShici5p
bnRlcnNlY3RzKGFyKSk7IFwKK30KKworI2RlZmluZSBURVNUX0lOVEVSU0VDVChhLCBiKSAgICAg
ICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJlZ2lvbiBh
ciA9IGE7ICAgICAgICAgICAgICAgICAgXAorICAgIFJlZ2lvbiBiciA9IGI7ICAgICAgICAgICAg
ICAgICAgXAorICAgIEVYUEVDVF9UUlVFKGFyLmludGVyc2VjdHMoYnIpKTsgXAorICAgIEVYUEVD
VF9UUlVFKGJyLmludGVyc2VjdHMoYXIpKTsgXAorfQorCitURVNUKFJlZ2lvblRlc3QsIGludGVy
c2VjdHNSZWdpb24pCit7CisgICAgUmVnaW9uIHI7CisKKyAgICBURVNUX05PX0lOVEVSU0VDVChJ
bnRSZWN0KCksIEludFJlY3QoKSk7CisgICAgVEVTVF9OT19JTlRFUlNFQ1QoSW50UmVjdCgpLCBJ
bnRSZWN0KDAsIDAsIDEsIDEpKTsKKyAgICBURVNUX05PX0lOVEVSU0VDVChJbnRSZWN0KCksIElu
dFJlY3QoMSwgMSwgMSwgMSkpOworCisgICAgci51bml0ZShJbnRSZWN0KDAsIDAsIDEsIDEpKTsK
KyAgICBURVNUX05PX0lOVEVSU0VDVChyLCBJbnRSZWN0KCkpOworICAgIFRFU1RfSU5URVJTRUNU
KHIsIEludFJlY3QoMCwgMCwgMSwgMSkpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3Qo
MCwgMCwgMiwgMikpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoLTEsIDAsIDIsIDIp
KTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KC0xLCAtMSwgMiwgMikpOworICAgIFRF
U1RfSU5URVJTRUNUKHIsIEludFJlY3QoMCwgLTEsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VD
VChyLCBJbnRSZWN0KC0xLCAtMSwgMywgMykpOworCisgICAgci51bml0ZShJbnRSZWN0KDAsIDAs
IDMsIDMpKTsKKyAgICByLnVuaXRlKEludFJlY3QoMTAsIDAsIDMsIDMpKTsKKyAgICByLnVuaXRl
KEludFJlY3QoMCwgMTAsIDEzLCAzKSk7CisgICAgVEVTVF9OT19JTlRFUlNFQ1QociwgSW50UmVj
dCgpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDEsIDEsIDEsIDEpKTsKKyAgICBU
RVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIDAsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VD
VChyLCBJbnRSZWN0KDEsIDAsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0
KDEsIDEsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIDEsIDIsIDIp
KTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIDAsIDMsIDMpKTsKKyAgICBURVNU
X0lOVEVSU0VDVChyLCBJbnRSZWN0KC0xLCAtMSwgMiwgMikpOworICAgIFRFU1RfSU5URVJTRUNU
KHIsIEludFJlY3QoMiwgLTEsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0
KDIsIDIsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KC0xLCAyLCAyLCAy
KSk7CisKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDExLCAxLCAxLCAxKSk7CisgICAg
VEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgxMCwgMCwgMiwgMikpOworICAgIFRFU1RfSU5URVJT
RUNUKHIsIEludFJlY3QoMTEsIDAsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRS
ZWN0KDExLCAxLCAyLCAyKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgxMCwgMSwg
MiwgMikpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMTAsIDAsIDMsIDMpKTsKKyAg
ICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDksIC0xLCAyLCAyKSk7CisgICAgVEVTVF9JTlRF
UlNFQ1QociwgSW50UmVjdCgxMiwgLTEsIDIsIDIpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJ
bnRSZWN0KDEyLCAyLCAyLCAyKSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCg5LCAy
LCAyLCAyKSk7CisKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIC0xLCAxMywgNSkp
OworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMSwgLTEsIDExLCA1KSk7CisgICAgVEVT
VF9JTlRFUlNFQ1QociwgSW50UmVjdCgyLCAtMSwgOSwgNSkpOworICAgIFRFU1RfSU5URVJTRUNU
KHIsIEludFJlY3QoMiwgLTEsIDgsIDUpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0
KDMsIC0xLCA4LCA1KSk7CisgICAgVEVTVF9OT19JTlRFUlNFQ1QociwgSW50UmVjdCgzLCAtMSwg
NywgNSkpOworCisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVjdCgwLCAxLCAxMywgMSkpOwor
ICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMSwgMSwgMTEsIDEpKTsKKyAgICBURVNUX0lO
VEVSU0VDVChyLCBJbnRSZWN0KDIsIDEsIDksIDEpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJ
bnRSZWN0KDIsIDEsIDgsIDEpKTsKKyAgICBURVNUX0lOVEVSU0VDVChyLCBJbnRSZWN0KDMsIDEs
IDgsIDEpKTsKKyAgICBURVNUX05PX0lOVEVSU0VDVChyLCBJbnRSZWN0KDMsIDEsIDcsIDEpKTsK
KworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMCwgMCwgMTMsIDEzKSk7CisgICAgVEVT
VF9JTlRFUlNFQ1QociwgSW50UmVjdCgwLCAxLCAxMywgMTEpKTsKKyAgICBURVNUX0lOVEVSU0VD
VChyLCBJbnRSZWN0KDAsIDIsIDEzLCA5KSk7CisgICAgVEVTVF9JTlRFUlNFQ1QociwgSW50UmVj
dCgwLCAyLCAxMywgOCkpOworICAgIFRFU1RfSU5URVJTRUNUKHIsIEludFJlY3QoMCwgMywgMTMs
IDgpKTsKKyAgICBURVNUX05PX0lOVEVSU0VDVChyLCBJbnRSZWN0KDAsIDMsIDEzLCA3KSk7Cit9
CisKKyNkZWZpbmUgVEVTVF9OT19DT05UQUlOUyhhLCBiKSAgICAgXAoreyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgUmVnaW9uIGFyID0gYTsgICAgICAgICAgICAgICAg
IFwKKyAgICBSZWdpb24gYnIgPSBiOyAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxT
RShhci5jb250YWlucyhicikpOyBcCit9CisKKyNkZWZpbmUgVEVTVF9DT05UQUlOUyhhLCBiKSAg
ICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFJlZ2lvbiBh
ciA9IGE7ICAgICAgICAgICAgICAgIFwKKyAgICBSZWdpb24gYnIgPSBiOyAgICAgICAgICAgICAg
ICBcCisgICAgRVhQRUNUX1RSVUUoYXIuY29udGFpbnMoYnIpKTsgXAorfQorCitURVNUKFJlZ2lv
blRlc3QsIGNvbnRhaW5zUmVnaW9uKQoreworICAgIFRFU1RfQ09OVEFJTlMoSW50UmVjdCgpLCBJ
bnRSZWN0KCkpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgpLCBJbnRSZWN0KDAsIDAs
IDEsIDEpKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoKSwgSW50UmVjdCgxLCAxLCAx
LCAxKSk7CisKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDEwLCAxLCAxKSwgSW50
UmVjdCgxMSwgMTAsIDEsIDEpKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDEw
LCAxLCAxKSwgSW50UmVjdCgxMCwgMTEsIDEsIDEpKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKElu
dFJlY3QoMTAsIDEwLCAxLCAxKSwgSW50UmVjdCg5LCAxMCwgMSwgMSkpOworICAgIFRFU1RfTk9f
Q09OVEFJTlMoSW50UmVjdCgxMCwgMTAsIDEsIDEpLCBJbnRSZWN0KDEwLCA5LCAxLCAxKSk7Cisg
ICAgVEVTVF9OT19DT05UQUlOUyhJbnRSZWN0KDEwLCAxMCwgMSwgMSksIEludFJlY3QoOSwgOSwg
MiwgMikpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgxMCwgMTAsIDEsIDEpLCBJbnRS
ZWN0KDEwLCA5LCAyLCAyKSk7CisgICAgVEVTVF9OT19DT05UQUlOUyhJbnRSZWN0KDEwLCAxMCwg
MSwgMSksIEludFJlY3QoOSwgMTAsIDIsIDIpKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJl
Y3QoMTAsIDEwLCAxLCAxKSwgSW50UmVjdCgxMCwgMTAsIDIsIDIpKTsKKyAgICBURVNUX05PX0NP
TlRBSU5TKEludFJlY3QoMTAsIDEwLCAxLCAxKSwgSW50UmVjdCg5LCA5LCAzLCAzKSk7CisKKyAg
ICBSZWdpb24gaExpbmVzOworICAgIGZvciAoaW50IGkgPSAxMDsgaSA8IDIwOyBpICs9IDIpCisg
ICAgICAgIGhMaW5lcy51bml0ZShJbnRSZWN0KGksIDEwLCAxLCAxMCkpOworCisgICAgVEVTVF9D
T05UQUlOUyhJbnRSZWN0KDEwLCAxMCwgOSwgMTApLCBoTGluZXMpOworICAgIFRFU1RfTk9fQ09O
VEFJTlMoSW50UmVjdCgxMCwgMTAsIDksIDkpLCBoTGluZXMpOworICAgIFRFU1RfTk9fQ09OVEFJ
TlMoSW50UmVjdCgxMCwgMTEsIDksIDkpLCBoTGluZXMpOworICAgIFRFU1RfTk9fQ09OVEFJTlMo
SW50UmVjdCgxMCwgMTAsIDgsIDEwKSwgaExpbmVzKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKElu
dFJlY3QoMTEsIDEwLCA4LCAxMCksIGhMaW5lcyk7CisKKyAgICBSZWdpb24gdkxpbmVzOworICAg
IGZvciAoaW50IGkgPSAxMDsgaSA8IDIwOyBpICs9IDIpCisgICAgICAgIHZMaW5lcy51bml0ZShJ
bnRSZWN0KDEwLCBpLCAxMCwgMSkpOworCisgICAgVEVTVF9DT05UQUlOUyhJbnRSZWN0KDEwLCAx
MCwgMTAsIDkpLCB2TGluZXMpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgxMCwgMTAs
IDksIDkpLCB2TGluZXMpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgxMSwgMTAsIDks
IDkpLCB2TGluZXMpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgxMCwgMTAsIDEwLCA4
KSwgdkxpbmVzKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTAsIDExLCAxMCwgOCks
IHZMaW5lcyk7CisKKyAgICBSZWdpb24gZ3JpZDsKKyAgICBmb3IgKGludCBpID0gMTA7IGkgPCAy
MDsgaSArPSAyKQorICAgICAgICBmb3IgKGludCBqID0gMTA7IGogPCAyMDsgaiArPSAyKQorICAg
ICAgICAgICAgZ3JpZC51bml0ZShJbnRSZWN0KGksIGosIDEsIDEpKTsKKworICAgIFRFU1RfQ09O
VEFJTlMoSW50UmVjdCgxMCwgMTAsIDksIDkpLCBncmlkKTsKKyAgICBURVNUX05PX0NPTlRBSU5T
KEludFJlY3QoMTAsIDEwLCA5LCA4KSwgZ3JpZCk7CisgICAgVEVTVF9OT19DT05UQUlOUyhJbnRS
ZWN0KDEwLCAxMSwgOSwgOCksIGdyaWQpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoSW50UmVjdCgx
MCwgMTAsIDgsIDkpLCBncmlkKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKEludFJlY3QoMTEsIDEw
LCA4LCA5KSwgZ3JpZCk7CisKKyAgICBURVNUX0NPTlRBSU5TKGhMaW5lcywgaExpbmVzKTsKKyAg
ICBURVNUX0NPTlRBSU5TKHZMaW5lcywgdkxpbmVzKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKHZM
aW5lcywgaExpbmVzKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKGhMaW5lcywgdkxpbmVzKTsKKyAg
ICBURVNUX0NPTlRBSU5TKGdyaWQsIGdyaWQpOworICAgIFRFU1RfQ09OVEFJTlMoaExpbmVzLCBn
cmlkKTsKKyAgICBURVNUX0NPTlRBSU5TKHZMaW5lcywgZ3JpZCk7CisgICAgVEVTVF9OT19DT05U
QUlOUyhncmlkLCBoTGluZXMpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoZ3JpZCwgdkxpbmVzKTsK
KworICAgIGZvciAoaW50IGkgPSAxMDsgaSA8IDIwOyBpICs9IDIpCisgICAgICAgIFRFU1RfQ09O
VEFJTlMoaExpbmVzLCBJbnRSZWN0KGksIDEwLCAxLCAxMCkpOworCisgICAgZm9yIChpbnQgaSA9
IDEwOyBpIDwgMjA7IGkgKz0gMikKKyAgICAgICAgVEVTVF9DT05UQUlOUyh2TGluZXMsIEludFJl
Y3QoMTAsIGksIDEwLCAxKSk7CisKKyAgICBmb3IgKGludCBpID0gMTA7IGkgPCAyMDsgaSArPSAy
KQorICAgICAgICBmb3IgKGludCBqID0gMTA7IGogPCAyMDsgaiArPSAyKQorICAgICAgICAgICAg
VEVTVF9DT05UQUlOUyhncmlkLCBJbnRSZWN0KGksIGosIDEsIDEpKTsKKworICAgIFJlZ2lvbiBj
b250YWluZXI7CisgICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMCwgNDAsIDIwKSk7Cisg
ICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMjAsIDQxLCAyMCkpOworICAgIFRFU1RfQ09O
VEFJTlMoY29udGFpbmVyLCBJbnRSZWN0KDUsIDUsIDMwLCAzMCkpOworCisgICAgY29udGFpbmVy
ID0gUmVnaW9uKCk7CisgICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMCwgMTAsIDEwKSk7
CisgICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMzAsIDEwLCAxMCkpOworICAgIGNvbnRh
aW5lci51bml0ZShJbnRSZWN0KDMwLCAzMCwgMTAsIDEwKSk7CisgICAgY29udGFpbmVyLnVuaXRl
KEludFJlY3QoMzAsIDAsIDEwLCAxMCkpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoY29udGFpbmVy
LCBJbnRSZWN0KDUsIDUsIDMwLCAzMCkpOworCisgICAgY29udGFpbmVyID0gUmVnaW9uKCk7Cisg
ICAgY29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMCwgMTAsIDEwKSk7CisgICAgY29udGFpbmVy
LnVuaXRlKEludFJlY3QoMCwgMzAsIDEwLCAxMCkpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRS
ZWN0KDMwLCAwLCAxMCwgNDApKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKGNvbnRhaW5lciwgSW50
UmVjdCg1LCA1LCAzMCwgMzApKTsKKworICAgIGNvbnRhaW5lciA9IFJlZ2lvbigpOworICAgIGNv
bnRhaW5lci51bml0ZShJbnRSZWN0KDMwLCAwLCAxMCwgMTApKTsKKyAgICBjb250YWluZXIudW5p
dGUoSW50UmVjdCgzMCwgMzAsIDEwLCAxMCkpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0
KDAsIDAsIDEwLCA0MCkpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoY29udGFpbmVyLCBJbnRSZWN0
KDUsIDUsIDMwLCAzMCkpOworCisgICAgY29udGFpbmVyID0gUmVnaW9uKCk7CisgICAgY29udGFp
bmVyLnVuaXRlKEludFJlY3QoMCwgMCwgMTAsIDQwKSk7CisgICAgY29udGFpbmVyLnVuaXRlKElu
dFJlY3QoMzAsIDAsIDEwLCA0MCkpOworICAgIFRFU1RfTk9fQ09OVEFJTlMoY29udGFpbmVyLCBJ
bnRSZWN0KDUsIDUsIDMwLCAzMCkpOworCisgICAgY29udGFpbmVyID0gUmVnaW9uKCk7CisgICAg
Y29udGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMCwgNDAsIDQwKSk7CisgICAgVEVTVF9OT19DT05U
QUlOUyhjb250YWluZXIsIEludFJlY3QoMTAsIC0xLCAyMCwgMTApKTsKKworICAgIGNvbnRhaW5l
ciA9IFJlZ2lvbigpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0KDAsIDAsIDQwLCA0MCkp
OworICAgIFRFU1RfTk9fQ09OVEFJTlMoY29udGFpbmVyLCBJbnRSZWN0KDEwLCAzMSwgMjAsIDEw
KSk7CisKKyAgICBjb250YWluZXIgPSBSZWdpb24oKTsKKyAgICBjb250YWluZXIudW5pdGUoSW50
UmVjdCgwLCAwLCA0MCwgMjApKTsKKyAgICBjb250YWluZXIudW5pdGUoSW50UmVjdCgwLCAyMCwg
NDEsIDIwKSk7CisgICAgVEVTVF9OT19DT05UQUlOUyhjb250YWluZXIsIEludFJlY3QoLTEsIDEw
LCAxMCwgMjApKTsKKworICAgIGNvbnRhaW5lciA9IFJlZ2lvbigpOworICAgIGNvbnRhaW5lci51
bml0ZShJbnRSZWN0KDAsIDAsIDQwLCAyMCkpOworICAgIGNvbnRhaW5lci51bml0ZShJbnRSZWN0
KDAsIDIwLCA0MSwgMjApKTsKKyAgICBURVNUX05PX0NPTlRBSU5TKGNvbnRhaW5lciwgSW50UmVj
dCgzMSwgMTAsIDEwLCAyMCkpOworCisgICAgY29udGFpbmVyID0gUmVnaW9uKCk7CisgICAgY29u
dGFpbmVyLnVuaXRlKEludFJlY3QoMCwgMCwgNDAsIDQwKSk7CisgICAgY29udGFpbmVyLnN1YnRy
YWN0KEludFJlY3QoMCwgMjAsIDYwLCAwKSk7CisgICAgVEVTVF9OT19DT05UQUlOUyhjb250YWlu
ZXIsIEludFJlY3QoMzEsIDEwLCAxMCwgMjApKTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>