<?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>157848</bug_id>
          
          <creation_ts>2016-05-18 10:43:53 -0700</creation_ts>
          <short_desc>[GTK][EFL] ImageBufferCairo should accept resolution factor</short_desc>
          <delta_ts>2016-06-24 16:08:01 -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>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>146731</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>alex</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>yoon</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1194321</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-18 10:43:53 -0700</bug_when>
    <thetext>In Cairo environment, device scale factor is transparently handled by HW side using cairo_surface_set_device_scale.
ImageBuffer ignores resolution factor now. So we Filter and FilterEffect should not consider that ImageBuffer&apos;s size is scaled.

This leads crash in kangax&apos;s ES6 compat table page in HiDPI PC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204140</commentid>
    <comment_count>1</comment_count>
      <attachid>281745</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-21 07:59:08 -0700</bug_when>
    <thetext>Created attachment 281745
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204141</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-21 08:00:42 -0700</bug_when>
    <thetext>Attachment 281745 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204142</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-21 08:01:29 -0700</bug_when>
    <thetext>Typical crashing page: ES6 compat table page.
https://kangax.github.io/compat-table/es6/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204164</commentid>
    <comment_count>4</comment_count>
      <attachid>281752</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-21 09:17:32 -0700</bug_when>
    <thetext>Created attachment 281752
Patch

WIP2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204230</commentid>
    <comment_count>5</comment_count>
      <attachid>281764</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-21 11:54:46 -0700</bug_when>
    <thetext>Created attachment 281764
Patch

WIP3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204543</commentid>
    <comment_count>6</comment_count>
      <attachid>281846</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-22 10:06:35 -0700</bug_when>
    <thetext>Created attachment 281846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205080</commentid>
    <comment_count>7</comment_count>
      <attachid>281846</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-24 08:45:32 -0700</bug_when>
    <thetext>Comment on attachment 281846
Patch

Thanks for your review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205089</commentid>
    <comment_count>8</comment_count>
      <attachid>281846</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-24 09:06:00 -0700</bug_when>
    <thetext>Comment on attachment 281846
Patch

Clearing flags on attachment: 281846

Committed r202421: &lt;http://trac.webkit.org/changeset/202421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205090</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-24 09:06:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281745</attachid>
            <date>2016-06-21 07:59:08 -0700</date>
            <delta_ts>2016-06-21 09:17:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157848-20160621235900.patch</filename>
            <type>text/plain</type>
            <size>12430</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODJlOWYxZjM5ZDgzMDAy
MjY1NzYzYjc3OGQ2ZjY3ZWUxN2E0NjVlNC4uZWU0MDgwOGJkYWU1MWMxZDE5NjBkM2ZkNGU1NDQ1
MmE1OTA5NTg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA2LTIxICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtdW0VGTF0g
RmlsdGVyIGFuZCBGaWx0ZXJFZmZlY3Qgc2hvdWxkIG5vdCBjb25zaWRlciBkZXZpY2Ugc2NhbGlu
ZyBpbiBDYWlybyBlbnZpcm9ubWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU3ODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyRGF0YTo6Y3JlYXRlQ29tcG9zaXRvckJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6OmNvcHlJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRJbWFnZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5VG9QbGF0Zm9ybVRleHR1cmUpOgorCiAyMDE2LTA2
LTIxICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJl
YW1lcl0gdmlkZW8gb3JpZW50YXRpb24gc3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRl
eCAwNDUzYTYyNTdmMGRlYzc5NGUzNzhmZWE1NjFjMmI3MTZlMzBhMmM2Li43MTJmMGY0MDgzY2Zj
MTMwYWE1NGMxYjllNDI4NjEzNWFjNWYzZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAt
MTIxLDYgKzEyMSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDb21wb3NpdG9yQnVm
ZmVyKCkKIAogICAgIGNhaXJvX2RldmljZV90KiBkZXZpY2UgPSBHTENvbnRleHQ6OnNoYXJpbmdD
b250ZXh0KCktPmNhaXJvRGV2aWNlKCk7CiAgICAgbV9jb21wb3NpdG9yU3VyZmFjZSA9IGFkb3B0
UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09O
VEVOVF9DT0xPUl9BTFBIQSwgbV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLndpZHRoKCksIG1f
c2l6ZS5oZWlnaHQoKSkpOworICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKG1fY29tcG9z
aXRvclN1cmZhY2UuZ2V0KCksIG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7
CiAgICAgbV9jb21wb3NpdG9yQ3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9jb21wb3NpdG9y
U3VyZmFjZS5nZXQoKSkpOwogICAgIGNhaXJvX3NldF9hbnRpYWxpYXMobV9jb21wb3NpdG9yQ3Iu
Z2V0KCksIENBSVJPX0FOVElBTElBU19OT05FKTsKIH0KQEAgLTE4NSwxNSArMTg2LDI1IEBAIHZv
aWQgSW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDYWlyb0dMU3VyZmFjZSgpCiB9CiAjZW5kaWYKIAot
SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgLyog
cmVzb2x1dGlvblNjYWxlICovLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIGJvb2wmIHN1Y2Nlc3MpCitJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgYm9vbCYgc3VjY2VzcykKICAgICA6IG1fZGF0YShJbnRTaXplKHNp
emUpLCByZW5kZXJpbmdNb2RlKQotICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX2xvZ2ljYWxT
aXplKHNpemUpCisgICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCiB7CiAg
ICAgc3VjY2VzcyA9IGZhbHNlOyAgLy8gTWFrZSBlYXJseSByZXR1cm4gbWVhbiBlcnJvci4KICAg
ICBpZiAobV9zaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgZmxvYXQgc2Nh
bGVkV2lkdGggPSBjZWlsZihtX3Jlc29sdXRpb25TY2FsZSAqIHNpemUud2lkdGgoKSk7CisgICAg
ZmxvYXQgc2NhbGVkSGVpZ2h0ID0gY2VpbGYobV9yZXNvbHV0aW9uU2NhbGUgKiBzaXplLmhlaWdo
dCgpKTsKKworICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYXV0b21hdGljYWxseSB1c2UgYSBsb3dl
ciByZXNvbHV0aW9uPworICAgIGlmICghRmxvYXRTaXplKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWln
aHQpLmlzRXhwcmVzc2libGVBc0ludFNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9z
aXplID0gSW50U2l6ZShzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTsKKyAgICBtX2RhdGEubV9z
aXplID0gbV9zaXplOworCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICAgICBp
ZiAobV9kYXRhLm1fcmVuZGVyaW5nTW9kZSA9PSBBY2NlbGVyYXRlZCkgewogICAgICAgICBtX2Rh
dGEuY3JlYXRlQ2Fpcm9HTFN1cmZhY2UoKTsKQEAgLTIwNCwxMSArMjE1LDEzIEBAIEltYWdlQnVm
ZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IC8qIHJlc29sdXRp
b25TY2FsZSAqLywgQ29sCiAjZWxzZQogICAgIEFTU0VSVChtX2RhdGEubV9yZW5kZXJpbmdNb2Rl
ICE9IEFjY2VsZXJhdGVkKTsKICNlbmRpZgotICAgICAgICBtX2RhdGEubV9zdXJmYWNlID0gYWRv
cHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGFkb3B0
UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIG1fc2l6
ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKIAogICAgIGlmIChjYWlyb19zdXJmYWNlX3N0
YXR1cyhtX2RhdGEubV9zdXJmYWNlLmdldCgpKSAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykKICAg
ICAgICAgcmV0dXJuOyAgLy8gY3JlYXRlIHdpbGwgbm90aWNlIHdlIGRpZG4ndCBzZXQgbV9pbml0
aWFsaXplZCBhbmQgZmFpbC4KIAorICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKG1fZGF0
YS5tX3N1cmZhY2UuZ2V0KCksIG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7
CisKICAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9kYXRh
Lm1fc3VyZmFjZS5nZXQoKSkpOwogICAgIG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5zZXRDcihj
ci5nZXQoKSk7CiAgICAgbV9kYXRhLm1fY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhp
Y3NDb250ZXh0PigmbV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0KTsKQEAgLTIzMSw2ICsyNDQsNyBA
QCBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpj
b3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3IpIGNv
bnN0CiB7CisgICAgLy8gY29weUNhaXJvSW1hZ2VTdXJmYWNlIGluaGVyaXRzIHN1cmZhY2UncyBk
ZXZpY2Ugc2NhbGUgZmFjdG9yLgogICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdT
dG9yZSkKICAgICAgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoY29weUNhaXJvSW1hZ2VT
dXJmYWNlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpKTsKIApAQCAtMzAxLDcgKzMxNSw3IEBAIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNvcHlTdXJmYWNlVG9JbWFnZUFuZEFkanVzdFJlY3QoY2Fp
cm9fc3VyZmFjZV90KiBzdXJmYWNlCiB9CiAKIHRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVk
PgotUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYg
cmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQor
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgSW50UmVjdCYgbG9naWNhbFJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0
YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSkKIHsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHJlc3Vs
dCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHJlY3Qud2lkdGgoKSAq
IHJlY3QuaGVpZ2h0KCkgKiA0KTsKIApAQCAtMzMwLDEzICszNDQsMTcgQEAgUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1h
Z2VCdWZmZXJEYXQKICAgICAgICAgZW5keSA9IHNpemUuaGVpZ2h0KCk7CiAgICAgaW50IG51bVJv
d3MgPSBlbmR5IC0gb3JpZ2lueTsKIAorICAgIC8vIFRoZSBzaXplIG9mIHRoZSBkZXJpdmVkIHN1
cmZhY2UgaXMgaW4gQmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbS4KKyAgICAvLyBXZSBuZWVk
IHRvIHNldCB0aGUgZGV2aWNlIHNjYWxlIGZvciB0aGUgZGVyaXZlZCBzdXJmYWNlIGZyb20gdGhp
cyBJbWFnZUJ1ZmZlci4KICAgICBJbnRSZWN0IGltYWdlUmVjdChvcmlnaW54LCBvcmlnaW55LCBu
dW1Db2x1bW5zLCBudW1Sb3dzKTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZVN1
cmZhY2UgPSBjb3B5U3VyZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KGRhdGEubV9zdXJmYWNlLmdl
dCgpLCBpbWFnZVJlY3QpOworICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKGltYWdlU3Vy
ZmFjZS5nZXQoKSwgcmVzb2x1dGlvblNjYWxlLCByZXNvbHV0aW9uU2NhbGUpOwogICAgIG9yaWdp
bnggPSBpbWFnZVJlY3QueCgpOwogICAgIG9yaWdpbnkgPSBpbWFnZVJlY3QueSgpOwogICAgIGlm
IChpbWFnZVN1cmZhY2UgIT0gZGF0YS5tX3N1cmZhY2UuZ2V0KCkpIHsKLSAgICAgICAgSW50UmVj
dCBhcmVhID0gaW50ZXJzZWN0aW9uKHJlY3QsIEludFJlY3QoMCwgMCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKSk7Ci0gICAgICAgIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIo
ZGF0YS5tX3N1cmZhY2UuZ2V0KCksIGltYWdlU3VyZmFjZS5nZXQoKSwgSW50U2l6ZSgtYXJlYS54
KCksIC1hcmVhLnkoKSksIEludFJlY3QoSW50UG9pbnQoKSwgYXJlYS5zaXplKCkpLCBJbnRTaXpl
KCksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CisgICAgICAgIC8vIFRoaXMgY2Fpcm8gc3VyZmFj
ZSBvcGVyYXRpb24gaXMgZG9uZSBpbiBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbS4KKyAgICAgICAg
SW50UmVjdCBsb2dpY2FsQXJlYSA9IGludGVyc2VjdGlvbihsb2dpY2FsUmVjdCwgSW50UmVjdCgw
LCAwLCBsb2dpY2FsU2l6ZS53aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSkpOworICAgICAg
ICBjb3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKGRhdGEubV9zdXJmYWNlLmdldCgpLCBp
bWFnZVN1cmZhY2UuZ2V0KCksIEludFNpemUoLWxvZ2ljYWxBcmVhLngoKSwgLWxvZ2ljYWxBcmVh
LnkoKSksIEludFJlY3QoSW50UG9pbnQoKSwgbG9naWNhbEFyZWEuc2l6ZSgpKSwgSW50U2l6ZSgp
LCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIGNoYXIqIGRh
dGFTcmMgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlU3VyZmFjZS5nZXQoKSk7
CkBAIC0zNzcsNTMgKzM5NSw3OCBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdl
RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckRhdAogICAgIHJldHVy
biByZXN1bHQucmVsZWFzZSgpOwogfQogCi1SZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdl
QnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29v
cmRpbmF0ZVN5c3RlbSkgY29uc3QKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZm
ZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGlu
YXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEltYWdl
RGF0YTxVbm11bHRpcGxpZWQ+KHJlY3QsIG1fZGF0YSwgbV9zaXplKTsKKyAgICBJbnRSZWN0IHNy
Y1JlY3QgPSByZWN0OworICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGlu
YXRlU3lzdGVtKQorICAgICAgICBzcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKwor
ICAgIHJldHVybiBnZXRJbWFnZURhdGE8VW5tdWx0aXBsaWVkPihzcmNSZWN0LCByZWN0LCBtX2Rh
dGEsIG1fc2l6ZSwgbV9sb2dpY2FsU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwogfQogCi1SZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRh
KGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkg
Y29uc3QKIHsKLSAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFByZW11bHRpcGxpZWQ+KHJlY3QsIG1f
ZGF0YSwgbV9zaXplKTsKKyAgICBJbnRSZWN0IHNyY1JlY3QgPSByZWN0OworICAgIGlmIChjb29y
ZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKQorICAgICAgICBzcmNSZWN0
LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKworICAgIHJldHVybiBnZXRJbWFnZURhdGE8UHJl
bXVsdGlwbGllZD4oc3JjUmVjdCwgcmVjdCwgbV9kYXRhLCBtX3NpemUsIG1fbG9naWNhbFNpemUs
IG1fcmVzb2x1dGlvblNjYWxlKTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5
KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGNvbnN0IElu
dFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0pCit2b2lkIEltYWdlQnVmZmVyOjpwdXRC
eXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwg
Y29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVt
KQogeworICAgIEludFJlY3Qgc2NhbGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CisgICAgSW50
U2l6ZSBzY2FsZWRTb3VyY2VTaXplID0gc291cmNlU2l6ZTsKKyAgICBJbnRQb2ludCBzY2FsZWRE
ZXN0UG9pbnQgPSBkZXN0UG9pbnQ7CisgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNh
bENvb3JkaW5hdGVTeXN0ZW0pIHsKKyAgICAgICAgc2NhbGVkU291cmNlUmVjdC5zY2FsZShtX3Jl
c29sdXRpb25TY2FsZSk7CisgICAgICAgIHNjYWxlZFNvdXJjZVNpemUuc2NhbGUobV9yZXNvbHV0
aW9uU2NhbGUpOworICAgICAgICBzY2FsZWREZXN0UG9pbnQuc2NhbGUobV9yZXNvbHV0aW9uU2Nh
bGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICB9CiAKLSAgICBBU1NFUlQoc291cmNlUmVjdC53
aWR0aCgpID4gMCk7Ci0gICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKKyAgICBB
U1NFUlQoc2NhbGVkU291cmNlUmVjdC53aWR0aCgpID4gMCk7CisgICAgQVNTRVJUKHNjYWxlZFNv
dXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKIAotICAgIGludCBvcmlnaW54ID0gc291cmNlUmVjdC54
KCk7Ci0gICAgaW50IGRlc3R4ID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpOworICAg
IGludCBvcmlnaW54ID0gc2NhbGVkU291cmNlUmVjdC54KCk7CisgICAgaW50IGRlc3R4ID0gc2Nh
bGVkRGVzdFBvaW50LngoKSArIHNjYWxlZFNvdXJjZVJlY3QueCgpOworICAgIGludCBsb2dpY2Fs
RGVzdHggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCk7CiAgICAgQVNTRVJUKGRlc3R4
ID49IDApOwogICAgIEFTU0VSVChkZXN0eCA8IG1fc2l6ZS53aWR0aCgpKTsKICAgICBBU1NFUlQo
b3JpZ2lueCA+PSAwKTsKLSAgICBBU1NFUlQob3JpZ2lueCA8PSBzb3VyY2VSZWN0Lm1heFgoKSk7
CisgICAgQVNTRVJUKG9yaWdpbnggPD0gc2NhbGVkU291cmNlUmVjdC5tYXhYKCkpOwogCi0gICAg
aW50IGVuZHggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC5tYXhYKCk7CisgICAgaW50IGVu
ZHggPSBzY2FsZWREZXN0UG9pbnQueCgpICsgc2NhbGVkU291cmNlUmVjdC5tYXhYKCk7CisgICAg
aW50IGxvZ2ljYWxFbmR4ID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QubWF4WCgpOwogICAg
IEFTU0VSVChlbmR4IDw9IG1fc2l6ZS53aWR0aCgpKTsKIAogICAgIGludCBudW1Db2x1bW5zID0g
ZW5keCAtIGRlc3R4OworICAgIGludCBsb2dpY2FsTnVtQ29sdW1ucyA9IGxvZ2ljYWxFbmR4IC0g
bG9naWNhbERlc3R4OwogCi0gICAgaW50IG9yaWdpbnkgPSBzb3VyY2VSZWN0LnkoKTsKLSAgICBp
bnQgZGVzdHkgPSBkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC55KCk7CisgICAgaW50IG9yaWdp
bnkgPSBzY2FsZWRTb3VyY2VSZWN0LnkoKTsKKyAgICBpbnQgZGVzdHkgPSBzY2FsZWREZXN0UG9p
bnQueSgpICsgc2NhbGVkU291cmNlUmVjdC55KCk7CisgICAgaW50IGxvZ2ljYWxEZXN0eSA9IGRl
c3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKTsKICAgICBBU1NFUlQoZGVzdHkgPj0gMCk7CiAg
ICAgQVNTRVJUKGRlc3R5IDwgbV9zaXplLmhlaWdodCgpKTsKICAgICBBU1NFUlQob3JpZ2lueSA+
PSAwKTsKLSAgICBBU1NFUlQob3JpZ2lueSA8PSBzb3VyY2VSZWN0Lm1heFkoKSk7CisgICAgQVNT
RVJUKG9yaWdpbnkgPD0gc2NhbGVkU291cmNlUmVjdC5tYXhZKCkpOwogCi0gICAgaW50IGVuZHkg
PSBkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC5tYXhZKCk7CisgICAgaW50IGVuZHkgPSBzY2Fs
ZWREZXN0UG9pbnQueSgpICsgc2NhbGVkU291cmNlUmVjdC5tYXhZKCk7CisgICAgaW50IGxvZ2lj
YWxFbmR5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QubWF4WSgpOwogICAgIEFTU0VSVChl
bmR5IDw9IG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgaW50IG51bVJvd3MgPSBlbmR5IC0gZGVzdHk7
CisgICAgaW50IGxvZ2ljYWxOdW1Sb3dzID0gbG9naWNhbEVuZHkgLSBsb2dpY2FsRGVzdHk7CiAK
KyAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgZGVyaXZlZCBzdXJmYWNlIGlzIGluIEJhY2tpbmdTdG9y
ZUNvb3JkaW5hdGVTeXN0ZW0uCisgICAgLy8gV2UgbmVlZCB0byBzZXQgdGhlIGRldmljZSBzY2Fs
ZSBmb3IgdGhlIGRlcml2ZWQgc3VyZmFjZSBmcm9tIHRoaXMgSW1hZ2VCdWZmZXIuCiAgICAgSW50
UmVjdCBpbWFnZVJlY3QoZGVzdHgsIGRlc3R5LCBudW1Db2x1bW5zLCBudW1Sb3dzKTsKICAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZVN1cmZhY2UgPSBjb3B5U3VyZmFjZVRvSW1hZ2VB
bmRBZGp1c3RSZWN0KG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIGltYWdlUmVjdCk7CisgICAgY2Fp
cm9TdXJmYWNlU2V0RGV2aWNlU2NhbGUoaW1hZ2VTdXJmYWNlLmdldCgpLCBtX3Jlc29sdXRpb25T
Y2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwogICAgIGRlc3R4ID0gaW1hZ2VSZWN0LngoKTsKICAg
ICBkZXN0eSA9IGltYWdlUmVjdC55KCk7CiAKICAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbERhdGEg
PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlU3VyZmFjZS5nZXQoKSk7CiAKLSAg
ICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdyA9IDQgKiBzb3VyY2VTaXplLndpZHRoKCk7CisgICAg
dW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSA0ICogc2NhbGVkU291cmNlU2l6ZS53aWR0aCgpOwog
ICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoaW1hZ2VTdXJm
YWNlLmdldCgpKTsKIAogICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3MgPSBzb3VyY2UtPmRhdGEo
KSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwpAQCAtNDUzLDEwICs0
OTYsMTMgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxp
ZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICAgICAgICAgc3JjUm93cyArPSBzcmNC
eXRlc1BlclJvdzsKICAgICB9CiAKLSAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFu
Z2xlKGltYWdlU3VyZmFjZS5nZXQoKSwgZGVzdHgsIGRlc3R5LCBudW1Db2x1bW5zLCBudW1Sb3dz
KTsKKyAgICAvLyBUaGlzIGNhaXJvIHN1cmZhY2Ugb3BlcmF0aW9uIGlzIGRvbmUgaW4gTG9naWNh
bENvb3JkaW5hdGVTeXN0ZW0uCisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3Rhbmds
ZShpbWFnZVN1cmZhY2UuZ2V0KCksIGxvZ2ljYWxEZXN0eCwgbG9naWNhbERlc3R5LCBsb2dpY2Fs
TnVtQ29sdW1ucywgbG9naWNhbE51bVJvd3MpOwogCi0gICAgaWYgKGltYWdlU3VyZmFjZSAhPSBt
X2RhdGEubV9zdXJmYWNlLmdldCgpKQotICAgICAgICBjb3B5UmVjdEZyb21PbmVTdXJmYWNlVG9B
bm90aGVyKGltYWdlU3VyZmFjZS5nZXQoKSwgbV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgSW50U2l6
ZSgpLCBJbnRSZWN0KDAsIDAsIG51bUNvbHVtbnMsIG51bVJvd3MpLCBJbnRTaXplKGRlc3RQb2lu
dC54KCkgKyBzb3VyY2VSZWN0LngoKSwgZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QueSgpKSwg
Q0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICBpZiAoaW1hZ2VTdXJmYWNlICE9IG1fZGF0YS5t
X3N1cmZhY2UuZ2V0KCkpIHsKKyAgICAgICAgLy8gVGhpcyBjYWlybyBzdXJmYWNlIG9wZXJhdGlv
biBpcyBkb25lIGluIExvZ2ljYWxDb29yZGluYXRlU3lzdGVtLgorICAgICAgICBjb3B5UmVjdEZy
b21PbmVTdXJmYWNlVG9Bbm90aGVyKGltYWdlU3VyZmFjZS5nZXQoKSwgbV9kYXRhLm1fc3VyZmFj
ZS5nZXQoKSwgSW50U2l6ZSgpLCBJbnRSZWN0KDAsIDAsIGxvZ2ljYWxOdW1Db2x1bW5zLCBsb2dp
Y2FsTnVtUm93cyksIEludFNpemUoZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpLCBkZXN0
UG9pbnQueSgpICsgc291cmNlUmVjdC55KCkpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAg
IH0KIH0KIAogI2lmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShFRkwpCkBAIC01MTcsNiAr
NTYzLDcgQEAgUGxhdGZvcm1MYXllciogSW1hZ2VCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25z
dAogYm9vbCBJbWFnZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEJiwgR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGRlc3RpbmF0aW9uVGV4dHVy
ZSwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBm
bGlwWSkKIHsKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UobV9yZXNvbHV0aW9uU2NhbGUgPT0gMS4wLCAiU2luY2UgSGlEUEkgQ2FudmFz
IGlzIGRpc2FibGVkLCB0aGUgcmVzb2x1dGlvbiBmYWN0b3IgaGVyZSBpcyBhbHdheXMgMS4iKTsK
ICAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSB8fCBmbGlwWSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281752</attachid>
            <date>2016-06-21 09:17:32 -0700</date>
            <delta_ts>2016-06-21 11:54:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157848-20160622011724.patch</filename>
            <type>text/plain</type>
            <size>14463</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZmNTVjYzU1ZDIxZjM5
OGY0NTgwYzQxOTM1M2VjOTZmOTUwOWZmYi4uYmY2OWRkYjQyOGU0YjQ5ODAxMjY1OWQ3Zjc5Mzhh
MmMyYTI3NDU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE2LTA2LTIxICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtdW0VGTF0g
SW1hZ2VCdWZmZXJDYWlybyBzaG91bGQgYWNjZXB0IHJlc29sdXRpb24gZmFjdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc4NDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbWFnZUJ1ZmZlckNhaXJv
IGlnbm9yZWQgdGhlIHJlc29sdXRpb24gZmFjdG9yIHBhc3NlZCBpbiBpdHMgY29uc3RydWN0b3Iu
CisgICAgICAgIFRoaXMgcmVzb2x1dGlvbiBmYWN0b3IgaXMgb3JpZ2luYWxseSBpbnRyb2R1Y2Vk
IGZvciBIaURQSSBDYW52YXMsCisgICAgICAgIGFuZCBzaW5jZSBIaURQSSBjYW52YXMgaXMgbm90
IGVuYWJsZWQgaW4gdGhlIHBvcnRzIHVzaW5nIENhaXJvLAorICAgICAgICB0aGUgbGFjayBvZiB0
aGlzIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGNhdXNlIGFueSBwcm9ibGVtcy4KKyAgICAgICAg
QnV0IG5vdywgV2ViS2l0IENTUyBmaWx0ZXIgdXNlcyB0aGlzIHBhdGguCisgICAgICAgIFRoZSBt
aXNzaW5nIGltcGxlbWVudGF0aW9uIGlzIHJlcXVpcmVkIHVuZGVyIHRoZSBIaURQSSBlbnZpcm9u
bWVudC4KKworICAgICAgICBTaW5jZSBDYWlybyBzdXJmYWNlIGNhbiBoYXZlIHRoZSBkZXZpY2Ug
c2NhbGUgZmFjdG9yIHRyYW5zcGFyZW50bHksCisgICAgICAgIHRoZSBvcGVyYXRpb25zIG9udG8g
dGhlIHN1cmZhY2UgaXMgY29ycmVjdGx5IGRvbmUgaW4gdGhlIGxvZ2ljYWwgY29vcmRpbmF0ZSBz
eXN0ZW0uCisgICAgICAgIFNvIGFsbCB3ZSBuZWVkIHRvIGhhbmRsZSBjYXJlZnVsbHkgaXMgdGhl
IGRpcmVjdCBzdXJmYWNlIG1vZGlmaWNhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJEYXRhOjpjcmVhdGVDb21wb3NpdG9yQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
Y29weUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5z
Zm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKToKKwogMjAxNi0wNi0y
MSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIElubGluZWQgc29t
ZSBwaWN0dXJlLWluLXBpY3R1cmUgY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggMDQ1
M2E2MjU3ZjBkZWM3OTRlMzc4ZmVhNTYxYzJiNzE2ZTMwYTJjNi4uN2Y2MzViMDU2ZTI2MWQ0MDBk
N2EwNGVkYzhlMjYzMGFiM2QwNTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTEyMSw2
ICsxMjEsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6Y3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigp
CiAKICAgICBjYWlyb19kZXZpY2VfdCogZGV2aWNlID0gR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4
dCgpLT5jYWlyb0RldmljZSgpOwogICAgIG1fY29tcG9zaXRvclN1cmZhY2UgPSBhZG9wdFJlZihj
YWlyb19nbF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShkZXZpY2UsIENBSVJPX0NPTlRFTlRf
Q09MT1JfQUxQSEEsIG1fY29tcG9zaXRvclRleHR1cmUsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUu
aGVpZ2h0KCkpKTsKKyAgICBjYWlyb1N1cmZhY2VTZXREZXZpY2VTY2FsZShtX2NvbXBvc2l0b3JT
dXJmYWNlLmdldCgpLCBtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwogICAg
IG1fY29tcG9zaXRvckNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fY29tcG9zaXRvclN1cmZh
Y2UuZ2V0KCkpKTsKICAgICBjYWlyb19zZXRfYW50aWFsaWFzKG1fY29tcG9zaXRvckNyLmdldCgp
LCBDQUlST19BTlRJQUxJQVNfTk9ORSk7CiB9CkBAIC0xODUsMTIgKzE4NiwyMyBAQCB2b2lkIElt
YWdlQnVmZmVyRGF0YTo6Y3JlYXRlQ2Fpcm9HTFN1cmZhY2UoKQogfQogI2VuZGlmCiAKLUltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IC8qIHJlc29s
dXRpb25TY2FsZSAqLywgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBi
b29sJiBzdWNjZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2RhdGEoSW50U2l6ZShzaXplKSwg
cmVuZGVyaW5nTW9kZSkKLSAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9sb2dpY2FsU2l6ZShz
aXplKQorICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKQogewogICAgIHN1
Y2Nlc3MgPSBmYWxzZTsgIC8vIE1ha2UgZWFybHkgcmV0dXJuIG1lYW4gZXJyb3IuCisKKyAgICBm
bG9hdCBzY2FsZWRXaWR0aCA9IGNlaWxmKG1fcmVzb2x1dGlvblNjYWxlICogc2l6ZS53aWR0aCgp
KTsKKyAgICBmbG9hdCBzY2FsZWRIZWlnaHQgPSBjZWlsZihtX3Jlc29sdXRpb25TY2FsZSAqIHNp
emUuaGVpZ2h0KCkpOworCisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBhdXRvbWF0aWNhbGx5IHVz
ZSBhIGxvd2VyIHJlc29sdXRpb24/CisgICAgaWYgKCFGbG9hdFNpemUoc2NhbGVkV2lkdGgsIHNj
YWxlZEhlaWdodCkuaXNFeHByZXNzaWJsZUFzSW50U2l6ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3NpemUgPSBJbnRTaXplKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOworICAgIG1f
ZGF0YS5tX3NpemUgPSBtX3NpemU7CisKICAgICBpZiAobV9zaXplLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0yMDQsMTEgKzIxNiwxMyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCAvKiByZXNvbHV0aW9uU2NhbGUgKi8sIENv
bAogI2Vsc2UKICAgICBBU1NFUlQobV9kYXRhLm1fcmVuZGVyaW5nTW9kZSAhPSBBY2NlbGVyYXRl
ZCk7CiAjZW5kaWYKLSAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2lt
YWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSkpOworICAgIG1fZGF0YS5tX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFn
ZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCBtX3NpemUud2lkdGgoKSwgbV9z
aXplLmhlaWdodCgpKSk7CiAKICAgICBpZiAoY2Fpcm9fc3VyZmFjZV9zdGF0dXMobV9kYXRhLm1f
c3VyZmFjZS5nZXQoKSkgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybjsg
IC8vIGNyZWF0ZSB3aWxsIG5vdGljZSB3ZSBkaWRuJ3Qgc2V0IG1faW5pdGlhbGl6ZWQgYW5kIGZh
aWwuCiAKKyAgICBjYWlyb1N1cmZhY2VTZXREZXZpY2VTY2FsZShtX2RhdGEubV9zdXJmYWNlLmdl
dCgpLCBtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOworCiAgICAgUmVmUHRy
PGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0
KCkpKTsKICAgICBtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuc2V0Q3IoY3IuZ2V0KCkpOwogICAg
IG1fZGF0YS5tX2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oJm1f
ZGF0YS5tX3BsYXRmb3JtQ29udGV4dCk7CkBAIC0yMzEsNiArMjQ1LDcgQEAgUmVmUHRyPEltYWdl
PiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IGltYWdlQnVmZmUKIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaGF2aW9yKSBjb25zdAogeworICAgIC8v
IGNvcHlDYWlyb0ltYWdlU3VyZmFjZSBpbmhlcml0cyBzdXJmYWNlJ3MgZGV2aWNlIHNjYWxlIGZh
Y3Rvci4KICAgICBpZiAoY29weUJlaGF2aW9yID09IENvcHlCYWNraW5nU3RvcmUpCiAgICAgICAg
IHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKGNvcHlDYWlyb0ltYWdlU3VyZmFjZShtX2RhdGEu
bV9zdXJmYWNlLmdldCgpKSk7CiAKQEAgLTI4Myw3ICsyOTgsNyBAQCB2b2lkIEltYWdlQnVmZmVy
OjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRh
YmxlKQogICAgICAgICAgICAgKnBpeGVsID0gcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IocGl4
ZWxDb2xvcik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5
X3JlY3RhbmdsZShtX2RhdGEubV9zdXJmYWNlLmdldCgpLCAwLCAwLCBtX3NpemUud2lkdGgoKSwg
bV9zaXplLmhlaWdodCgpKTsKKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xl
KG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIDAsIDAsIG1fbG9naWNhbFNpemUud2lkdGgoKSwgbV9s
b2dpY2FsU2l6ZS5oZWlnaHQoKSk7CiB9CiAKIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNvcHlT
dXJmYWNlVG9JbWFnZUFuZEFkanVzdFJlY3QoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBJbnRS
ZWN0JiByZWN0KQpAQCAtMzAxLDcgKzMxNiw3IEBAIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNv
cHlTdXJmYWNlVG9JbWFnZUFuZEFkanVzdFJlY3QoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlCiB9
CiAKIHRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVkPgotUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJE
YXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdCYgbG9naWNh
bFJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Y29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKIHsKICAg
ICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKIApA
QCAtMzMwLDEzICszNDUsMTcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXQKICAgICAgICAgZW5k
eSA9IHNpemUuaGVpZ2h0KCk7CiAgICAgaW50IG51bVJvd3MgPSBlbmR5IC0gb3JpZ2lueTsKIAor
ICAgIC8vIFRoZSBzaXplIG9mIHRoZSBkZXJpdmVkIHN1cmZhY2UgaXMgaW4gQmFja2luZ1N0b3Jl
Q29vcmRpbmF0ZVN5c3RlbS4KKyAgICAvLyBXZSBuZWVkIHRvIHNldCB0aGUgZGV2aWNlIHNjYWxl
IGZvciB0aGUgZGVyaXZlZCBzdXJmYWNlIGZyb20gdGhpcyBJbWFnZUJ1ZmZlci4KICAgICBJbnRS
ZWN0IGltYWdlUmVjdChvcmlnaW54LCBvcmlnaW55LCBudW1Db2x1bW5zLCBudW1Sb3dzKTsKICAg
ICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZVN1cmZhY2UgPSBjb3B5U3VyZmFjZVRvSW1h
Z2VBbmRBZGp1c3RSZWN0KGRhdGEubV9zdXJmYWNlLmdldCgpLCBpbWFnZVJlY3QpOworICAgIGNh
aXJvU3VyZmFjZVNldERldmljZVNjYWxlKGltYWdlU3VyZmFjZS5nZXQoKSwgcmVzb2x1dGlvblNj
YWxlLCByZXNvbHV0aW9uU2NhbGUpOwogICAgIG9yaWdpbnggPSBpbWFnZVJlY3QueCgpOwogICAg
IG9yaWdpbnkgPSBpbWFnZVJlY3QueSgpOwogICAgIGlmIChpbWFnZVN1cmZhY2UgIT0gZGF0YS5t
X3N1cmZhY2UuZ2V0KCkpIHsKLSAgICAgICAgSW50UmVjdCBhcmVhID0gaW50ZXJzZWN0aW9uKHJl
Y3QsIEludFJlY3QoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Ci0gICAgICAg
IGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIoZGF0YS5tX3N1cmZhY2UuZ2V0KCksIGlt
YWdlU3VyZmFjZS5nZXQoKSwgSW50U2l6ZSgtYXJlYS54KCksIC1hcmVhLnkoKSksIEludFJlY3Qo
SW50UG9pbnQoKSwgYXJlYS5zaXplKCkpLCBJbnRTaXplKCksIENBSVJPX09QRVJBVE9SX1NPVVJD
RSk7CisgICAgICAgIC8vIFRoaXMgY2Fpcm8gc3VyZmFjZSBvcGVyYXRpb24gaXMgZG9uZSBpbiBM
b2dpY2FsQ29vcmRpbmF0ZVN5c3RlbS4KKyAgICAgICAgSW50UmVjdCBsb2dpY2FsQXJlYSA9IGlu
dGVyc2VjdGlvbihsb2dpY2FsUmVjdCwgSW50UmVjdCgwLCAwLCBsb2dpY2FsU2l6ZS53aWR0aCgp
LCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSkpOworICAgICAgICBjb3B5UmVjdEZyb21PbmVTdXJmYWNl
VG9Bbm90aGVyKGRhdGEubV9zdXJmYWNlLmdldCgpLCBpbWFnZVN1cmZhY2UuZ2V0KCksIEludFNp
emUoLWxvZ2ljYWxBcmVhLngoKSwgLWxvZ2ljYWxBcmVhLnkoKSksIEludFJlY3QoSW50UG9pbnQo
KSwgbG9naWNhbEFyZWEuc2l6ZSgpKSwgSW50U2l6ZSgpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0Up
OwogICAgIH0KIAogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9kYXRhKGltYWdlU3VyZmFjZS5nZXQoKSk7CkBAIC0zNzcsNTMgKzM5Niw5OCBAQCBS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBJbWFnZUJ1ZmZlckRhdAogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQog
Ci1SZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1Jl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdl
RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0
ZW0pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+KHJlY3Qs
IG1fZGF0YSwgbV9zaXplKTsKKyAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0ID0gcmVjdDsKKyAgICBJ
bnRSZWN0IGJhY2tpbmdTdG9yZVJlY3QgPSByZWN0OworICAgIGlmIChtX3Jlc29sdXRpb25TY2Fs
ZSAhPSAxLjApIHsKKyAgICAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3Jk
aW5hdGVTeXN0ZW0pCisgICAgICAgICAgICBiYWNraW5nU3RvcmVSZWN0LnNjYWxlKG1fcmVzb2x1
dGlvblNjYWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9naWNhbFJlY3Quc2NhbGUo
MS4wIC8gbV9yZXNvbHV0aW9uU2NhbGUpOworICAgIH0KKworICAgIHJldHVybiBnZXRJbWFnZURh
dGE8VW5tdWx0aXBsaWVkPihiYWNraW5nU3RvcmVSZWN0LCBsb2dpY2FsUmVjdCwgbV9kYXRhLCBt
X3NpemUsIG1fbG9naWNhbFNpemUsIG1fcmVzb2x1dGlvblNjYWxlKTsKIH0KIAotUmVmUHRyPFVp
bnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShj
b25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25z
dCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGdldEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihyZWN0LCBtX2RhdGEs
IG1fc2l6ZSk7CisgICAgSW50UmVjdCBsb2dpY2FsUmVjdCA9IHJlY3Q7CisgICAgSW50UmVjdCBi
YWNraW5nU3RvcmVSZWN0ID0gcmVjdDsKKyAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgIT0gMS4w
KSB7CisgICAgICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lz
dGVtKQorICAgICAgICAgICAgYmFja2luZ1N0b3JlUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2Fs
ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvZ2ljYWxSZWN0LnNjYWxlKDEuMCAvIG1f
cmVzb2x1dGlvblNjYWxlKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFByZW11
bHRpcGxpZWQ+KGJhY2tpbmdTdG9yZVJlY3QsIGxvZ2ljYWxSZWN0LCBtX2RhdGEsIG1fc2l6ZSwg
bV9sb2dpY2FsU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwogfQogCi12b2lkIEltYWdlQnVmZmVy
OjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNv
dXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSkKK3ZvaWQgSW1h
Z2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRB
cnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNv
b3JkaW5hdGVTeXN0ZW0pCiB7CisgICAgSW50UmVjdCBzY2FsZWRTb3VyY2VSZWN0ID0gc291cmNl
UmVjdDsKKyAgICBJbnRTaXplIHNjYWxlZFNvdXJjZVNpemUgPSBzb3VyY2VTaXplOworICAgIElu
dFBvaW50IHNjYWxlZERlc3RQb2ludCA9IGRlc3RQb2ludDsKKyAgICBJbnRSZWN0IGxvZ2ljYWxT
b3VyY2VSZWN0ID0gc291cmNlUmVjdDsKKyAgICBJbnRTaXplIGxvZ2ljYWxTb3VyY2VTaXplID0g
c291cmNlU2l6ZTsKKyAgICBJbnRQb2ludCBsb2dpY2FsRGVzdFBvaW50ID0gZGVzdFBvaW50Owor
ICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSAhPSAxLjApIHsKKyAgICAgICAgaWYgKGNvb3JkaW5h
dGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pIHsKKyAgICAgICAgICAgIHNjYWxl
ZFNvdXJjZVJlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgICAgICAgICAgc2NhbGVk
U291cmNlU2l6ZS5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CisgICAgICAgICAgICBzY2FsZWRE
ZXN0UG9pbnQuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZsb2F0IGludmVydGVkUmVzb2x1dGlvblNjYWxl
ID0gMS4wIC8gbV9yZXNvbHV0aW9uU2NhbGU7CisgICAgICAgICAgICBsb2dpY2FsU291cmNlUmVj
dC5zY2FsZShpbnZlcnRlZFJlc29sdXRpb25TY2FsZSk7CisgICAgICAgICAgICBsb2dpY2FsU291
cmNlU2l6ZS5zY2FsZShpbnZlcnRlZFJlc29sdXRpb25TY2FsZSk7CisgICAgICAgICAgICBsb2dp
Y2FsRGVzdFBvaW50LnNjYWxlKGludmVydGVkUmVzb2x1dGlvblNjYWxlLCBpbnZlcnRlZFJlc29s
dXRpb25TY2FsZSk7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBBU1NFUlQoc291cmNlUmVjdC53
aWR0aCgpID4gMCk7Ci0gICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKKyAgICBB
U1NFUlQoc2NhbGVkU291cmNlUmVjdC53aWR0aCgpID4gMCk7CisgICAgQVNTRVJUKHNjYWxlZFNv
dXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKIAotICAgIGludCBvcmlnaW54ID0gc291cmNlUmVjdC54
KCk7Ci0gICAgaW50IGRlc3R4ID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpOworICAg
IGludCBvcmlnaW54ID0gc2NhbGVkU291cmNlUmVjdC54KCk7CisgICAgaW50IGRlc3R4ID0gc2Nh
bGVkRGVzdFBvaW50LngoKSArIHNjYWxlZFNvdXJjZVJlY3QueCgpOworICAgIGludCBsb2dpY2Fs
RGVzdHggPSBsb2dpY2FsRGVzdFBvaW50LngoKSArIGxvZ2ljYWxTb3VyY2VSZWN0LngoKTsKICAg
ICBBU1NFUlQoZGVzdHggPj0gMCk7CiAgICAgQVNTRVJUKGRlc3R4IDwgbV9zaXplLndpZHRoKCkp
OwogICAgIEFTU0VSVChvcmlnaW54ID49IDApOwotICAgIEFTU0VSVChvcmlnaW54IDw9IHNvdXJj
ZVJlY3QubWF4WCgpKTsKKyAgICBBU1NFUlQob3JpZ2lueCA8PSBzY2FsZWRTb3VyY2VSZWN0Lm1h
eFgoKSk7CiAKLSAgICBpbnQgZW5keCA9IGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0Lm1heFgo
KTsKKyAgICBpbnQgZW5keCA9IHNjYWxlZERlc3RQb2ludC54KCkgKyBzY2FsZWRTb3VyY2VSZWN0
Lm1heFgoKTsKKyAgICBpbnQgbG9naWNhbEVuZHggPSBsb2dpY2FsRGVzdFBvaW50LngoKSArIGxv
Z2ljYWxTb3VyY2VSZWN0Lm1heFgoKTsKICAgICBBU1NFUlQoZW5keCA8PSBtX3NpemUud2lkdGgo
KSk7CiAKICAgICBpbnQgbnVtQ29sdW1ucyA9IGVuZHggLSBkZXN0eDsKKyAgICBpbnQgbG9naWNh
bE51bUNvbHVtbnMgPSBsb2dpY2FsRW5keCAtIGxvZ2ljYWxEZXN0eDsKIAotICAgIGludCBvcmln
aW55ID0gc291cmNlUmVjdC55KCk7Ci0gICAgaW50IGRlc3R5ID0gZGVzdFBvaW50LnkoKSArIHNv
dXJjZVJlY3QueSgpOworICAgIGludCBvcmlnaW55ID0gc2NhbGVkU291cmNlUmVjdC55KCk7Cisg
ICAgaW50IGRlc3R5ID0gc2NhbGVkRGVzdFBvaW50LnkoKSArIHNjYWxlZFNvdXJjZVJlY3QueSgp
OworICAgIGludCBsb2dpY2FsRGVzdHkgPSBsb2dpY2FsRGVzdFBvaW50LnkoKSArIGxvZ2ljYWxT
b3VyY2VSZWN0LnkoKTsKICAgICBBU1NFUlQoZGVzdHkgPj0gMCk7CiAgICAgQVNTRVJUKGRlc3R5
IDwgbV9zaXplLmhlaWdodCgpKTsKICAgICBBU1NFUlQob3JpZ2lueSA+PSAwKTsKLSAgICBBU1NF
UlQob3JpZ2lueSA8PSBzb3VyY2VSZWN0Lm1heFkoKSk7CisgICAgQVNTRVJUKG9yaWdpbnkgPD0g
c2NhbGVkU291cmNlUmVjdC5tYXhZKCkpOwogCi0gICAgaW50IGVuZHkgPSBkZXN0UG9pbnQueSgp
ICsgc291cmNlUmVjdC5tYXhZKCk7CisgICAgaW50IGVuZHkgPSBzY2FsZWREZXN0UG9pbnQueSgp
ICsgc2NhbGVkU291cmNlUmVjdC5tYXhZKCk7CisgICAgaW50IGxvZ2ljYWxFbmR5ID0gbG9naWNh
bERlc3RQb2ludC55KCkgKyBsb2dpY2FsU291cmNlUmVjdC5tYXhZKCk7CiAgICAgQVNTRVJUKGVu
ZHkgPD0gbV9zaXplLmhlaWdodCgpKTsKICAgICBpbnQgbnVtUm93cyA9IGVuZHkgLSBkZXN0eTsK
KyAgICBpbnQgbG9naWNhbE51bVJvd3MgPSBsb2dpY2FsRW5keSAtIGxvZ2ljYWxEZXN0eTsKIAor
ICAgIC8vIFRoZSBzaXplIG9mIHRoZSBkZXJpdmVkIHN1cmZhY2UgaXMgaW4gQmFja2luZ1N0b3Jl
Q29vcmRpbmF0ZVN5c3RlbS4KKyAgICAvLyBXZSBuZWVkIHRvIHNldCB0aGUgZGV2aWNlIHNjYWxl
IGZvciB0aGUgZGVyaXZlZCBzdXJmYWNlIGZyb20gdGhpcyBJbWFnZUJ1ZmZlci4KICAgICBJbnRS
ZWN0IGltYWdlUmVjdChkZXN0eCwgZGVzdHksIG51bUNvbHVtbnMsIG51bVJvd3MpOwogICAgIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlU3VyZmFjZSA9IGNvcHlTdXJmYWNlVG9JbWFnZUFu
ZEFkanVzdFJlY3QobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgaW1hZ2VSZWN0KTsKKyAgICBjYWly
b1N1cmZhY2VTZXREZXZpY2VTY2FsZShpbWFnZVN1cmZhY2UuZ2V0KCksIG1fcmVzb2x1dGlvblNj
YWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CiAgICAgZGVzdHggPSBpbWFnZVJlY3QueCgpOwogICAg
IGRlc3R5ID0gaW1hZ2VSZWN0LnkoKTsKIAogICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVsRGF0YSA9
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2VTdXJmYWNlLmdldCgpKTsKIAotICAg
IHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsKKyAgICB1
bnNpZ25lZCBzcmNCeXRlc1BlclJvdyA9IDQgKiBzY2FsZWRTb3VyY2VTaXplLndpZHRoKCk7CiAg
ICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShpbWFnZVN1cmZh
Y2UuZ2V0KCkpOwogCiAgICAgdW5zaWduZWQgY2hhciogc3JjUm93cyA9IHNvdXJjZS0+ZGF0YSgp
ICsgb3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7CkBAIC00NTMsMTAgKzUx
NywxMyBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGll
ZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgICAgICBzcmNSb3dzICs9IHNyY0J5
dGVzUGVyUm93OwogICAgIH0KIAotICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5n
bGUoaW1hZ2VTdXJmYWNlLmdldCgpLCBkZXN0eCwgZGVzdHksIG51bUNvbHVtbnMsIG51bVJvd3Mp
OworICAgIC8vIFRoaXMgY2Fpcm8gc3VyZmFjZSBvcGVyYXRpb24gaXMgZG9uZSBpbiBMb2dpY2Fs
Q29vcmRpbmF0ZVN5c3RlbS4KKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xl
KGltYWdlU3VyZmFjZS5nZXQoKSwgbG9naWNhbERlc3R4LCBsb2dpY2FsRGVzdHksIGxvZ2ljYWxO
dW1Db2x1bW5zLCBsb2dpY2FsTnVtUm93cyk7CiAKLSAgICBpZiAoaW1hZ2VTdXJmYWNlICE9IG1f
ZGF0YS5tX3N1cmZhY2UuZ2V0KCkpCi0gICAgICAgIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fu
b3RoZXIoaW1hZ2VTdXJmYWNlLmdldCgpLCBtX2RhdGEubV9zdXJmYWNlLmdldCgpLCBJbnRTaXpl
KCksIEludFJlY3QoMCwgMCwgbnVtQ29sdW1ucywgbnVtUm93cyksIEludFNpemUoZGVzdFBvaW50
LngoKSArIHNvdXJjZVJlY3QueCgpLCBkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC55KCkpLCBD
QUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGlmIChpbWFnZVN1cmZhY2UgIT0gbV9kYXRhLm1f
c3VyZmFjZS5nZXQoKSkgeworICAgICAgICAvLyBUaGlzIGNhaXJvIHN1cmZhY2Ugb3BlcmF0aW9u
IGlzIGRvbmUgaW4gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0uCisgICAgICAgIGNvcHlSZWN0RnJv
bU9uZVN1cmZhY2VUb0Fub3RoZXIoaW1hZ2VTdXJmYWNlLmdldCgpLCBtX2RhdGEubV9zdXJmYWNl
LmdldCgpLCBJbnRTaXplKCksIEludFJlY3QoMCwgMCwgbG9naWNhbE51bUNvbHVtbnMsIGxvZ2lj
YWxOdW1Sb3dzKSwgSW50U2l6ZShsb2dpY2FsRGVzdFBvaW50LngoKSArIGxvZ2ljYWxTb3VyY2VS
ZWN0LngoKSwgbG9naWNhbERlc3RQb2ludC55KCkgKyBsb2dpY2FsU291cmNlUmVjdC55KCkpLCBD
QUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIH0KIH0KIAogI2lmICFQTEFURk9STShHVEspICYm
ICFQTEFURk9STShFRkwpCkBAIC01MTcsNiArNTg0LDcgQEAgUGxhdGZvcm1MYXllciogSW1hZ2VC
dWZmZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogYm9vbCBJbWFnZUJ1ZmZlcjo6Y29weVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEJiwgR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9y
bTNET2JqZWN0IGRlc3RpbmF0aW9uVGV4dHVyZSwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICNpZiBFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9yZXNvbHV0aW9uU2NhbGUg
PT0gMS4wLCAiU2luY2UgdGhlIEhpRFBJIENhbnZhcyBmZWF0dXJlIGlzIHJlbW92ZWQsIHRoZSBy
ZXNvbHV0aW9uIGZhY3RvciBoZXJlIGlzIGFsd2F5cyAxLiIpOwogICAgIGlmIChwcmVtdWx0aXBs
eUFscGhhIHx8IGZsaXBZKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281764</attachid>
            <date>2016-06-21 11:54:46 -0700</date>
            <delta_ts>2016-06-22 10:06:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157848-20160622035438.patch</filename>
            <type>text/plain</type>
            <size>15356</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZmNTVjYzU1ZDIxZjM5
OGY0NTgwYzQxOTM1M2VjOTZmOTUwOWZmYi4uOTg5ZDZkNDhiNTRhYTQ0OTViMWNmODBmMGVjNjlj
N2Q2N2QzODZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE2LTA2LTIxICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtdW0VGTF0g
SW1hZ2VCdWZmZXJDYWlybyBzaG91bGQgYWNjZXB0IHJlc29sdXRpb24gZmFjdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc4NDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbWFnZUJ1ZmZlckNhaXJv
IGlnbm9yZWQgdGhlIHJlc29sdXRpb24gZmFjdG9yIHBhc3NlZCBpbiBpdHMgY29uc3RydWN0b3Iu
CisgICAgICAgIFRoaXMgcmVzb2x1dGlvbiBmYWN0b3IgaXMgb3JpZ2luYWxseSBpbnRyb2R1Y2Vk
IGZvciBIaURQSSBDYW52YXMsCisgICAgICAgIGFuZCBzaW5jZSBIaURQSSBjYW52YXMgaXMgbm90
IGVuYWJsZWQgaW4gdGhlIHBvcnRzIHVzaW5nIENhaXJvLAorICAgICAgICB0aGUgbGFjayBvZiB0
aGlzIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGNhdXNlIGFueSBwcm9ibGVtcy4KKyAgICAgICAg
QnV0IG5vdywgV2ViS2l0IENTUyBmaWx0ZXIgdXNlcyB0aGlzIHBhdGguCisgICAgICAgIFRoZSBt
aXNzaW5nIGltcGxlbWVudGF0aW9uIGlzIHJlcXVpcmVkIHVuZGVyIHRoZSBIaURQSSBlbnZpcm9u
bWVudC4KKworICAgICAgICBTaW5jZSBDYWlybyBzdXJmYWNlIGNhbiBoYXZlIHRoZSBkZXZpY2Ug
c2NhbGUgZmFjdG9yIHRyYW5zcGFyZW50bHksCisgICAgICAgIHRoZSBvcGVyYXRpb25zIG9udG8g
dGhlIHN1cmZhY2UgaXMgY29ycmVjdGx5IGRvbmUgaW4gdGhlIGxvZ2ljYWwgY29vcmRpbmF0ZSBz
eXN0ZW0uCisgICAgICAgIFNvIGFsbCB3ZSBuZWVkIHRvIGhhbmRsZSBjYXJlZnVsbHkgaXMgdGhl
IGRpcmVjdCBzdXJmYWNlIG1vZGlmaWNhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ludFBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnRQb2ludDo6c2NhbGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDb21wb3NpdG9yQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxVbml0KToKKyAgICAgICAg
KFdlYkNvcmU6OmJhY2tpbmdTdG9yZVVuaXQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpj
b3B5VG9QbGF0Zm9ybVRleHR1cmUpOgorCiAyMDE2LTA2LTIxICBEYW4gQmVybnN0ZWluICA8bWl0
ekBhcHBsZS5jb20+CiAKICAgICAgICAgSW5saW5lZCBzb21lIHBpY3R1cmUtaW4tcGljdHVyZSBj
b2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9p
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKaW5kZXgg
MzM5MGY0NGNiY2I0OGRkNzZjOWQzNDkzNjIyZmQzY2ZjYmVhMzUxNS4uMjcyOWM3MTU5Zjg3MGUw
ZDA2NGJlMTkzOGIwOGYzYzI0ZjllNjk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbnRQb2ludC5oCkBAIC04Miw2ICs4MiwxMSBAQCBjbGFzcyBJbnRQb2ludCB7CiAg
ICAgICAgIG1feCA9IGxyb3VuZGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1feCAqIHN4KSk7CiAgICAg
ICAgIG1feSA9IGxyb3VuZGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1feSAqIHN5KSk7CiAgICAgfQor
CisgICAgdm9pZCBzY2FsZShmbG9hdCBzY2FsZSkKKyAgICB7CisgICAgICAgIHRoaXMtPnNjYWxl
KHNhbGUsIHNjYWxlKTsKKyAgICB9CiAgICAgCiAgICAgSW50UG9pbnQgZXhwYW5kZWRUbyhjb25z
dCBJbnRQb2ludCYgb3RoZXIpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRl
eCAwNDUzYTYyNTdmMGRlYzc5NGUzNzhmZWE1NjFjMmI3MTZlMzBhMmM2Li4xMzJlNDRjODZhMzI4
NDJlZWQ5MTA4ZGIxOGE4YTFjNzM2MTNiZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAt
MTIxLDYgKzEyMSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDb21wb3NpdG9yQnVm
ZmVyKCkKIAogICAgIGNhaXJvX2RldmljZV90KiBkZXZpY2UgPSBHTENvbnRleHQ6OnNoYXJpbmdD
b250ZXh0KCktPmNhaXJvRGV2aWNlKCk7CiAgICAgbV9jb21wb3NpdG9yU3VyZmFjZSA9IGFkb3B0
UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09O
VEVOVF9DT0xPUl9BTFBIQSwgbV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLndpZHRoKCksIG1f
c2l6ZS5oZWlnaHQoKSkpOworICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKG1fY29tcG9z
aXRvclN1cmZhY2UuZ2V0KCksIG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7
CiAgICAgbV9jb21wb3NpdG9yQ3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9jb21wb3NpdG9y
U3VyZmFjZS5nZXQoKSkpOwogICAgIGNhaXJvX3NldF9hbnRpYWxpYXMobV9jb21wb3NpdG9yQ3Iu
Z2V0KCksIENBSVJPX0FOVElBTElBU19OT05FKTsKIH0KQEAgLTE4NSwxMiArMTg2LDIzIEBAIHZv
aWQgSW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDYWlyb0dMU3VyZmFjZSgpCiB9CiAjZW5kaWYKIAot
SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgLyog
cmVzb2x1dGlvblNjYWxlICovLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIGJvb2wmIHN1Y2Nlc3MpCitJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgYm9vbCYgc3VjY2VzcykKICAgICA6IG1fZGF0YShJbnRTaXplKHNp
emUpLCByZW5kZXJpbmdNb2RlKQotICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX2xvZ2ljYWxT
aXplKHNpemUpCisgICAgLCBtX3Jlc29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCiB7CiAg
ICAgc3VjY2VzcyA9IGZhbHNlOyAgLy8gTWFrZSBlYXJseSByZXR1cm4gbWVhbiBlcnJvci4KKwor
ICAgIGZsb2F0IHNjYWxlZFdpZHRoID0gY2VpbGYobV9yZXNvbHV0aW9uU2NhbGUgKiBzaXplLndp
ZHRoKCkpOworICAgIGZsb2F0IHNjYWxlZEhlaWdodCA9IGNlaWxmKG1fcmVzb2x1dGlvblNjYWxl
ICogc2l6ZS5oZWlnaHQoKSk7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGF1dG9tYXRpY2Fs
bHkgdXNlIGEgbG93ZXIgcmVzb2x1dGlvbj8KKyAgICBpZiAoIUZsb2F0U2l6ZShzY2FsZWRXaWR0
aCwgc2NhbGVkSGVpZ2h0KS5pc0V4cHJlc3NpYmxlQXNJbnRTaXplKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc2l6ZSA9IEludFNpemUoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCk7Cisg
ICAgbV9kYXRhLm1fc2l6ZSA9IG1fc2l6ZTsKKwogICAgIGlmIChtX3NpemUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTIwNCwxMSArMjE2LDEzIEBAIEltYWdlQnVmZmVyOjpJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IC8qIHJlc29sdXRpb25TY2FsZSAq
LywgQ29sCiAjZWxzZQogICAgIEFTU0VSVChtX2RhdGEubV9yZW5kZXJpbmdNb2RlICE9IEFjY2Vs
ZXJhdGVkKTsKICNlbmRpZgotICAgICAgICBtX2RhdGEubV9zdXJmYWNlID0gYWRvcHRSZWYoY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKSk7CisgICAgICAgIG1fZGF0YS5tX3N1cmZhY2UgPSBhZG9wdFJlZihj
YWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCBtX3NpemUud2lk
dGgoKSwgbV9zaXplLmhlaWdodCgpKSk7CiAKICAgICBpZiAoY2Fpcm9fc3VyZmFjZV9zdGF0dXMo
bV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpCiAgICAgICAg
IHJldHVybjsgIC8vIGNyZWF0ZSB3aWxsIG5vdGljZSB3ZSBkaWRuJ3Qgc2V0IG1faW5pdGlhbGl6
ZWQgYW5kIGZhaWwuCiAKKyAgICBjYWlyb1N1cmZhY2VTZXREZXZpY2VTY2FsZShtX2RhdGEubV9z
dXJmYWNlLmdldCgpLCBtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOworCiAg
ICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1
cmZhY2UuZ2V0KCkpKTsKICAgICBtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuc2V0Q3IoY3IuZ2V0
KCkpOwogICAgIG1fZGF0YS5tX2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29u
dGV4dD4oJm1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dCk7CkBAIC0yMzEsNiArMjQ1LDcgQEAgUmVm
UHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmUKIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaGF2aW9yKSBjb25zdAog
eworICAgIC8vIGNvcHlDYWlyb0ltYWdlU3VyZmFjZSBpbmhlcml0cyBzdXJmYWNlJ3MgZGV2aWNl
IHNjYWxlIGZhY3Rvci4KICAgICBpZiAoY29weUJlaGF2aW9yID09IENvcHlCYWNraW5nU3RvcmUp
CiAgICAgICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKGNvcHlDYWlyb0ltYWdlU3VyZmFj
ZShtX2RhdGEubV9zdXJmYWNlLmdldCgpKSk7CiAKQEAgLTI4Myw3ICsyOTgsNyBAQCB2b2lkIElt
YWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4m
IGxvb2tVcFRhYmxlKQogICAgICAgICAgICAgKnBpeGVsID0gcHJlbXVsdGlwbGllZEFSR0JGcm9t
Q29sb3IocGl4ZWxDb2xvcik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgY2Fpcm9fc3VyZmFjZV9t
YXJrX2RpcnR5X3JlY3RhbmdsZShtX2RhdGEubV9zdXJmYWNlLmdldCgpLCAwLCAwLCBtX3NpemUu
d2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlf
cmVjdGFuZ2xlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIDAsIDAsIG1fbG9naWNhbFNpemUud2lk
dGgoKSwgbV9sb2dpY2FsU2l6ZS5oZWlnaHQoKSk7CiB9CiAKIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IGNvcHlTdXJmYWNlVG9JbWFnZUFuZEFkanVzdFJlY3QoY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlLCBJbnRSZWN0JiByZWN0KQpAQCAtMzAxLDcgKzMxNiw3IEBAIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IGNvcHlTdXJmYWNlVG9JbWFnZUFuZEFkanVzdFJlY3QoY2Fpcm9fc3VyZmFjZV90KiBz
dXJmYWNlCiB9CiAKIHRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVkPgotUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1h
Z2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQorUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVj
dCYgbG9naWNhbFJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgY29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSkKIHsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHJlc3VsdCA9IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkg
KiA0KTsKIApAQCAtMzMwLDEzICszNDUsMTcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBn
ZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXQKICAg
ICAgICAgZW5keSA9IHNpemUuaGVpZ2h0KCk7CiAgICAgaW50IG51bVJvd3MgPSBlbmR5IC0gb3Jp
Z2lueTsKIAorICAgIC8vIFRoZSBzaXplIG9mIHRoZSBkZXJpdmVkIHN1cmZhY2UgaXMgaW4gQmFj
a2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbS4KKyAgICAvLyBXZSBuZWVkIHRvIHNldCB0aGUgZGV2
aWNlIHNjYWxlIGZvciB0aGUgZGVyaXZlZCBzdXJmYWNlIGZyb20gdGhpcyBJbWFnZUJ1ZmZlci4K
ICAgICBJbnRSZWN0IGltYWdlUmVjdChvcmlnaW54LCBvcmlnaW55LCBudW1Db2x1bW5zLCBudW1S
b3dzKTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZVN1cmZhY2UgPSBjb3B5U3Vy
ZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KGRhdGEubV9zdXJmYWNlLmdldCgpLCBpbWFnZVJlY3Qp
OworICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKGltYWdlU3VyZmFjZS5nZXQoKSwgcmVz
b2x1dGlvblNjYWxlLCByZXNvbHV0aW9uU2NhbGUpOwogICAgIG9yaWdpbnggPSBpbWFnZVJlY3Qu
eCgpOwogICAgIG9yaWdpbnkgPSBpbWFnZVJlY3QueSgpOwogICAgIGlmIChpbWFnZVN1cmZhY2Ug
IT0gZGF0YS5tX3N1cmZhY2UuZ2V0KCkpIHsKLSAgICAgICAgSW50UmVjdCBhcmVhID0gaW50ZXJz
ZWN0aW9uKHJlY3QsIEludFJlY3QoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7
Ci0gICAgICAgIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIoZGF0YS5tX3N1cmZhY2Uu
Z2V0KCksIGltYWdlU3VyZmFjZS5nZXQoKSwgSW50U2l6ZSgtYXJlYS54KCksIC1hcmVhLnkoKSks
IEludFJlY3QoSW50UG9pbnQoKSwgYXJlYS5zaXplKCkpLCBJbnRTaXplKCksIENBSVJPX09QRVJB
VE9SX1NPVVJDRSk7CisgICAgICAgIC8vIFRoaXMgY2Fpcm8gc3VyZmFjZSBvcGVyYXRpb24gaXMg
ZG9uZSBpbiBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbS4KKyAgICAgICAgSW50UmVjdCBsb2dpY2Fs
QXJlYSA9IGludGVyc2VjdGlvbihsb2dpY2FsUmVjdCwgSW50UmVjdCgwLCAwLCBsb2dpY2FsU2l6
ZS53aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSkpOworICAgICAgICBjb3B5UmVjdEZyb21P
bmVTdXJmYWNlVG9Bbm90aGVyKGRhdGEubV9zdXJmYWNlLmdldCgpLCBpbWFnZVN1cmZhY2UuZ2V0
KCksIEludFNpemUoLWxvZ2ljYWxBcmVhLngoKSwgLWxvZ2ljYWxBcmVhLnkoKSksIEludFJlY3Qo
SW50UG9pbnQoKSwgbG9naWNhbEFyZWEuc2l6ZSgpKSwgSW50U2l6ZSgpLCBDQUlST19PUEVSQVRP
Ul9TT1VSQ0UpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlU3VyZmFjZS5nZXQoKSk7CkBAIC0zNzcsNTMgKzM5
Niw5MiBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckRhdAogICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZSgpOwogfQogCi1SZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11
bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkg
Y29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFVuaXQ+CitpbmxpbmUgVW5pdCBsb2dpY2FsVW5pdChj
b25zdCBVbml0JiB2YWx1ZSwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtT2ZWYWx1
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQogewotICAgIHJldHVybiBnZXRJbWFnZURhdGE8VW5t
dWx0aXBsaWVkPihyZWN0LCBtX2RhdGEsIG1fc2l6ZSk7CisgICAgaWYgKGNvb3JkaW5hdGVTeXN0
ZW1PZlZhbHVlID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtIHx8IHJlc29sdXRpb25TY2FsZSA9
PSAxLjApCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBVbml0IHJlc3VsdCh2YWx1ZSk7Cisg
ICAgcmVzdWx0LnNjYWxlKDEuMCAvIHJlc29sdXRpb25TY2FsZSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVs
dGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBj
b25zdAordGVtcGxhdGU8dHlwZW5hbWUgVW5pdD4KK2lubGluZSBVbml0IGJhY2tpbmdTdG9yZVVu
aXQoY29uc3QgVW5pdCYgdmFsdWUsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbU9m
VmFsdWUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKIHsKLSAgICByZXR1cm4gZ2V0SW1hZ2VEYXRh
PFByZW11bHRpcGxpZWQ+KHJlY3QsIG1fZGF0YSwgbV9zaXplKTsKKyAgICBpZiAoY29vcmRpbmF0
ZVN5c3RlbU9mVmFsdWUgPT0gQmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSB8fCByZXNvbHV0
aW9uU2NhbGUgPT0gMS4wKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgVW5pdCByZXN1bHQo
dmFsdWUpOworICAgIHJlc3VsdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUpOworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0
aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VT
aXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
LCBDb29yZGluYXRlU3lzdGVtKQorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZl
cjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5h
dGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKKyAgICBJbnRSZWN0IGxvZ2ljYWxS
ZWN0ID0gbG9naWNhbFVuaXQocmVjdCwgY29vcmRpbmF0ZVN5c3RlbSwgbV9yZXNvbHV0aW9uU2Nh
bGUpOworICAgIEludFJlY3QgYmFja2luZ1N0b3JlUmVjdCA9IGJhY2tpbmdTdG9yZVVuaXQocmVj
dCwgY29vcmRpbmF0ZVN5c3RlbSwgbV9yZXNvbHV0aW9uU2NhbGUpOworICAgIHJldHVybiBnZXRJ
bWFnZURhdGE8VW5tdWx0aXBsaWVkPihiYWNraW5nU3RvcmVSZWN0LCBsb2dpY2FsUmVjdCwgbV9k
YXRhLCBtX3NpemUsIG1fbG9naWNhbFNpemUsIG1fcmVzb2x1dGlvblNjYWxlKTsKK30KIAotICAg
IEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKLSAgICBBU1NFUlQoc291cmNlUmVjdC5o
ZWlnaHQoKSA+IDApOworUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0
UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lz
dGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0Cit7CisgICAgSW50UmVjdCBsb2dpY2FsUmVjdCA9
IGxvZ2ljYWxVbml0KHJlY3QsIGNvb3JkaW5hdGVTeXN0ZW0sIG1fcmVzb2x1dGlvblNjYWxlKTsK
KyAgICBJbnRSZWN0IGJhY2tpbmdTdG9yZVJlY3QgPSBiYWNraW5nU3RvcmVVbml0KHJlY3QsIGNv
b3JkaW5hdGVTeXN0ZW0sIG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICByZXR1cm4gZ2V0SW1hZ2VE
YXRhPFByZW11bHRpcGxpZWQ+KGJhY2tpbmdTdG9yZVJlY3QsIGxvZ2ljYWxSZWN0LCBtX2RhdGEs
IG1fc2l6ZSwgbV9sb2dpY2FsU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUpOworfQogCi0gICAgaW50
IG9yaWdpbnggPSBzb3VyY2VSZWN0LngoKTsKLSAgICBpbnQgZGVzdHggPSBkZXN0UG9pbnQueCgp
ICsgc291cmNlUmVjdC54KCk7Cit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlw
bHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYg
c291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRl
c3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKQoreworICAgIEludFJl
Y3Qgc2NhbGVkU291cmNlUmVjdCA9IGJhY2tpbmdTdG9yZVVuaXQoc291cmNlUmVjdCwgY29vcmRp
bmF0ZVN5c3RlbSwgbV9yZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgc2NhbGVkU291cmNl
U2l6ZSA9IGJhY2tpbmdTdG9yZVVuaXQoc291cmNlU2l6ZSwgY29vcmRpbmF0ZVN5c3RlbSwgbV9y
ZXNvbHV0aW9uU2NhbGUpOworICAgIEludFBvaW50IHNjYWxlZERlc3RQb2ludCA9IGJhY2tpbmdT
dG9yZVVuaXQoZGVzdFBvaW50LCBjb29yZGluYXRlU3lzdGVtLCBtX3Jlc29sdXRpb25TY2FsZSk7
CisgICAgSW50UmVjdCBsb2dpY2FsU291cmNlUmVjdCA9IGxvZ2ljYWxVbml0KHNvdXJjZVJlY3Qs
IGNvb3JkaW5hdGVTeXN0ZW0sIG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGxvZ2lj
YWxTb3VyY2VTaXplID0gbG9naWNhbFVuaXQoc291cmNlU2l6ZSwgY29vcmRpbmF0ZVN5c3RlbSwg
bV9yZXNvbHV0aW9uU2NhbGUpOworICAgIEludFBvaW50IGxvZ2ljYWxEZXN0UG9pbnQgPSBsb2dp
Y2FsVW5pdChkZXN0UG9pbnQsIGNvb3JkaW5hdGVTeXN0ZW0sIG1fcmVzb2x1dGlvblNjYWxlKTsK
KworICAgIEFTU0VSVChzY2FsZWRTb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKKyAgICBBU1NFUlQo
c2NhbGVkU291cmNlUmVjdC5oZWlnaHQoKSA+IDApOworCisgICAgaW50IG9yaWdpbnggPSBzY2Fs
ZWRTb3VyY2VSZWN0LngoKTsKKyAgICBpbnQgZGVzdHggPSBzY2FsZWREZXN0UG9pbnQueCgpICsg
c2NhbGVkU291cmNlUmVjdC54KCk7CisgICAgaW50IGxvZ2ljYWxEZXN0eCA9IGxvZ2ljYWxEZXN0
UG9pbnQueCgpICsgbG9naWNhbFNvdXJjZVJlY3QueCgpOwogICAgIEFTU0VSVChkZXN0eCA+PSAw
KTsKICAgICBBU1NFUlQoZGVzdHggPCBtX3NpemUud2lkdGgoKSk7CiAgICAgQVNTRVJUKG9yaWdp
bnggPj0gMCk7Ci0gICAgQVNTRVJUKG9yaWdpbnggPD0gc291cmNlUmVjdC5tYXhYKCkpOworICAg
IEFTU0VSVChvcmlnaW54IDw9IHNjYWxlZFNvdXJjZVJlY3QubWF4WCgpKTsKIAotICAgIGludCBl
bmR4ID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QubWF4WCgpOworICAgIGludCBlbmR4ID0g
c2NhbGVkRGVzdFBvaW50LngoKSArIHNjYWxlZFNvdXJjZVJlY3QubWF4WCgpOworICAgIGludCBs
b2dpY2FsRW5keCA9IGxvZ2ljYWxEZXN0UG9pbnQueCgpICsgbG9naWNhbFNvdXJjZVJlY3QubWF4
WCgpOwogICAgIEFTU0VSVChlbmR4IDw9IG1fc2l6ZS53aWR0aCgpKTsKIAogICAgIGludCBudW1D
b2x1bW5zID0gZW5keCAtIGRlc3R4OworICAgIGludCBsb2dpY2FsTnVtQ29sdW1ucyA9IGxvZ2lj
YWxFbmR4IC0gbG9naWNhbERlc3R4OwogCi0gICAgaW50IG9yaWdpbnkgPSBzb3VyY2VSZWN0Lnko
KTsKLSAgICBpbnQgZGVzdHkgPSBkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC55KCk7CisgICAg
aW50IG9yaWdpbnkgPSBzY2FsZWRTb3VyY2VSZWN0LnkoKTsKKyAgICBpbnQgZGVzdHkgPSBzY2Fs
ZWREZXN0UG9pbnQueSgpICsgc2NhbGVkU291cmNlUmVjdC55KCk7CisgICAgaW50IGxvZ2ljYWxE
ZXN0eSA9IGxvZ2ljYWxEZXN0UG9pbnQueSgpICsgbG9naWNhbFNvdXJjZVJlY3QueSgpOwogICAg
IEFTU0VSVChkZXN0eSA+PSAwKTsKICAgICBBU1NFUlQoZGVzdHkgPCBtX3NpemUuaGVpZ2h0KCkp
OwogICAgIEFTU0VSVChvcmlnaW55ID49IDApOwotICAgIEFTU0VSVChvcmlnaW55IDw9IHNvdXJj
ZVJlY3QubWF4WSgpKTsKKyAgICBBU1NFUlQob3JpZ2lueSA8PSBzY2FsZWRTb3VyY2VSZWN0Lm1h
eFkoKSk7CiAKLSAgICBpbnQgZW5keSA9IGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0Lm1heFko
KTsKKyAgICBpbnQgZW5keSA9IHNjYWxlZERlc3RQb2ludC55KCkgKyBzY2FsZWRTb3VyY2VSZWN0
Lm1heFkoKTsKKyAgICBpbnQgbG9naWNhbEVuZHkgPSBsb2dpY2FsRGVzdFBvaW50LnkoKSArIGxv
Z2ljYWxTb3VyY2VSZWN0Lm1heFkoKTsKICAgICBBU1NFUlQoZW5keSA8PSBtX3NpemUuaGVpZ2h0
KCkpOwogICAgIGludCBudW1Sb3dzID0gZW5keSAtIGRlc3R5OworICAgIGludCBsb2dpY2FsTnVt
Um93cyA9IGxvZ2ljYWxFbmR5IC0gbG9naWNhbERlc3R5OwogCisgICAgLy8gVGhlIHNpemUgb2Yg
dGhlIGRlcml2ZWQgc3VyZmFjZSBpcyBpbiBCYWNraW5nU3RvcmVDb29yZGluYXRlU3lzdGVtLgor
ICAgIC8vIFdlIG5lZWQgdG8gc2V0IHRoZSBkZXZpY2Ugc2NhbGUgZm9yIHRoZSBkZXJpdmVkIHN1
cmZhY2UgZnJvbSB0aGlzIEltYWdlQnVmZmVyLgogICAgIEludFJlY3QgaW1hZ2VSZWN0KGRlc3R4
LCBkZXN0eSwgbnVtQ29sdW1ucywgbnVtUm93cyk7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gaW1hZ2VTdXJmYWNlID0gY29weVN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChtX2RhdGEu
bV9zdXJmYWNlLmdldCgpLCBpbWFnZVJlY3QpOworICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNj
YWxlKGltYWdlU3VyZmFjZS5nZXQoKSwgbV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNj
YWxlKTsKICAgICBkZXN0eCA9IGltYWdlUmVjdC54KCk7CiAgICAgZGVzdHkgPSBpbWFnZVJlY3Qu
eSgpOwogCiAgICAgdW5zaWduZWQgY2hhciogcGl4ZWxEYXRhID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShpbWFnZVN1cmZhY2UuZ2V0KCkpOwogCi0gICAgdW5zaWduZWQgc3JjQnl0ZXNQ
ZXJSb3cgPSA0ICogc291cmNlU2l6ZS53aWR0aCgpOworICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVy
Um93ID0gNCAqIHNjYWxlZFNvdXJjZVNpemUud2lkdGgoKTsKICAgICBpbnQgc3RyaWRlID0gY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKGltYWdlU3VyZmFjZS5nZXQoKSk7CiAKICAgICB1
bnNpZ25lZCBjaGFyKiBzcmNSb3dzID0gc291cmNlLT5kYXRhKCkgKyBvcmlnaW55ICogc3JjQnl0
ZXNQZXJSb3cgKyBvcmlnaW54ICogNDsKQEAgLTQ1MywxMCArNTExLDEzIEBAIHZvaWQgSW1hZ2VC
dWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJh
eSogc291cmNlLCBjCiAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7CiAgICAgfQog
Ci0gICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShpbWFnZVN1cmZhY2UuZ2V0
KCksIGRlc3R4LCBkZXN0eSwgbnVtQ29sdW1ucywgbnVtUm93cyk7CisgICAgLy8gVGhpcyBjYWly
byBzdXJmYWNlIG9wZXJhdGlvbiBpcyBkb25lIGluIExvZ2ljYWxDb29yZGluYXRlU3lzdGVtLgor
ICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUoaW1hZ2VTdXJmYWNlLmdldCgp
LCBsb2dpY2FsRGVzdHgsIGxvZ2ljYWxEZXN0eSwgbG9naWNhbE51bUNvbHVtbnMsIGxvZ2ljYWxO
dW1Sb3dzKTsKIAotICAgIGlmIChpbWFnZVN1cmZhY2UgIT0gbV9kYXRhLm1fc3VyZmFjZS5nZXQo
KSkKLSAgICAgICAgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihpbWFnZVN1cmZhY2Uu
Z2V0KCksIG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIEludFNpemUoKSwgSW50UmVjdCgwLCAwLCBu
dW1Db2x1bW5zLCBudW1Sb3dzKSwgSW50U2l6ZShkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54
KCksIGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKSksIENBSVJPX09QRVJBVE9SX1NPVVJD
RSk7CisgICAgaWYgKGltYWdlU3VyZmFjZSAhPSBtX2RhdGEubV9zdXJmYWNlLmdldCgpKSB7Cisg
ICAgICAgIC8vIFRoaXMgY2Fpcm8gc3VyZmFjZSBvcGVyYXRpb24gaXMgZG9uZSBpbiBMb2dpY2Fs
Q29vcmRpbmF0ZVN5c3RlbS4KKyAgICAgICAgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhl
cihpbWFnZVN1cmZhY2UuZ2V0KCksIG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIEludFNpemUoKSwg
SW50UmVjdCgwLCAwLCBsb2dpY2FsTnVtQ29sdW1ucywgbG9naWNhbE51bVJvd3MpLCBJbnRTaXpl
KGxvZ2ljYWxEZXN0UG9pbnQueCgpICsgbG9naWNhbFNvdXJjZVJlY3QueCgpLCBsb2dpY2FsRGVz
dFBvaW50LnkoKSArIGxvZ2ljYWxTb3VyY2VSZWN0LnkoKSksIENBSVJPX09QRVJBVE9SX1NPVVJD
RSk7CisgICAgfQogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKEVGTCkKQEAg
LTUxNyw2ICs1NzgsNyBAQCBQbGF0Zm9ybUxheWVyKiBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1MYXll
cigpIGNvbnN0CiBib29sIEltYWdlQnVmZmVyOjpjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0QmLCBHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgZGVzdGluYXRp
b25UZXh0dXJlLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCBwcmVtdWx0aXBseUFscGhh
LCBib29sIGZsaXBZKQogewogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShtX3Jlc29sdXRpb25TY2FsZSA9PSAxLjAsICJTaW5jZSB0aGUg
SGlEUEkgQ2FudmFzIGZlYXR1cmUgaXMgcmVtb3ZlZCwgdGhlIHJlc29sdXRpb24gZmFjdG9yIGhl
cmUgaXMgYWx3YXlzIDEuIik7CiAgICAgaWYgKHByZW11bHRpcGx5QWxwaGEgfHwgZmxpcFkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281846</attachid>
            <date>2016-06-22 10:06:35 -0700</date>
            <delta_ts>2016-06-24 09:06:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157848-20160623020626.patch</filename>
            <type>text/plain</type>
            <size>19920</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJjZTM0ZDlmYjcwMjI0
Yjg1Y2ExYTQxYzE4YjViOWU0NmY0MTQyMy4uNWQ5YmEyMmU1NjlmYTY1ZmQxMjkxMDg1ZTEzYTA1
MzA2ZmFkNzI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE2LTA2LTIyICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtdW0VGTF0g
SW1hZ2VCdWZmZXJDYWlybyBzaG91bGQgYWNjZXB0IHJlc29sdXRpb24gZmFjdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc4NDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbWFnZUJ1ZmZlckNhaXJv
IGlnbm9yZWQgdGhlIHJlc29sdXRpb24gZmFjdG9yIHBhc3NlZCBpbiBpdHMgY29uc3RydWN0b3Iu
CisgICAgICAgIFRoaXMgcmVzb2x1dGlvbiBmYWN0b3IgaXMgb3JpZ2luYWxseSBpbnRyb2R1Y2Vk
IGZvciBIaURQSSBDYW52YXMsCisgICAgICAgIGFuZCBzaW5jZSBIaURQSSBjYW52YXMgaXMgbm90
IGVuYWJsZWQgaW4gdGhlIHBvcnRzIHVzaW5nIENhaXJvLAorICAgICAgICB0aGUgbGFjayBvZiB0
aGlzIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGNhdXNlIGFueSBwcm9ibGVtcy4KKyAgICAgICAg
QW5kIG5vdywgSGlEUEkgQ2FudmFzIGlzIHJlbW92ZWQgZnJvbSB0aGUgdHJlZS4KKworICAgICAg
ICBIb3dldmVyLCBXZWJLaXQgQ1NTIGZpbHRlciB1c2VzIHRoaXMgcGF0aC4KKyAgICAgICAgVGhl
IG1pc3NpbmcgaW1wbGVtZW50YXRpb24gaXMgcmVxdWlyZWQgdW5kZXIgdGhlIEhpRFBJIGVudmly
b25tZW50LgorCisgICAgICAgIFNpbmNlIENhaXJvIHN1cmZhY2UgY2FuIGhhdmUgdGhlIGRldmlj
ZSBzY2FsZSBmYWN0b3IgdHJhbnNwYXJlbnRseSwKKyAgICAgICAgdGhlIG9wZXJhdGlvbnMgb250
byB0aGUgc3VyZmFjZSBpcyBjb3JyZWN0bHkgZG9uZSBpbiB0aGUgbG9naWNhbCBjb29yZGluYXRl
IHN5c3RlbS4KKyAgICAgICAgU28gYWxsIHdlIG5lZWQgdG8gaGFuZGxlIGNhcmVmdWxseSBpcyB0
aGUgZGlyZWN0IHN1cmZhY2UgbW9kaWZpY2F0aW9uIGRvbmUKKyAgICAgICAgaW4gZmlsdGVyIGVm
ZmVjdHMuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgd2UgZXh0ZW5kIHRoZSBpbWFnZSBidWZm
ZXIgc2l6ZSBhY2NvcmRpbmcgdG8gdGhlIHJlc29sdXRpb24gZmFjdG9yLAorICAgICAgICBhcyB0
aGUgc2FtZSB0byB0aGUgQ29yZUdyYXBoaWNzJyBpbXBsZW1lbnRhdGlvbiAoSW1hZ2VCdWZmZXJD
RykuIEFuZCBieSBzZXR0aW5nIHRoZQorICAgICAgICBkZXZpY2Ugc2NhbGUgZmFjdG9yIG9mIHRo
ZSBzdXJmYWNlIGNvcnJlY3RseSwgd2UgZW5zdXJlIHRoYXQgdGhlIHJlc3Qgb2YgdGhlIENhaXJv
CisgICAgICAgIHBhaW50aW5nIHN0YWNrIHdvcmtzIHdpdGggdGhlIGV4aXN0aW5nIGxvZ2ljYWwg
Y29vcmRpbmF0ZSBzeXN0ZW0uIEFuZCBpbiBJbWFnZUJ1ZmZlckNhaXJvLAorICAgICAgICB3ZSBj
YXJlZnVsbHkgaGFuZGxlIHRoZSBsb2dpY2FsIGFuZCBiYWNraW5nIHN0b3JlIGNvb3JkaW5hdGUg
c3lzdGVtLgorCisgICAgICAgIFRoZSBhdHRhY2hlZCB0ZXN0IGFwcGxpZXMgdGhlIENTUyBmaWx0
ZXIgb250byB0aGUgc3ZnIGltYWdlLiBBbmQgd2UgcmVzaXplIHRoZSBpbWFnZSBzaXplLAorICAg
ICAgICBhbmQgcGVyZm9ybSBzY3JvbGxpbmcuIEl0IGluY3VycyB0aGUgcGFpbnQsIGFuZCBmaWx0
ZXIgZWZmZWN0IHJlY2FsY3VhdGlvbi4KKyAgICAgICAgSW4gdGhhdCBwYXRoLCB0aGUgZmlsdGVy
IGVmZmVjdCBzaWRlIGFzc3VtZXMgdGhhdCB0aGUgaW1hZ2UgYnVmZmVyIHNpemUgaXMgc2NhbGVk
IHdpdGggdGhlCisgICAgICAgIHJlc29sdXRpb24gZmFjdG9yLiBTbyB3aXRob3V0IHRoaXMgcGF0
Y2gsIGl0IGluY3VycyBidWZmZXIgb3ZlcmZsb3cgYW5kIGxlYWRzIFdlYlByb2Nlc3MgY3Jhc2gu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW50UG9pbnQ6OnNjYWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0
YTo6Y3JlYXRlQ29tcG9zaXRvckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xv
clNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpsb2dpY2FsVW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpiYWNraW5nU3RvcmVVbml0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKToKKwogMjAx
Ni0wNi0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIHZhcmlhZGljIHBhcmFtZXRlcnMgdG8gR09iamVj
dCBET00gYmluZGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2lu
dC5oCmluZGV4IDMzOTBmNDRjYmNiNDhkZDc2YzlkMzQ5MzYyMmZkM2NmY2JlYTM1MTUuLjRmYTll
NWJkMzY0ZTYwNjIxZmU0MzBhMDRiOGU4NjhjNzNkNTM4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaApAQCAtODIsNiArODIsMTEgQEAgY2xhc3MgSW50
UG9pbnQgewogICAgICAgICBtX3ggPSBscm91bmRmKHN0YXRpY19jYXN0PGZsb2F0PihtX3ggKiBz
eCkpOwogICAgICAgICBtX3kgPSBscm91bmRmKHN0YXRpY19jYXN0PGZsb2F0PihtX3kgKiBzeSkp
OwogICAgIH0KKworICAgIHZvaWQgc2NhbGUoZmxvYXQgc2NhbGUpCisgICAgeworICAgICAgICB0
aGlzLT5zY2FsZShzY2FsZSwgc2NhbGUpOworICAgIH0KICAgICAKICAgICBJbnRQb2ludCBleHBh
bmRlZFRvKGNvbnN0IEludFBvaW50JiBvdGhlcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwCmluZGV4IDA0NTNhNjI1N2YwZGVjNzk0ZTM3OGZlYTU2MWMyYjcxNmUzMGEyYzYuLjU4
NmNkNTNlNDBkZmM4ZjFjNDVhZDg1ZDM2ZWYwZjliYTFiZTE4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwCkBAIC0xMjEsNiArMTIxLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OmNyZWF0ZUNv
bXBvc2l0b3JCdWZmZXIoKQogCiAgICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9IEdMQ29udGV4
dDo6c2hhcmluZ0NvbnRleHQoKS0+Y2Fpcm9EZXZpY2UoKTsKICAgICBtX2NvbXBvc2l0b3JTdXJm
YWNlID0gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUoZGV2aWNl
LCBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBLCBtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3NpemUu
d2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7CisgICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2Nh
bGUobV9jb21wb3NpdG9yU3VyZmFjZS5nZXQoKSwgbV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1
dGlvblNjYWxlKTsKICAgICBtX2NvbXBvc2l0b3JDciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZSht
X2NvbXBvc2l0b3JTdXJmYWNlLmdldCgpKSk7CiAgICAgY2Fpcm9fc2V0X2FudGlhbGlhcyhtX2Nv
bXBvc2l0b3JDci5nZXQoKSwgQ0FJUk9fQU5USUFMSUFTX05PTkUpOwogfQpAQCAtMTg1LDEyICsx
ODYsMjMgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OmNyZWF0ZUNhaXJvR0xTdXJmYWNlKCkKIH0K
ICNlbmRpZgogCi1JbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBmbG9hdCAvKiByZXNvbHV0aW9uU2NhbGUgKi8sIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgYm9vbCYgc3VjY2VzcykKK0ltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBib29sJiBzdWNjZXNzKQogICAgIDogbV9kYXRh
KEludFNpemUoc2l6ZSksIHJlbmRlcmluZ01vZGUpCi0gICAgLCBtX3NpemUoc2l6ZSkKICAgICAs
IG1fbG9naWNhbFNpemUoc2l6ZSkKKyAgICAsIG1fcmVzb2x1dGlvblNjYWxlKHJlc29sdXRpb25T
Y2FsZSkKIHsKICAgICBzdWNjZXNzID0gZmFsc2U7ICAvLyBNYWtlIGVhcmx5IHJldHVybiBtZWFu
IGVycm9yLgorCisgICAgZmxvYXQgc2NhbGVkV2lkdGggPSBjZWlsZihtX3Jlc29sdXRpb25TY2Fs
ZSAqIHNpemUud2lkdGgoKSk7CisgICAgZmxvYXQgc2NhbGVkSGVpZ2h0ID0gY2VpbGYobV9yZXNv
bHV0aW9uU2NhbGUgKiBzaXplLmhlaWdodCgpKTsKKworICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ug
YXV0b21hdGljYWxseSB1c2UgYSBsb3dlciByZXNvbHV0aW9uPworICAgIGlmICghRmxvYXRTaXpl
KHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpLmlzRXhwcmVzc2libGVBc0ludFNpemUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9zaXplID0gSW50U2l6ZShzY2FsZWRXaWR0aCwgc2NhbGVk
SGVpZ2h0KTsKKyAgICBtX2RhdGEubV9zaXplID0gbV9zaXplOworCiAgICAgaWYgKG1fc2l6ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjA0LDExICsyMTYsMTMgQEAgSW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgLyogcmVzb2x1
dGlvblNjYWxlICovLCBDb2wKICNlbHNlCiAgICAgQVNTRVJUKG1fZGF0YS5tX3JlbmRlcmluZ01v
ZGUgIT0gQWNjZWxlcmF0ZWQpOwogI2VuZGlmCi0gICAgICAgIG1fZGF0YS5tX3N1cmZhY2UgPSBh
ZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCBz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9
IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIs
IG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKIAogICAgIGlmIChjYWlyb19zdXJm
YWNlX3N0YXR1cyhtX2RhdGEubV9zdXJmYWNlLmdldCgpKSAhPSBDQUlST19TVEFUVVNfU1VDQ0VT
UykKICAgICAgICAgcmV0dXJuOyAgLy8gY3JlYXRlIHdpbGwgbm90aWNlIHdlIGRpZG4ndCBzZXQg
bV9pbml0aWFsaXplZCBhbmQgZmFpbC4KIAorICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxl
KG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25T
Y2FsZSk7CisKICAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUo
bV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkpOwogICAgIG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5z
ZXRDcihjci5nZXQoKSk7CiAgICAgbV9kYXRhLm1fY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
R3JhcGhpY3NDb250ZXh0PigmbV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0KTsKQEAgLTIzMSw2ICsy
NDUsNyBAQCBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVm
ZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZp
b3IpIGNvbnN0CiB7CisgICAgLy8gY29weUNhaXJvSW1hZ2VTdXJmYWNlIGluaGVyaXRzIHN1cmZh
Y2UncyBkZXZpY2Ugc2NhbGUgZmFjdG9yLgogICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQ29weUJh
Y2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoY29weUNhaXJv
SW1hZ2VTdXJmYWNlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpKTsKIApAQCAtMjgzLDcgKzI5OCw3
IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBW
ZWN0b3I8aW50PiYgbG9va1VwVGFibGUpCiAgICAgICAgICAgICAqcGl4ZWwgPSBwcmVtdWx0aXBs
aWVkQVJHQkZyb21Db2xvcihwaXhlbENvbG9yKTsKICAgICAgICAgfQogICAgIH0KLSAgICBjYWly
b19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIDAs
IDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOworICAgIGNhaXJvX3N1cmZhY2Vf
bWFya19kaXJ0eV9yZWN0YW5nbGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbV9sb2dp
Y2FsU2l6ZS53aWR0aCgpLCBtX2xvZ2ljYWxTaXplLmhlaWdodCgpKTsKIH0KIAogUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gY29weVN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChjYWlyb19zdXJm
YWNlX3QqIHN1cmZhY2UsIEludFJlY3QmIHJlY3QpCkBAIC0zMDEsNyArMzE2LDcgQEAgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gY29weVN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UKIH0KIAogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci1S
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBJbWFnZUJ1ZmZlckRhdGEmIGRhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCitSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBJbnRSZWN0JiBsb2dpY2FsUmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBj
b25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKQogewogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0g
VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVj
dC5oZWlnaHQoKSAqIDQpOwogCkBAIC0zMzAsMTMgKzM0NSwxNyBAQCBSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1
ZmZlckRhdAogICAgICAgICBlbmR5ID0gc2l6ZS5oZWlnaHQoKTsKICAgICBpbnQgbnVtUm93cyA9
IGVuZHkgLSBvcmlnaW55OwogCisgICAgLy8gVGhlIHNpemUgb2YgdGhlIGRlcml2ZWQgc3VyZmFj
ZSBpcyBpbiBCYWNraW5nU3RvcmVDb29yZGluYXRlU3lzdGVtLgorICAgIC8vIFdlIG5lZWQgdG8g
c2V0IHRoZSBkZXZpY2Ugc2NhbGUgZm9yIHRoZSBkZXJpdmVkIHN1cmZhY2UgZnJvbSB0aGlzIElt
YWdlQnVmZmVyLgogICAgIEludFJlY3QgaW1hZ2VSZWN0KG9yaWdpbngsIG9yaWdpbnksIG51bUNv
bHVtbnMsIG51bVJvd3MpOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlU3VyZmFj
ZSA9IGNvcHlTdXJmYWNlVG9JbWFnZUFuZEFkanVzdFJlY3QoZGF0YS5tX3N1cmZhY2UuZ2V0KCks
IGltYWdlUmVjdCk7CisgICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2NhbGUoaW1hZ2VTdXJmYWNl
LmdldCgpLCByZXNvbHV0aW9uU2NhbGUsIHJlc29sdXRpb25TY2FsZSk7CiAgICAgb3JpZ2lueCA9
IGltYWdlUmVjdC54KCk7CiAgICAgb3JpZ2lueSA9IGltYWdlUmVjdC55KCk7CiAgICAgaWYgKGlt
YWdlU3VyZmFjZSAhPSBkYXRhLm1fc3VyZmFjZS5nZXQoKSkgewotICAgICAgICBJbnRSZWN0IGFy
ZWEgPSBpbnRlcnNlY3Rpb24ocmVjdCwgSW50UmVjdCgwLCAwLCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpKTsKLSAgICAgICAgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihkYXRh
Lm1fc3VyZmFjZS5nZXQoKSwgaW1hZ2VTdXJmYWNlLmdldCgpLCBJbnRTaXplKC1hcmVhLngoKSwg
LWFyZWEueSgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBhcmVhLnNpemUoKSksIEludFNpemUoKSwg
Q0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICAgICAgLy8gVGhpcyBjYWlybyBzdXJmYWNlIG9w
ZXJhdGlvbiBpcyBkb25lIGluIExvZ2ljYWxDb29yZGluYXRlU3lzdGVtLgorICAgICAgICBJbnRS
ZWN0IGxvZ2ljYWxBcmVhID0gaW50ZXJzZWN0aW9uKGxvZ2ljYWxSZWN0LCBJbnRSZWN0KDAsIDAs
IGxvZ2ljYWxTaXplLndpZHRoKCksIGxvZ2ljYWxTaXplLmhlaWdodCgpKSk7CisgICAgICAgIGNv
cHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIoZGF0YS5tX3N1cmZhY2UuZ2V0KCksIGltYWdl
U3VyZmFjZS5nZXQoKSwgSW50U2l6ZSgtbG9naWNhbEFyZWEueCgpLCAtbG9naWNhbEFyZWEueSgp
KSwgSW50UmVjdChJbnRQb2ludCgpLCBsb2dpY2FsQXJlYS5zaXplKCkpLCBJbnRTaXplKCksIENB
SVJPX09QRVJBVE9SX1NPVVJDRSk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgY2hhciogZGF0YVNy
YyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2VTdXJmYWNlLmdldCgpKTsKQEAg
LTM3Nyw1MyArMzk2LDkxIEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRh
KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0CiAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlKCk7CiB9CiAKLVJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZm
ZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGlu
YXRlU3lzdGVtKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgVW5pdD4KK2lubGluZSBVbml0IGxv
Z2ljYWxVbml0KGNvbnN0IFVuaXQmIHZhbHVlLCBJbWFnZUJ1ZmZlcjo6Q29vcmRpbmF0ZVN5c3Rl
bSBjb29yZGluYXRlU3lzdGVtT2ZWYWx1ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQogewotICAg
IHJldHVybiBnZXRJbWFnZURhdGE8VW5tdWx0aXBsaWVkPihyZWN0LCBtX2RhdGEsIG1fc2l6ZSk7
CisgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW1PZlZhbHVlID09IEltYWdlQnVmZmVyOjpMb2dpY2Fs
Q29vcmRpbmF0ZVN5c3RlbSB8fCByZXNvbHV0aW9uU2NhbGUgPT0gMS4wKQorICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgVW5pdCByZXN1bHQodmFsdWUpOworICAgIHJlc3VsdC5zY2FsZSgxLjAg
LyByZXNvbHV0aW9uU2NhbGUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29u
c3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK3RlbXBsYXRlPHR5cGVu
YW1lIFVuaXQ+CitpbmxpbmUgVW5pdCBiYWNraW5nU3RvcmVVbml0KGNvbnN0IFVuaXQmIHZhbHVl
LCBJbWFnZUJ1ZmZlcjo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtT2ZWYWx1ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlKQogewotICAgIHJldHVybiBnZXRJbWFnZURhdGE8UHJlbXVs
dGlwbGllZD4ocmVjdCwgbV9kYXRhLCBtX3NpemUpOworICAgIGlmIChjb29yZGluYXRlU3lzdGVt
T2ZWYWx1ZSA9PSBJbWFnZUJ1ZmZlcjo6QmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSB8fCBy
ZXNvbHV0aW9uU2NhbGUgPT0gMS4wKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgVW5pdCBy
ZXN1bHQodmFsdWUpOworICAgIHJlc3VsdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUpOworICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBs
eSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBz
b3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVz
dFBvaW50LCBDb29yZGluYXRlU3lzdGVtKQorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFn
ZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENv
b3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKKyAgICBJbnRSZWN0IGxv
Z2ljYWxSZWN0ID0gbG9naWNhbFVuaXQocmVjdCwgY29vcmRpbmF0ZVN5c3RlbSwgbV9yZXNvbHV0
aW9uU2NhbGUpOworICAgIEludFJlY3QgYmFja2luZ1N0b3JlUmVjdCA9IGJhY2tpbmdTdG9yZVVu
aXQocmVjdCwgY29vcmRpbmF0ZVN5c3RlbSwgbV9yZXNvbHV0aW9uU2NhbGUpOworICAgIHJldHVy
biBnZXRJbWFnZURhdGE8VW5tdWx0aXBsaWVkPihiYWNraW5nU3RvcmVSZWN0LCBsb2dpY2FsUmVj
dCwgbV9kYXRhLCBtX3NpemUsIG1fbG9naWNhbFNpemUsIG1fcmVzb2x1dGlvblNjYWxlKTsKK30K
IAotICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKLSAgICBBU1NFUlQoc291cmNl
UmVjdC5oZWlnaHQoKSA+IDApOworUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZl
cjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGlu
YXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0Cit7CisgICAgSW50UmVjdCBsb2dpY2Fs
UmVjdCA9IGxvZ2ljYWxVbml0KHJlY3QsIGNvb3JkaW5hdGVTeXN0ZW0sIG1fcmVzb2x1dGlvblNj
YWxlKTsKKyAgICBJbnRSZWN0IGJhY2tpbmdTdG9yZVJlY3QgPSBiYWNraW5nU3RvcmVVbml0KHJl
Y3QsIGNvb3JkaW5hdGVTeXN0ZW0sIG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICByZXR1cm4gZ2V0
SW1hZ2VEYXRhPFByZW11bHRpcGxpZWQ+KGJhY2tpbmdTdG9yZVJlY3QsIGxvZ2ljYWxSZWN0LCBt
X2RhdGEsIG1fc2l6ZSwgbV9sb2dpY2FsU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUpOworfQogCi0g
ICAgaW50IG9yaWdpbnggPSBzb3VyY2VSZWN0LngoKTsKLSAgICBpbnQgZGVzdHggPSBkZXN0UG9p
bnQueCgpICsgc291cmNlUmVjdC54KCk7Cit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXko
TXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50
U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9p
bnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKQoreworICAg
IEludFJlY3Qgc2NhbGVkU291cmNlUmVjdCA9IGJhY2tpbmdTdG9yZVVuaXQoc291cmNlUmVjdCwg
Y29vcmRpbmF0ZVN5c3RlbSwgbV9yZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgc2NhbGVk
U291cmNlU2l6ZSA9IGJhY2tpbmdTdG9yZVVuaXQoc291cmNlU2l6ZSwgY29vcmRpbmF0ZVN5c3Rl
bSwgbV9yZXNvbHV0aW9uU2NhbGUpOworICAgIEludFBvaW50IHNjYWxlZERlc3RQb2ludCA9IGJh
Y2tpbmdTdG9yZVVuaXQoZGVzdFBvaW50LCBjb29yZGluYXRlU3lzdGVtLCBtX3Jlc29sdXRpb25T
Y2FsZSk7CisgICAgSW50UmVjdCBsb2dpY2FsU291cmNlUmVjdCA9IGxvZ2ljYWxVbml0KHNvdXJj
ZVJlY3QsIGNvb3JkaW5hdGVTeXN0ZW0sIG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRQb2lu
dCBsb2dpY2FsRGVzdFBvaW50ID0gbG9naWNhbFVuaXQoZGVzdFBvaW50LCBjb29yZGluYXRlU3lz
dGVtLCBtX3Jlc29sdXRpb25TY2FsZSk7CisKKyAgICBBU1NFUlQoc2NhbGVkU291cmNlUmVjdC53
aWR0aCgpID4gMCk7CisgICAgQVNTRVJUKHNjYWxlZFNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsK
KworICAgIGludCBvcmlnaW54ID0gc2NhbGVkU291cmNlUmVjdC54KCk7CisgICAgaW50IGRlc3R4
ID0gc2NhbGVkRGVzdFBvaW50LngoKSArIHNjYWxlZFNvdXJjZVJlY3QueCgpOworICAgIGludCBs
b2dpY2FsRGVzdHggPSBsb2dpY2FsRGVzdFBvaW50LngoKSArIGxvZ2ljYWxTb3VyY2VSZWN0Lngo
KTsKICAgICBBU1NFUlQoZGVzdHggPj0gMCk7CiAgICAgQVNTRVJUKGRlc3R4IDwgbV9zaXplLndp
ZHRoKCkpOwogICAgIEFTU0VSVChvcmlnaW54ID49IDApOwotICAgIEFTU0VSVChvcmlnaW54IDw9
IHNvdXJjZVJlY3QubWF4WCgpKTsKKyAgICBBU1NFUlQob3JpZ2lueCA8PSBzY2FsZWRTb3VyY2VS
ZWN0Lm1heFgoKSk7CiAKLSAgICBpbnQgZW5keCA9IGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0
Lm1heFgoKTsKKyAgICBpbnQgZW5keCA9IHNjYWxlZERlc3RQb2ludC54KCkgKyBzY2FsZWRTb3Vy
Y2VSZWN0Lm1heFgoKTsKKyAgICBpbnQgbG9naWNhbEVuZHggPSBsb2dpY2FsRGVzdFBvaW50Lngo
KSArIGxvZ2ljYWxTb3VyY2VSZWN0Lm1heFgoKTsKICAgICBBU1NFUlQoZW5keCA8PSBtX3NpemUu
d2lkdGgoKSk7CiAKICAgICBpbnQgbnVtQ29sdW1ucyA9IGVuZHggLSBkZXN0eDsKKyAgICBpbnQg
bG9naWNhbE51bUNvbHVtbnMgPSBsb2dpY2FsRW5keCAtIGxvZ2ljYWxEZXN0eDsKIAotICAgIGlu
dCBvcmlnaW55ID0gc291cmNlUmVjdC55KCk7Ci0gICAgaW50IGRlc3R5ID0gZGVzdFBvaW50Lnko
KSArIHNvdXJjZVJlY3QueSgpOworICAgIGludCBvcmlnaW55ID0gc2NhbGVkU291cmNlUmVjdC55
KCk7CisgICAgaW50IGRlc3R5ID0gc2NhbGVkRGVzdFBvaW50LnkoKSArIHNjYWxlZFNvdXJjZVJl
Y3QueSgpOworICAgIGludCBsb2dpY2FsRGVzdHkgPSBsb2dpY2FsRGVzdFBvaW50LnkoKSArIGxv
Z2ljYWxTb3VyY2VSZWN0LnkoKTsKICAgICBBU1NFUlQoZGVzdHkgPj0gMCk7CiAgICAgQVNTRVJU
KGRlc3R5IDwgbV9zaXplLmhlaWdodCgpKTsKICAgICBBU1NFUlQob3JpZ2lueSA+PSAwKTsKLSAg
ICBBU1NFUlQob3JpZ2lueSA8PSBzb3VyY2VSZWN0Lm1heFkoKSk7CisgICAgQVNTRVJUKG9yaWdp
bnkgPD0gc2NhbGVkU291cmNlUmVjdC5tYXhZKCkpOwogCi0gICAgaW50IGVuZHkgPSBkZXN0UG9p
bnQueSgpICsgc291cmNlUmVjdC5tYXhZKCk7CisgICAgaW50IGVuZHkgPSBzY2FsZWREZXN0UG9p
bnQueSgpICsgc2NhbGVkU291cmNlUmVjdC5tYXhZKCk7CisgICAgaW50IGxvZ2ljYWxFbmR5ID0g
bG9naWNhbERlc3RQb2ludC55KCkgKyBsb2dpY2FsU291cmNlUmVjdC5tYXhZKCk7CiAgICAgQVNT
RVJUKGVuZHkgPD0gbV9zaXplLmhlaWdodCgpKTsKICAgICBpbnQgbnVtUm93cyA9IGVuZHkgLSBk
ZXN0eTsKKyAgICBpbnQgbG9naWNhbE51bVJvd3MgPSBsb2dpY2FsRW5keSAtIGxvZ2ljYWxEZXN0
eTsKIAorICAgIC8vIFRoZSBzaXplIG9mIHRoZSBkZXJpdmVkIHN1cmZhY2UgaXMgaW4gQmFja2lu
Z1N0b3JlQ29vcmRpbmF0ZVN5c3RlbS4KKyAgICAvLyBXZSBuZWVkIHRvIHNldCB0aGUgZGV2aWNl
IHNjYWxlIGZvciB0aGUgZGVyaXZlZCBzdXJmYWNlIGZyb20gdGhpcyBJbWFnZUJ1ZmZlci4KICAg
ICBJbnRSZWN0IGltYWdlUmVjdChkZXN0eCwgZGVzdHksIG51bUNvbHVtbnMsIG51bVJvd3MpOwog
ICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlU3VyZmFjZSA9IGNvcHlTdXJmYWNlVG9J
bWFnZUFuZEFkanVzdFJlY3QobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgaW1hZ2VSZWN0KTsKKyAg
ICBjYWlyb1N1cmZhY2VTZXREZXZpY2VTY2FsZShpbWFnZVN1cmZhY2UuZ2V0KCksIG1fcmVzb2x1
dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CiAgICAgZGVzdHggPSBpbWFnZVJlY3QueCgp
OwogICAgIGRlc3R5ID0gaW1hZ2VSZWN0LnkoKTsKIAogICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVs
RGF0YSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2VTdXJmYWNlLmdldCgpKTsK
IAotICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsK
KyAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdyA9IDQgKiBzY2FsZWRTb3VyY2VTaXplLndpZHRo
KCk7CiAgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShpbWFn
ZVN1cmZhY2UuZ2V0KCkpOwogCiAgICAgdW5zaWduZWQgY2hhciogc3JjUm93cyA9IHNvdXJjZS0+
ZGF0YSgpICsgb3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7CkBAIC00NTMs
MTAgKzUxMCwxMyBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVs
dGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgICAgICBzcmNSb3dzICs9
IHNyY0J5dGVzUGVyUm93OwogICAgIH0KIAotICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9y
ZWN0YW5nbGUoaW1hZ2VTdXJmYWNlLmdldCgpLCBkZXN0eCwgZGVzdHksIG51bUNvbHVtbnMsIG51
bVJvd3MpOworICAgIC8vIFRoaXMgY2Fpcm8gc3VyZmFjZSBvcGVyYXRpb24gaXMgZG9uZSBpbiBM
b2dpY2FsQ29vcmRpbmF0ZVN5c3RlbS4KKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVj
dGFuZ2xlKGltYWdlU3VyZmFjZS5nZXQoKSwgbG9naWNhbERlc3R4LCBsb2dpY2FsRGVzdHksIGxv
Z2ljYWxOdW1Db2x1bW5zLCBsb2dpY2FsTnVtUm93cyk7CiAKLSAgICBpZiAoaW1hZ2VTdXJmYWNl
ICE9IG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpCi0gICAgICAgIGNvcHlSZWN0RnJvbU9uZVN1cmZh
Y2VUb0Fub3RoZXIoaW1hZ2VTdXJmYWNlLmdldCgpLCBtX2RhdGEubV9zdXJmYWNlLmdldCgpLCBJ
bnRTaXplKCksIEludFJlY3QoMCwgMCwgbnVtQ29sdW1ucywgbnVtUm93cyksIEludFNpemUoZGVz
dFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpLCBkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC55
KCkpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGlmIChpbWFnZVN1cmZhY2UgIT0gbV9k
YXRhLm1fc3VyZmFjZS5nZXQoKSkgeworICAgICAgICAvLyBUaGlzIGNhaXJvIHN1cmZhY2Ugb3Bl
cmF0aW9uIGlzIGRvbmUgaW4gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0uCisgICAgICAgIGNvcHlS
ZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIoaW1hZ2VTdXJmYWNlLmdldCgpLCBtX2RhdGEubV9z
dXJmYWNlLmdldCgpLCBJbnRTaXplKCksIEludFJlY3QoMCwgMCwgbG9naWNhbE51bUNvbHVtbnMs
IGxvZ2ljYWxOdW1Sb3dzKSwgSW50U2l6ZShsb2dpY2FsRGVzdFBvaW50LngoKSArIGxvZ2ljYWxT
b3VyY2VSZWN0LngoKSwgbG9naWNhbERlc3RQb2ludC55KCkgKyBsb2dpY2FsU291cmNlUmVjdC55
KCkpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIH0KIH0KIAogI2lmICFQTEFURk9STShH
VEspICYmICFQTEFURk9STShFRkwpCkBAIC01MTcsNiArNTc3LDcgQEAgUGxhdGZvcm1MYXllciog
SW1hZ2VCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogYm9vbCBJbWFnZUJ1ZmZlcjo6Y29w
eVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEJiwgR0MzRGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0IGRlc3RpbmF0aW9uVGV4dHVyZSwgR0MzRGVudW0gaW50ZXJuYWxmb3Jt
YXQsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICNpZiBFTkFCTEUoQUND
RUxFUkFURURfMkRfQ0FOVkFTKQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9yZXNvbHV0aW9u
U2NhbGUgPT0gMS4wLCAiU2luY2UgdGhlIEhpRFBJIENhbnZhcyBmZWF0dXJlIGlzIHJlbW92ZWQs
IHRoZSByZXNvbHV0aW9uIGZhY3RvciBoZXJlIGlzIGFsd2F5cyAxLiIpOwogICAgIGlmIChwcmVt
dWx0aXBseUFscGhhIHx8IGZsaXBZKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAw
YTgyMTNmNmIyMTEyZmNkNmQwZDlkY2IwMmQzNTdmNWRkODM2ZGVhLi5kMzRhMDJmNmY0NDI2YjRl
NzkxODA1NDI1ZDFlMDcyNzcyZGFiZDYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDYt
MjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0dU
S11bRUZMXSBJbWFnZUJ1ZmZlckNhaXJvIHNob3VsZCBhY2NlcHQgcmVzb2x1dGlvbiBmYWN0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzg0OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9o
aWRwaS9maWx0ZXJzLWFuZC1pbWFnZS1idWZmZXItcmVzb2x1dGlvbi1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpZHBpL2ZpbHRlcnMtYW5kLWltYWdlLWJ1ZmZlci1yZXNv
bHV0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA2LTIyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGRvZXNuJ3Qg
d29yayBpbiBEdW1wUmVuZGVyVHJlZSBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2hpZHBpL2ZpbHRlcnMtYW5kLWltYWdlLWJ1ZmZlci1yZXNvbHV0aW9uLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2ZpbHRlcnMtYW5kLWltYWdlLWJ1ZmZlci1y
ZXNvbHV0aW9uLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY2OGNiNTM1NDI3MzNjYjBkMDY5
YmI2ZDcxYThmNWFmMWU2ODUwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
aGlkcGkvZmlsdGVycy1hbmQtaW1hZ2UtYnVmZmVyLXJlc29sdXRpb24tZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDIxIEBACis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Vuc3VyZS1oaWRwaS5qcyI+
PC9zY3JpcHQ+Cis8c3R5bGU+CitpbWcgeworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6
IDIwMHB4OworfQorCitwIHsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgZm9udDogMjBweC8xIEFoZW07Cit9CisK
KyN0YXJnZXQgeworICAgIGhlaWdodDogMTAwMHB4OworfQorPC9zdHlsZT4KKzxkaXY+VGhpcyBp
cyB0ZXN0aW5nIHRoYXQgaW1hZ2UgYnVmZmVycyBmb3IgZmlsdGVycyBhcmUgY29ycmVjdGx5IHNj
YWxlZCB3aXRoIHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yIG9uIHRoZSBIaURQSSBlbnZpcm9ubWVu
dC4gSWYgaXQgaXMgd3JvbmcsIHRoaXMgdGVzdCBjYXVzZXMgYSBjcmFzaC48L2Rpdj4KKzxpbWcg
c3JjPSJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2Zycgd2lkdGg9JzIwMCcgaGVpZ2h0PScyMDAnPjxyZWN0IGZpbGw9J2dyZWVuJyB3
aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJy8+PC9zdmc+Ij4KKzxpbWcgaWQ9InRhcmdldCIgc3Jj
PSJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2Zycgd2lkdGg9JzIwMCcgaGVpZ2h0PScyMDAnPjxyZWN0IGZpbGw9J2dyZWVuJyB3aWR0
aD0nMTAwJScgaGVpZ2h0PScxMDAlJy8+PC9zdmc+Ij4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvaGlkcGkvZmlsdGVycy1hbmQtaW1hZ2UtYnVmZmVyLXJlc29sdXRpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvaGlkcGkvZmlsdGVycy1hbmQtaW1hZ2UtYnVmZmVyLXJlc29sdXRpb24u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mMjRkMmVkMmFiZGE3YThjY2UwOWY0ZDVmYzZhNTExNDA0OTQ4NTk3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9maWx0ZXJzLWFuZC1p
bWFnZS1idWZmZXItcmVzb2x1dGlvbi5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZW5zdXJlLWhpZHBpLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK2ltZyB7Cisg
ICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogMjAwcHg7Cit9CisKK3AgeworICAgIHdpZHRo
OiAyMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICBmb250OiAyMHB4LzEgQWhlbTsKK30KKworLmZpbHRlcmVkIHsKKyAgICAtd2Via2l0LWZp
bHRlcjogYmx1cigwcHgpOworfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0
KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICBzY2FsZUZhY3Rvcklz
U2V0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldEJhY2tpbmdTY2FsZUZhY3RvcigyLCBzY2FsZUZh
Y3RvcklzU2V0KTsKK30KKworZnVuY3Rpb24gc2NhbGVGYWN0b3JJc1NldCgpIHsKKyAgICB2YXIg
dGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpOworICAgIHRhcmdldC5z
dHlsZS5oZWlnaHQgPSAxMDAwOworICAgIHNjcm9sbEJ5KDAsIDIwMCk7CisgICAgc2V0VGltZW91
dChmdW5jdGlvbiAoKSB7CisgICAgICAgIHNjcm9sbEJ5KDAsIC0yMDApOworICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSwgMCk7
CisgICAgfSwgMCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgcnVuVGVz
dCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8ZGl2PlRoaXMgaXMgdGVzdGluZyB0aGF0IGltYWdlIGJ1
ZmZlcnMgZm9yIGZpbHRlcnMgYXJlIGNvcnJlY3RseSBzY2FsZWQgd2l0aCB0aGUgZGV2aWNlIHNj
YWxlIGZhY3RvciBvbiB0aGUgSGlEUEkgZW52aXJvbm1lbnQuIElmIGl0IGlzIHdyb25nLCB0aGlz
IHRlc3QgY2F1c2VzIGEgY3Jhc2guPC9kaXY+Cis8aW1nIHNyYz0iZGF0YTppbWFnZS9zdmcreG1s
O3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyMDAn
IGhlaWdodD0nMjAwJz48cmVjdCBmaWxsPSdncmVlbicgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAw
JScvPjwvc3ZnPiI+Cis8aW1nIGNsYXNzPSJmaWx0ZXJlZCIgaWQ9InRhcmdldCIgc3JjPSJkYXRh
OmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
Zycgd2lkdGg9JzIwMCcgaGVpZ2h0PScyMDAnPjxyZWN0IGZpbGw9J2dyZWVuJyB3aWR0aD0nMTAw
JScgaGVpZ2h0PScxMDAlJy8+PC9zdmc+Ij4K
</data>

          </attachment>
      

    </bug>

</bugzilla>