<?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>150077</bug_id>
          
          <creation_ts>2015-10-12 18:49:25 -0700</creation_ts>
          <short_desc>Move Image::drawPattern for CG into GraphicsContext</short_desc>
          <delta_ts>2015-10-13 12:04:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1132644</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-12 18:49:25 -0700</bug_when>
    <thetext>Move Image::drawPattern for CG into GraphicsContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132648</commentid>
    <comment_count>1</comment_count>
      <attachid>262960</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-12 18:51:16 -0700</bug_when>
    <thetext>Created attachment 262960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132653</commentid>
    <comment_count>2</comment_count>
      <attachid>262963</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-12 19:02:40 -0700</bug_when>
    <thetext>Created attachment 262963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132699</commentid>
    <comment_count>3</comment_count>
      <attachid>262972</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-12 22:50:21 -0700</bug_when>
    <thetext>Created attachment 262972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132703</commentid>
    <comment_count>4</comment_count>
      <attachid>262974</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-12 22:58:26 -0700</bug_when>
    <thetext>Created attachment 262974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132809</commentid>
    <comment_count>5</comment_count>
      <attachid>262974</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-13 11:07:28 -0700</bug_when>
    <thetext>Comment on attachment 262974
Patch

r=me assuming this is mechanical</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132850</commentid>
    <comment_count>6</comment_count>
      <attachid>262974</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-13 12:04:13 -0700</bug_when>
    <thetext>Comment on attachment 262974
Patch

Clearing flags on attachment: 262974

Committed r191000: &lt;http://trac.webkit.org/changeset/191000&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132851</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-13 12:04:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262960</attachid>
            <date>2015-10-12 18:51:16 -0700</date>
            <delta_ts>2015-10-12 19:02:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150077-20151012185040.patch</filename>
            <type>text/plain</type>
            <size>16823</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwOTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVlZDk0ZTNiYjhhNWI3
MzdjYjUxNWFkODg3ZTc4MDE2Y2IyMDM2Zi4uOTQ3NTc4MTIzYmFjNTQ0NzgwMjZhYTE2M2ZlNTQ3
YTYyOTNmM2QxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE1LTEwLTEyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIE1vdmUgSW1hZ2U6
OmRyYXdQYXR0ZXJuIGZvciBDRyBpbnRvIEdyYXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDc3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gY29uc29saWRhdGUg
Y29kZSB0aGF0IGNhbGxzIGludG8gQ29yZSBHcmFwaGljcyBpbnNpZGUKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0LCBtb3ZlIHRoZSBib2R5IG9mIEltYWdlOjpkcmF3UGF0dGVybigpIGludG8KKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0Q0cuY3BwLCBhbmQgZG8gdGhlIHNhbWUgZm9yIENhaXJvLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdQYXR0ZXJuQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpkcmF3UGF0dGVybkNhbGxiYWNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5SZWxlYXNlQ2FsbGJhY2spOiBEZWxldGVk
LgorCisyMDE1LTEwLTEyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CiAgICAgICAgIFNwZWN1bGF0aXZlIENhaXJvIGJ1aWxkIGZpeGVzIGFmdGVyIHIxOTA5MTAuCiAK
ICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggMGVmMGM3ZjFiZGM2ZDYyOGIyYjM0Y2U5Nzg3ZmE2MzJkNTk1OWE5Yy4uZDgwM2Fj
NzUyNWE3ZTAzMTg4YWIxYmIzYTgyNDkyYjkxZWRjMjk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTMyMCw2ICszMjAs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CiAgICAg
ICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCisgICAgICAg
IHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworCiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0
aW9uUXVhbGl0eSk7CiAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4
IDJlYzBmYjk5ZGM0OWNmY2M0NTBiNWU5ZDZhNzViODI0M2UxYTdiZDkuLmM3ZDlmN2VhYTU0ZmM1
NTVjMWU0YjNlZDA4OTY3YjA2ZTZkZDcwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAKQEAgLTEwNzcsNiArMTA3NywxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpCit7CisgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGlt
YWdlIHlldC4KKyAgICAgICAgcmV0dXJuOworCisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKTsKKyAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBzdXJmYWNl
LmdldCgpLCBJbnRTaXplKHNpemUoKSksIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgdG9DYWlyb09wZXJhdG9yKG9wKSwgZGVzdFJlY3QpOworfQorCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggYjlkMzNjOTk3NGE0YzQ5ZmIwMmVi
YjI2ZTYxY2ExMjkwNjRiN2U1Zi4uZTRjNjNhMzQ2ZTIyZGZiMzRlY2ViYjc3MjYzYjc0ZTM3Nzdi
MGU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VDYWlyby5jcHAKQEAgLTQyLDE0ICs0Miw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgQmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBo
YXZlIGFuIGltYWdlIHlldC4KLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2Fpcm9fdCogY3IgPSBj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwotICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0Nv
bnRleHQoY3IsIHN1cmZhY2UuZ2V0KCksIEludFNpemUoc2l6ZSgpKSwgdGlsZVJlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0UmVjdCk7CisgICAg
Y29udGV4dC5kcmF3UGF0dGVybigqdGhpcywgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBjb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAKICAg
ICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXco
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggZDFmMjcwZGVhMmUxOTU2MDRkMzgyNzZlMTZm
ODRkODJiZGE5YjdmMS4uMDNhZDMxYzUxYTY4NjNkOThmYmMxM2NmYWIyZjZjMGU1NDA5ZGUyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcApAQCAtMjQzLDYgKzI0MywxMDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0
IEZsb2F0U2kKICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgYWRqdXN0ZWREZXN0UmVj
dCwgaW1hZ2UuZ2V0KCkpOwogfQogCitzdGF0aWMgdm9pZCBkcmF3UGF0dGVybkNhbGxiYWNrKHZv
aWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIENHSW1hZ2VSZWYgaW1hZ2Ug
PSAoQ0dJbWFnZVJlZilpbmZvOworICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdo
dChpbWFnZSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRl
eHQsIDEsIC0xKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgLWhlaWdo
dCk7CisjZW5kaWYKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgR3JhcGhpY3NDb250
ZXh0KGNvbnRleHQpLnJvdW5kVG9EZXZpY2VQaXhlbHMoRmxvYXRSZWN0KDAsIDAsIENHSW1hZ2VH
ZXRXaWR0aChpbWFnZSksIGhlaWdodCkpLCBpbWFnZSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhdHRl
cm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKK3sKKyAgICBhdXRvIGltYWdlID0gc3RhdGlj
X2Nhc3Q8Q0dJbWFnZVJlZj4oaW5mbyk7CisgICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2VdIHsK
KyAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOworICAgIH0pOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3sKKyAgICBpZiAoIXBhdHRlcm5UcmFuc2Zvcm0u
aXNJbnZlcnRpYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOworICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgZGVzdFJlY3Qp
OworCisgICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7CisK
KyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZGVzdFJlY3QueCgpLCBkZXN0UmVj
dC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4
dCwgMSwgLTEpOworICAgIAorICAgIC8vIENvbXB1dGUgdGhlIHNjYWxlZCB0aWxlIHNpemUuCisg
ICAgZmxvYXQgc2NhbGVkVGlsZUhlaWdodCA9IHRpbGVSZWN0LmhlaWdodCgpICogbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSk7CisgICAgCisgICAgLy8gV2UgaGF2
ZSB0byBhZGp1c3QgdGhlIHBoYXNlIHRvIGRlYWwgd2l0aCB0aGUgZmFjdCB3ZSdyZSBpbiBDYXJ0
ZXNpYW4gc3BhY2Ugbm93ICh3aXRoIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgZGVzdFJlY3Qg
YmVpbmcKKyAgICAvLyB0aGUgb3JpZ2luKS4KKyAgICBmbG9hdCBhZGp1c3RlZFggPSBwaGFzZS54
KCkgLSBkZXN0UmVjdC54KCkgKyB0aWxlUmVjdC54KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJhbnNsYXRlZCB0aGUgY29udGV4dCBzbyB0
aGF0IGRlc3RSZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBzbyBzdWJ0cmFjdCBpdCBvdXQuCisgICAg
ZmxvYXQgYWRqdXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0KCkgLSAocGhhc2UueSgpIC0gZGVzdFJl
Y3QueSgpICsgdGlsZVJlY3QueSgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJh
bnNmb3JtLmQoKSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsKKworICAgIENHSW1hZ2VSZWYgdGlsZUlt
YWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBmbG9hdCBoID0g
Q0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UpOworCisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IHN1YkltYWdlOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0g
aW1hZ2Uub3JpZ2luYWxTaXplKCk7CisjZWxzZQorICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBp
bWFnZS5zaXplKCk7CisjZW5kaWYKKyAgICBpZiAodGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6
ZSkKKyAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2U7CisgICAgZWxzZSB7CisgICAgICAgIC8v
IENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3Rv
cHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhh
cHBlbgorICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9y
ZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVj
b2RlZC4KKyAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkpOworICAgICAgICBzdWJJ
bWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UsIHRp
bGVSZWN0KSk7CisgICAgfQorCisgICAgLy8gQWRqdXN0IHRoZSBjb2xvciBzcGFjZS4KKyAgICBz
dWJJbWFnZSA9IEltYWdlOjppbWFnZVdpdGhDb2xvclNwYWNlKHN1YkltYWdlLmdldCgpLCBzdHls
ZUNvbG9yU3BhY2UpOworCisgICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBnYXBzIGJldHdlZW4g
dGlsZXMgYmVjYXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFnZSBvciBub24temVy
byBzcGFjaW5nLAorICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZpY2llbnQgQ0dQYXR0
ZXJuLWJhc2VkIG1lY2hhbmlzbS4KKyAgICBmbG9hdCBzY2FsZWRUaWxlV2lkdGggPSB0aWxlUmVj
dC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7
CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UpOworICAgIGlmICh3ID09
IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGggPT0gaW1hZ2Uuc2l6ZSgpLmhlaWdodCgpICYmICFz
cGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcuaGVpZ2h0KCkpCisgICAgICAgIENHQ29udGV4dERy
YXdUaWxlZEltYWdlKGNvbnRleHQsIEZsb2F0UmVjdChhZGp1c3RlZFgsIGFkanVzdGVkWSwgc2Nh
bGVkVGlsZVdpZHRoLCBzY2FsZWRUaWxlSGVpZ2h0KSwgc3ViSW1hZ2UuZ2V0KCkpOworICAgIGVs
c2UgeworICAgICAgICBzdGF0aWMgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxs
YmFja3MgPSB7IDAsIGRyYXdQYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sg
fTsKKyAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1N
YWtlKG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSksIDAsIDAs
IG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSksIGFkanVzdGVk
WCwgYWRqdXN0ZWRZKTsKKyAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQo
bWF0cml4LCBDR0NvbnRleHRHZXRDVE0oY29udGV4dCkpOworICAgICAgICAvLyBUaGUgdG9wIG9m
IGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2UgaXMgZHJhd24gYXQgdGhlIGJvdHRvbSBvZiB0aGUg
dGlsZS4gTWFwIGl0IHRvIHRoZSB0b3AuCisgICAgICAgIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNm
b3JtVHJhbnNsYXRlKG1hdHJpeCwgMCwgaW1hZ2Uuc2l6ZSgpLmhlaWdodCgpIC0gaCk7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgICAgICBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybVNjYWxlKG1h
dHJpeCwgMSwgLTEpOworICAgICAgICBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0
ZShtYXRyaXgsIDAsIC1oKTsKKyNlbmRpZgorICAgICAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSBDR0ltYWdlUmV0YWluKHN1YkltYWdlLmdldCgpKTsKKyAgICAgICAgUmV0YWluUHRyPENH
UGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0YoQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1h
Z2UsIENHUmVjdE1ha2UoMCwgMCwgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCkp
LCBtYXRyaXgsCisgICAgICAgICAgICB0aWxlUmVjdC53aWR0aCgpICsgc3BhY2luZy53aWR0aCgp
ICogKDEgLyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKSksCisg
ICAgICAgICAgICB0aWxlUmVjdC5oZWlnaHQoKSArIHNwYWNpbmcuaGVpZ2h0KCkgKiAoMSAvIG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5kKCkpKSwKKyAgICAgICAgICAg
IGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIHRydWUsICZwYXR0ZXJuQ2FsbGJhY2tz
KSk7CisgICAgICAgIAorICAgICAgICBpZiAoIXBhdHRlcm4pCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gcGF0dGVyblNwYWNlID0gYWRv
cHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDApKTsKKworICAgICAgICBDR0Zsb2F0IGFs
cGhhID0gMTsKKyAgICAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRDRihD
R0NvbG9yQ3JlYXRlV2l0aFBhdHRlcm4ocGF0dGVyblNwYWNlLmdldCgpLCBwYXR0ZXJuLmdldCgp
LCAmYWxwaGEpKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yU3BhY2UoY29udGV4dCwg
cGF0dGVyblNwYWNlLmdldCgpKTsKKworICAgICAgICAvLyBGSVhNRTogUmVhbGx5IHdhbnQgYSBw
dWJsaWMgQVBJIGZvciB0aGlzLiBJdCBpcyBqdXN0IENHQ29udGV4dFNldEJhc2VDVE0oY29udGV4
dCwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl5KS4KKyAgICAgICAgd2tTZXRCYXNlQ1RNKGNvbnRl
eHQsIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHkpOworICAgICAgICBDR0NvbnRleHRTZXRQYXR0
ZXJuUGhhc2UoY29udGV4dCwgQ0dTaXplWmVybyk7CisKKyAgICAgICAgQ0dDb250ZXh0U2V0Rmls
bENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNvbG9yLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0
RmlsbFJlY3QoY29udGV4dCwgQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpKTsK
KyAgICB9Cit9CisKIC8vIERyYXdzIGEgZmlsbGVkIHJlY3RhbmdsZSB3aXRoIGEgc3Ryb2tlZCBi
b3JkZXIuCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCmluZGV4IDZhM2YwYjA3ZmVjNzQzNjFmYzQzNmUx
NjA3MGExYTI0ZGU2YjMzMmIuLjQ5YzRiODMxZmUwNTU2YTQyODQ5NjJkOTdjMWI2OTkzM2NiMWZj
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cu
Y3BwCkBAIC02NywxMTAgKzY3LDEzIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZTo6aW1h
Z2VXaXRoQ29sb3JTcGFjZShDR0ltYWdlUmVmIG9yaWdpbmFsSW1hZ2UsIENvbG9yCiAgICAgcmV0
dXJuIG9yaWdpbmFsSW1hZ2U7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdQYXR0ZXJuQ2FsbGJhY2so
dm9pZCogaW5mbywgQ0dDb250ZXh0UmVmIGNvbnRleHQpCi17Ci0gICAgQ0dJbWFnZVJlZiBpbWFn
ZSA9IChDR0ltYWdlUmVmKWluZm87Ci0gICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY29u
dGV4dCwgMSwgLTEpOwotICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCAtaGVp
Z2h0KTsKLSNlbmRpZgotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBHcmFwaGljc0Nv
bnRleHQoY29udGV4dCkucm91bmRUb0RldmljZVBpeGVscyhGbG9hdFJlY3QoMCwgMCwgQ0dJbWFn
ZUdldFdpZHRoKGltYWdlKSwgaGVpZ2h0KSksIGltYWdlKTsKLX0KLQotc3RhdGljIHZvaWQgcGF0
dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQotewotICAgIGF1dG8gaW1hZ2UgPSBzdGF0
aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZV0g
ewotICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAoIW5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghcGF0dGVyblRy
YW5zZm9ybS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0dDb250ZXh0
UmVmIGNvbnRleHQgPSBjdHh0LnBsYXRmb3JtQ29udGV4dCgpOwotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjdHh0KTsKLSAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNv
bnRleHQsIGRlc3RSZWN0KTsKLSAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxl
bmRNb2RlKTsKLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZGVzdFJlY3QueCgp
LCBkZXN0UmVjdC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSk7Ci0gICAgQ0dDb250ZXh0U2NhbGVD
VE0oY29udGV4dCwgMSwgLTEpOwotICAgIAotICAgIC8vIENvbXB1dGUgdGhlIHNjYWxlZCB0aWxl
IHNpemUuCi0gICAgZmxvYXQgc2NhbGVkVGlsZUhlaWdodCA9IHRpbGVSZWN0LmhlaWdodCgpICog
bmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSk7Ci0gICAgCi0gICAg
Ly8gV2UgaGF2ZSB0byBhZGp1c3QgdGhlIHBoYXNlIHRvIGRlYWwgd2l0aCB0aGUgZmFjdCB3ZSdy
ZSBpbiBDYXJ0ZXNpYW4gc3BhY2Ugbm93ICh3aXRoIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2Yg
ZGVzdFJlY3QgYmVpbmcKLSAgICAvLyB0aGUgb3JpZ2luKS4KLSAgICBmbG9hdCBhZGp1c3RlZFgg
PSBwaGFzZS54KCkgLSBkZXN0UmVjdC54KCkgKyB0aWxlUmVjdC54KCkgKiBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJhbnNsYXRlZCB0aGUgY29u
dGV4dCBzbyB0aGF0IGRlc3RSZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBzbyBzdWJ0cmFjdCBpdCBv
dXQuCi0gICAgZmxvYXQgYWRqdXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0KCkgLSAocGhhc2UueSgp
IC0gZGVzdFJlY3QueSgpICsgdGlsZVJlY3QueSgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChw
YXR0ZXJuVHJhbnNmb3JtLmQoKSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsKLQotICAgIENHSW1hZ2VS
ZWYgdGlsZUltYWdlID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBmbG9hdCBo
ID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UpOwotCi0gICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IHN1YkltYWdlOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICBGbG9hdFNpemUgaW1hZ2VTaXpl
ID0gb3JpZ2luYWxTaXplKCk7Ci0jZWxzZQotICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBzaXpl
KCk7Ci0jZW5kaWYKLSAgICBpZiAodGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkKLSAgICAg
ICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2U7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIENvcHlpbmcg
YSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRl
Y29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhhcHBlbgotICAg
ICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdl
LCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KLSAg
ICAgICAgQVNTRVJUKGggPT0gaGVpZ2h0KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UsIHRpbGVSZWN0KSk7Ci0gICAg
fQotCi0gICAgLy8gQWRqdXN0IHRoZSBjb2xvciBzcGFjZS4KLSAgICBzdWJJbWFnZSA9IEltYWdl
OjppbWFnZVdpdGhDb2xvclNwYWNlKHN1YkltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UpOwot
Ci0gICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBnYXBzIGJldHdlZW4gdGlsZXMgYmVjYXVzZSB3
ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFnZSBvciBub24temVybyBzcGFjaW5nLAotICAg
IC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZpY2llbnQgQ0dQYXR0ZXJuLWJhc2VkIG1lY2hh
bmlzbS4KLSAgICBmbG9hdCBzY2FsZWRUaWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgpICogbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQgdyA9
IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UpOwotICAgIGlmICh3ID09IHNpemUoKS53aWR0aCgp
ICYmIGggPT0gc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcu
aGVpZ2h0KCkpCi0gICAgICAgIENHQ29udGV4dERyYXdUaWxlZEltYWdlKGNvbnRleHQsIEZsb2F0
UmVjdChhZGp1c3RlZFgsIGFkanVzdGVkWSwgc2NhbGVkVGlsZVdpZHRoLCBzY2FsZWRUaWxlSGVp
Z2h0KSwgc3ViSW1hZ2UuZ2V0KCkpOwotICAgIGVsc2UgewotICAgICAgICBzdGF0aWMgY29uc3Qg
Q0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxsYmFja3MgPSB7IDAsIGRyYXdQYXR0ZXJuQ2Fs
bGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sgfTsKLSAgICAgICAgQ0dBZmZpbmVUcmFuc2Zv
cm0gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9h
dChwYXR0ZXJuVHJhbnNmb3JtLmEoKSksIDAsIDAsIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChw
YXR0ZXJuVHJhbnNmb3JtLmQoKSksIGFkanVzdGVkWCwgYWRqdXN0ZWRZKTsKLSAgICAgICAgbWF0
cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQobWF0cml4LCBDR0NvbnRleHRHZXRDVE0oY29u
dGV4dCkpOwotICAgICAgICAvLyBUaGUgdG9wIG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ug
aXMgZHJhd24gYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGlsZS4gTWFwIGl0IHRvIHRoZSB0b3AuCi0g
ICAgICAgIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKG1hdHJpeCwgMCwgc2l6
ZSgpLmhlaWdodCgpIC0gaCk7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBtYXRyaXggPSBD
R0FmZmluZVRyYW5zZm9ybVNjYWxlKG1hdHJpeCwgMSwgLTEpOwotICAgICAgICBtYXRyaXggPSBD
R0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0ZShtYXRyaXgsIDAsIC1oKTsKLSNlbmRpZgotICAgICAg
ICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1hZ2UgPSBDR0ltYWdlUmV0YWluKHN1YkltYWdlLmdldCgp
KTsKLSAgICAgICAgUmV0YWluUHRyPENHUGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0YoQ0dQ
YXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1hZ2UsIENHUmVjdE1ha2UoMCwgMCwgdGlsZVJlY3Qud2lk
dGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCkpLCBtYXRyaXgsCi0gICAgICAgICAgICB0aWxlUmVjdC53
aWR0aCgpICsgc3BhY2luZy53aWR0aCgpICogKDEgLyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBh
dHRlcm5UcmFuc2Zvcm0uYSgpKSksCi0gICAgICAgICAgICB0aWxlUmVjdC5oZWlnaHQoKSArIHNw
YWNpbmcuaGVpZ2h0KCkgKiAoMSAvIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5z
Zm9ybS5kKCkpKSwKLSAgICAgICAgICAgIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcs
IHRydWUsICZwYXR0ZXJuQ2FsbGJhY2tzKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIXBhdHRl
cm4pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFj
ZVJlZj4gcGF0dGVyblNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDAp
KTsKLQotICAgICAgICBDR0Zsb2F0IGFscGhhID0gMTsKLSAgICAgICAgUmV0YWluUHRyPENHQ29s
b3JSZWY+IGNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlV2l0aFBhdHRlcm4ocGF0dGVyblNw
YWNlLmdldCgpLCBwYXR0ZXJuLmdldCgpLCAmYWxwaGEpKTsKLSAgICAgICAgQ0dDb250ZXh0U2V0
RmlsbENvbG9yU3BhY2UoY29udGV4dCwgcGF0dGVyblNwYWNlLmdldCgpKTsKLQotICAgICAgICAv
LyBGSVhNRTogUmVhbGx5IHdhbnQgYSBwdWJsaWMgQVBJIGZvciB0aGlzLiBJdCBpcyBqdXN0IENH
Q29udGV4dFNldEJhc2VDVE0oY29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl5KS4KLSAg
ICAgICAgd2tTZXRCYXNlQ1RNKGNvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHkpOwot
ICAgICAgICBDR0NvbnRleHRTZXRQYXR0ZXJuUGhhc2UoY29udGV4dCwgQ0dTaXplWmVybyk7Ci0K
LSAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNvbG9yLmdl
dCgpKTsKLSAgICAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgQ0dDb250ZXh0R2V0Q2xp
cEJvdW5kaW5nQm94KGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICBzdGF0ZVNhdmVyLnJlc3RvcmUo
KTsKKyAgICBjdHh0LmRyYXdQYXR0ZXJuKCp0aGlzLCB0aWxlUmVjdCwgUGF0dGVybiwgcGhhc2Us
IHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogCiAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3
KHRoaXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262963</attachid>
            <date>2015-10-12 19:02:40 -0700</date>
            <delta_ts>2015-10-12 22:50:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150077-20151012190204.patch</filename>
            <type>text/plain</type>
            <size>16832</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwOTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVlZDk0ZTNiYjhhNWI3
MzdjYjUxNWFkODg3ZTc4MDE2Y2IyMDM2Zi4uOTQ3NTc4MTIzYmFjNTQ0NzgwMjZhYTE2M2ZlNTQ3
YTYyOTNmM2QxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE1LTEwLTEyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIE1vdmUgSW1hZ2U6
OmRyYXdQYXR0ZXJuIGZvciBDRyBpbnRvIEdyYXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDc3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gY29uc29saWRhdGUg
Y29kZSB0aGF0IGNhbGxzIGludG8gQ29yZSBHcmFwaGljcyBpbnNpZGUKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0LCBtb3ZlIHRoZSBib2R5IG9mIEltYWdlOjpkcmF3UGF0dGVybigpIGludG8KKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0Q0cuY3BwLCBhbmQgZG8gdGhlIHNhbWUgZm9yIENhaXJvLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdQYXR0ZXJuQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpkcmF3UGF0dGVybkNhbGxiYWNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5SZWxlYXNlQ2FsbGJhY2spOiBEZWxldGVk
LgorCisyMDE1LTEwLTEyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CiAgICAgICAgIFNwZWN1bGF0aXZlIENhaXJvIGJ1aWxkIGZpeGVzIGFmdGVyIHIxOTA5MTAuCiAK
ICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggMGVmMGM3ZjFiZGM2ZDYyOGIyYjM0Y2U5Nzg3ZmE2MzJkNTk1OWE5Yy4uZDgwM2Fj
NzUyNWE3ZTAzMTg4YWIxYmIzYTgyNDkyYjkxZWRjMjk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTMyMCw2ICszMjAs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CiAgICAg
ICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCisgICAgICAg
IHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworCiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0
aW9uUXVhbGl0eSk7CiAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4
IDJlYzBmYjk5ZGM0OWNmY2M0NTBiNWU5ZDZhNzViODI0M2UxYTdiZDkuLmM3ZDlmN2VhYTU0ZmM1
NTVjMWU0YjNlZDA4OTY3YjA2ZTZkZDcwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAKQEAgLTEwNzcsNiArMTA3NywxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpCit7CisgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGlt
YWdlIHlldC4KKyAgICAgICAgcmV0dXJuOworCisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKTsKKyAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBzdXJmYWNl
LmdldCgpLCBJbnRTaXplKHNpemUoKSksIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgdG9DYWlyb09wZXJhdG9yKG9wKSwgZGVzdFJlY3QpOworfQorCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggYjlkMzNjOTk3NGE0YzQ5ZmIwMmVi
YjI2ZTYxY2ExMjkwNjRiN2U1Zi4uZTRjNjNhMzQ2ZTIyZGZiMzRlY2ViYjc3MjYzYjc0ZTM3Nzdi
MGU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VDYWlyby5jcHAKQEAgLTQyLDE0ICs0Miw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgQmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBo
YXZlIGFuIGltYWdlIHlldC4KLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2Fpcm9fdCogY3IgPSBj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwotICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0Nv
bnRleHQoY3IsIHN1cmZhY2UuZ2V0KCksIEludFNpemUoc2l6ZSgpKSwgdGlsZVJlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0UmVjdCk7CisgICAg
Y29udGV4dC5kcmF3UGF0dGVybigqdGhpcywgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBjb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAKICAg
ICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXco
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggZDFmMjcwZGVhMmUxOTU2MDRkMzgyNzZlMTZm
ODRkODJiZGE5YjdmMS4uMDNhZDMxYzUxYTY4NjNkOThmYmMxM2NmYWIyZjZjMGU1NDA5ZGUyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcApAQCAtMjQzLDYgKzI0MywxMDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0
IEZsb2F0U2kKICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgYWRqdXN0ZWREZXN0UmVj
dCwgaW1hZ2UuZ2V0KCkpOwogfQogCitzdGF0aWMgdm9pZCBkcmF3UGF0dGVybkNhbGxiYWNrKHZv
aWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIENHSW1hZ2VSZWYgaW1hZ2Ug
PSAoQ0dJbWFnZVJlZilpbmZvOworICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdo
dChpbWFnZSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRl
eHQsIDEsIC0xKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgLWhlaWdo
dCk7CisjZW5kaWYKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgR3JhcGhpY3NDb250
ZXh0KGNvbnRleHQpLnJvdW5kVG9EZXZpY2VQaXhlbHMoRmxvYXRSZWN0KDAsIDAsIENHSW1hZ2VH
ZXRXaWR0aChpbWFnZSksIGhlaWdodCkpLCBpbWFnZSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhdHRl
cm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKK3sKKyAgICBhdXRvIGltYWdlID0gc3RhdGlj
X2Nhc3Q8Q0dJbWFnZVJlZj4oaW5mbyk7CisgICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2VdIHsK
KyAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOworICAgIH0pOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3sKKyAgICBpZiAoIXBhdHRlcm5UcmFuc2Zvcm0u
aXNJbnZlcnRpYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOworICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgZGVzdFJlY3Qp
OworCisgICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7CisK
KyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZGVzdFJlY3QueCgpLCBkZXN0UmVj
dC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4
dCwgMSwgLTEpOworICAgIAorICAgIC8vIENvbXB1dGUgdGhlIHNjYWxlZCB0aWxlIHNpemUuCisg
ICAgZmxvYXQgc2NhbGVkVGlsZUhlaWdodCA9IHRpbGVSZWN0LmhlaWdodCgpICogbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSk7CisgICAgCisgICAgLy8gV2UgaGF2
ZSB0byBhZGp1c3QgdGhlIHBoYXNlIHRvIGRlYWwgd2l0aCB0aGUgZmFjdCB3ZSdyZSBpbiBDYXJ0
ZXNpYW4gc3BhY2Ugbm93ICh3aXRoIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgZGVzdFJlY3Qg
YmVpbmcKKyAgICAvLyB0aGUgb3JpZ2luKS4KKyAgICBmbG9hdCBhZGp1c3RlZFggPSBwaGFzZS54
KCkgLSBkZXN0UmVjdC54KCkgKyB0aWxlUmVjdC54KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJhbnNsYXRlZCB0aGUgY29udGV4dCBzbyB0
aGF0IGRlc3RSZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBzbyBzdWJ0cmFjdCBpdCBvdXQuCisgICAg
ZmxvYXQgYWRqdXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0KCkgLSAocGhhc2UueSgpIC0gZGVzdFJl
Y3QueSgpICsgdGlsZVJlY3QueSgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJh
bnNmb3JtLmQoKSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsKKworICAgIENHSW1hZ2VSZWYgdGlsZUlt
YWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBmbG9hdCBoID0g
Q0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UpOworCisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IHN1YkltYWdlOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0g
aW1hZ2Uub3JpZ2luYWxTaXplKCk7CisjZWxzZQorICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBp
bWFnZS5zaXplKCk7CisjZW5kaWYKKyAgICBpZiAodGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6
ZSkKKyAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2U7CisgICAgZWxzZSB7CisgICAgICAgIC8v
IENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3Rv
cHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhh
cHBlbgorICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9y
ZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVj
b2RlZC4KKyAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkpOworICAgICAgICBzdWJJ
bWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UsIHRp
bGVSZWN0KSk7CisgICAgfQorCisgICAgLy8gQWRqdXN0IHRoZSBjb2xvciBzcGFjZS4KKyAgICBz
dWJJbWFnZSA9IEltYWdlOjppbWFnZVdpdGhDb2xvclNwYWNlKHN1YkltYWdlLmdldCgpLCBzdHls
ZUNvbG9yU3BhY2UpOworCisgICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBnYXBzIGJldHdlZW4g
dGlsZXMgYmVjYXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFnZSBvciBub24temVy
byBzcGFjaW5nLAorICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZpY2llbnQgQ0dQYXR0
ZXJuLWJhc2VkIG1lY2hhbmlzbS4KKyAgICBmbG9hdCBzY2FsZWRUaWxlV2lkdGggPSB0aWxlUmVj
dC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7
CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UpOworICAgIGlmICh3ID09
IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGggPT0gaW1hZ2Uuc2l6ZSgpLmhlaWdodCgpICYmICFz
cGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcuaGVpZ2h0KCkpCisgICAgICAgIENHQ29udGV4dERy
YXdUaWxlZEltYWdlKGNvbnRleHQsIEZsb2F0UmVjdChhZGp1c3RlZFgsIGFkanVzdGVkWSwgc2Nh
bGVkVGlsZVdpZHRoLCBzY2FsZWRUaWxlSGVpZ2h0KSwgc3ViSW1hZ2UuZ2V0KCkpOworICAgIGVs
c2UgeworICAgICAgICBzdGF0aWMgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxs
YmFja3MgPSB7IDAsIGRyYXdQYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sg
fTsKKyAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1N
YWtlKG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSksIDAsIDAs
IG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSksIGFkanVzdGVk
WCwgYWRqdXN0ZWRZKTsKKyAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQo
bWF0cml4LCBDR0NvbnRleHRHZXRDVE0oY29udGV4dCkpOworICAgICAgICAvLyBUaGUgdG9wIG9m
IGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2UgaXMgZHJhd24gYXQgdGhlIGJvdHRvbSBvZiB0aGUg
dGlsZS4gTWFwIGl0IHRvIHRoZSB0b3AuCisgICAgICAgIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNm
b3JtVHJhbnNsYXRlKG1hdHJpeCwgMCwgaW1hZ2Uuc2l6ZSgpLmhlaWdodCgpIC0gaCk7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgICAgICBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybVNjYWxlKG1h
dHJpeCwgMSwgLTEpOworICAgICAgICBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0
ZShtYXRyaXgsIDAsIC1oKTsKKyNlbmRpZgorICAgICAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSBDR0ltYWdlUmV0YWluKHN1YkltYWdlLmdldCgpKTsKKyAgICAgICAgUmV0YWluUHRyPENH
UGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0YoQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1h
Z2UsIENHUmVjdE1ha2UoMCwgMCwgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCkp
LCBtYXRyaXgsCisgICAgICAgICAgICB0aWxlUmVjdC53aWR0aCgpICsgc3BhY2luZy53aWR0aCgp
ICogKDEgLyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKSksCisg
ICAgICAgICAgICB0aWxlUmVjdC5oZWlnaHQoKSArIHNwYWNpbmcuaGVpZ2h0KCkgKiAoMSAvIG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5kKCkpKSwKKyAgICAgICAgICAg
IGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIHRydWUsICZwYXR0ZXJuQ2FsbGJhY2tz
KSk7CisgICAgICAgIAorICAgICAgICBpZiAoIXBhdHRlcm4pCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gcGF0dGVyblNwYWNlID0gYWRv
cHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDApKTsKKworICAgICAgICBDR0Zsb2F0IGFs
cGhhID0gMTsKKyAgICAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRDRihD
R0NvbG9yQ3JlYXRlV2l0aFBhdHRlcm4ocGF0dGVyblNwYWNlLmdldCgpLCBwYXR0ZXJuLmdldCgp
LCAmYWxwaGEpKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yU3BhY2UoY29udGV4dCwg
cGF0dGVyblNwYWNlLmdldCgpKTsKKworICAgICAgICAvLyBGSVhNRTogUmVhbGx5IHdhbnQgYSBw
dWJsaWMgQVBJIGZvciB0aGlzLiBJdCBpcyBqdXN0IENHQ29udGV4dFNldEJhc2VDVE0oY29udGV4
dCwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl5KS4KKyAgICAgICAgd2tTZXRCYXNlQ1RNKGNvbnRl
eHQsIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHkpOworICAgICAgICBDR0NvbnRleHRTZXRQYXR0
ZXJuUGhhc2UoY29udGV4dCwgQ0dTaXplWmVybyk7CisKKyAgICAgICAgQ0dDb250ZXh0U2V0Rmls
bENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNvbG9yLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0
RmlsbFJlY3QoY29udGV4dCwgQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpKTsK
KyAgICB9Cit9CisKIC8vIERyYXdzIGEgZmlsbGVkIHJlY3RhbmdsZSB3aXRoIGEgc3Ryb2tlZCBi
b3JkZXIuCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCmluZGV4IDZhM2YwYjA3ZmVjNzQzNjFmYzQzNmUx
NjA3MGExYTI0ZGU2YjMzMmIuLjc1YWJiZjhjZDE2NGNkNTM5NThkNGZkNjZjYTEzYTk0MTg2OTg3
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cu
Y3BwCkBAIC02NywxMTAgKzY3LDEzIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZTo6aW1h
Z2VXaXRoQ29sb3JTcGFjZShDR0ltYWdlUmVmIG9yaWdpbmFsSW1hZ2UsIENvbG9yCiAgICAgcmV0
dXJuIG9yaWdpbmFsSW1hZ2U7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdQYXR0ZXJuQ2FsbGJhY2so
dm9pZCogaW5mbywgQ0dDb250ZXh0UmVmIGNvbnRleHQpCi17Ci0gICAgQ0dJbWFnZVJlZiBpbWFn
ZSA9IChDR0ltYWdlUmVmKWluZm87Ci0gICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY29u
dGV4dCwgMSwgLTEpOwotICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCAtaGVp
Z2h0KTsKLSNlbmRpZgotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBHcmFwaGljc0Nv
bnRleHQoY29udGV4dCkucm91bmRUb0RldmljZVBpeGVscyhGbG9hdFJlY3QoMCwgMCwgQ0dJbWFn
ZUdldFdpZHRoKGltYWdlKSwgaGVpZ2h0KSksIGltYWdlKTsKLX0KLQotc3RhdGljIHZvaWQgcGF0
dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQotewotICAgIGF1dG8gaW1hZ2UgPSBzdGF0
aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZV0g
ewotICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAoIW5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghcGF0dGVyblRy
YW5zZm9ybS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0dDb250ZXh0
UmVmIGNvbnRleHQgPSBjdHh0LnBsYXRmb3JtQ29udGV4dCgpOwotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjdHh0KTsKLSAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNv
bnRleHQsIGRlc3RSZWN0KTsKLSAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxl
bmRNb2RlKTsKLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZGVzdFJlY3QueCgp
LCBkZXN0UmVjdC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSk7Ci0gICAgQ0dDb250ZXh0U2NhbGVD
VE0oY29udGV4dCwgMSwgLTEpOwotICAgIAotICAgIC8vIENvbXB1dGUgdGhlIHNjYWxlZCB0aWxl
IHNpemUuCi0gICAgZmxvYXQgc2NhbGVkVGlsZUhlaWdodCA9IHRpbGVSZWN0LmhlaWdodCgpICog
bmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSk7Ci0gICAgCi0gICAg
Ly8gV2UgaGF2ZSB0byBhZGp1c3QgdGhlIHBoYXNlIHRvIGRlYWwgd2l0aCB0aGUgZmFjdCB3ZSdy
ZSBpbiBDYXJ0ZXNpYW4gc3BhY2Ugbm93ICh3aXRoIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2Yg
ZGVzdFJlY3QgYmVpbmcKLSAgICAvLyB0aGUgb3JpZ2luKS4KLSAgICBmbG9hdCBhZGp1c3RlZFgg
PSBwaGFzZS54KCkgLSBkZXN0UmVjdC54KCkgKyB0aWxlUmVjdC54KCkgKiBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJhbnNsYXRlZCB0aGUgY29u
dGV4dCBzbyB0aGF0IGRlc3RSZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBzbyBzdWJ0cmFjdCBpdCBv
dXQuCi0gICAgZmxvYXQgYWRqdXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0KCkgLSAocGhhc2UueSgp
IC0gZGVzdFJlY3QueSgpICsgdGlsZVJlY3QueSgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChw
YXR0ZXJuVHJhbnNmb3JtLmQoKSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsKLQotICAgIENHSW1hZ2VS
ZWYgdGlsZUltYWdlID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBmbG9hdCBo
ID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UpOwotCi0gICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IHN1YkltYWdlOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICBGbG9hdFNpemUgaW1hZ2VTaXpl
ID0gb3JpZ2luYWxTaXplKCk7Ci0jZWxzZQotICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBzaXpl
KCk7Ci0jZW5kaWYKLSAgICBpZiAodGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkKLSAgICAg
ICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2U7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIENvcHlpbmcg
YSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRl
Y29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhhcHBlbgotICAg
ICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdl
LCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KLSAg
ICAgICAgQVNTRVJUKGggPT0gaGVpZ2h0KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UsIHRpbGVSZWN0KSk7Ci0gICAg
fQotCi0gICAgLy8gQWRqdXN0IHRoZSBjb2xvciBzcGFjZS4KLSAgICBzdWJJbWFnZSA9IEltYWdl
OjppbWFnZVdpdGhDb2xvclNwYWNlKHN1YkltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UpOwot
Ci0gICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBnYXBzIGJldHdlZW4gdGlsZXMgYmVjYXVzZSB3
ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFnZSBvciBub24temVybyBzcGFjaW5nLAotICAg
IC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZpY2llbnQgQ0dQYXR0ZXJuLWJhc2VkIG1lY2hh
bmlzbS4KLSAgICBmbG9hdCBzY2FsZWRUaWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgpICogbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQgdyA9
IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UpOwotICAgIGlmICh3ID09IHNpemUoKS53aWR0aCgp
ICYmIGggPT0gc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcu
aGVpZ2h0KCkpCi0gICAgICAgIENHQ29udGV4dERyYXdUaWxlZEltYWdlKGNvbnRleHQsIEZsb2F0
UmVjdChhZGp1c3RlZFgsIGFkanVzdGVkWSwgc2NhbGVkVGlsZVdpZHRoLCBzY2FsZWRUaWxlSGVp
Z2h0KSwgc3ViSW1hZ2UuZ2V0KCkpOwotICAgIGVsc2UgewotICAgICAgICBzdGF0aWMgY29uc3Qg
Q0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxsYmFja3MgPSB7IDAsIGRyYXdQYXR0ZXJuQ2Fs
bGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sgfTsKLSAgICAgICAgQ0dBZmZpbmVUcmFuc2Zv
cm0gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9h
dChwYXR0ZXJuVHJhbnNmb3JtLmEoKSksIDAsIDAsIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChw
YXR0ZXJuVHJhbnNmb3JtLmQoKSksIGFkanVzdGVkWCwgYWRqdXN0ZWRZKTsKLSAgICAgICAgbWF0
cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQobWF0cml4LCBDR0NvbnRleHRHZXRDVE0oY29u
dGV4dCkpOwotICAgICAgICAvLyBUaGUgdG9wIG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ug
aXMgZHJhd24gYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGlsZS4gTWFwIGl0IHRvIHRoZSB0b3AuCi0g
ICAgICAgIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKG1hdHJpeCwgMCwgc2l6
ZSgpLmhlaWdodCgpIC0gaCk7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBtYXRyaXggPSBD
R0FmZmluZVRyYW5zZm9ybVNjYWxlKG1hdHJpeCwgMSwgLTEpOwotICAgICAgICBtYXRyaXggPSBD
R0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0ZShtYXRyaXgsIDAsIC1oKTsKLSNlbmRpZgotICAgICAg
ICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1hZ2UgPSBDR0ltYWdlUmV0YWluKHN1YkltYWdlLmdldCgp
KTsKLSAgICAgICAgUmV0YWluUHRyPENHUGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0YoQ0dQ
YXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1hZ2UsIENHUmVjdE1ha2UoMCwgMCwgdGlsZVJlY3Qud2lk
dGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCkpLCBtYXRyaXgsCi0gICAgICAgICAgICB0aWxlUmVjdC53
aWR0aCgpICsgc3BhY2luZy53aWR0aCgpICogKDEgLyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBh
dHRlcm5UcmFuc2Zvcm0uYSgpKSksCi0gICAgICAgICAgICB0aWxlUmVjdC5oZWlnaHQoKSArIHNw
YWNpbmcuaGVpZ2h0KCkgKiAoMSAvIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5z
Zm9ybS5kKCkpKSwKLSAgICAgICAgICAgIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcs
IHRydWUsICZwYXR0ZXJuQ2FsbGJhY2tzKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIXBhdHRl
cm4pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFj
ZVJlZj4gcGF0dGVyblNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDAp
KTsKLQotICAgICAgICBDR0Zsb2F0IGFscGhhID0gMTsKLSAgICAgICAgUmV0YWluUHRyPENHQ29s
b3JSZWY+IGNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlV2l0aFBhdHRlcm4ocGF0dGVyblNw
YWNlLmdldCgpLCBwYXR0ZXJuLmdldCgpLCAmYWxwaGEpKTsKLSAgICAgICAgQ0dDb250ZXh0U2V0
RmlsbENvbG9yU3BhY2UoY29udGV4dCwgcGF0dGVyblNwYWNlLmdldCgpKTsKLQotICAgICAgICAv
LyBGSVhNRTogUmVhbGx5IHdhbnQgYSBwdWJsaWMgQVBJIGZvciB0aGlzLiBJdCBpcyBqdXN0IENH
Q29udGV4dFNldEJhc2VDVE0oY29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl5KS4KLSAg
ICAgICAgd2tTZXRCYXNlQ1RNKGNvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHkpOwot
ICAgICAgICBDR0NvbnRleHRTZXRQYXR0ZXJuUGhhc2UoY29udGV4dCwgQ0dTaXplWmVybyk7Ci0K
LSAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNvbG9yLmdl
dCgpKTsKLSAgICAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgQ0dDb250ZXh0R2V0Q2xp
cEJvdW5kaW5nQm94KGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICBzdGF0ZVNhdmVyLnJlc3RvcmUo
KTsKKyAgICBjdHh0LmRyYXdQYXR0ZXJuKCp0aGlzLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0LCBibGVuZE1v
ZGUpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigp
LT5kaWREcmF3KHRoaXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262972</attachid>
            <date>2015-10-12 22:50:21 -0700</date>
            <delta_ts>2015-10-12 22:58:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150077-20151012224945.patch</filename>
            <type>text/plain</type>
            <size>16838</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwOTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVlZDk0ZTNiYjhhNWI3
MzdjYjUxNWFkODg3ZTc4MDE2Y2IyMDM2Zi4uOTQ3NTc4MTIzYmFjNTQ0NzgwMjZhYTE2M2ZlNTQ3
YTYyOTNmM2QxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE1LTEwLTEyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIE1vdmUgSW1hZ2U6
OmRyYXdQYXR0ZXJuIGZvciBDRyBpbnRvIEdyYXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDc3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gY29uc29saWRhdGUg
Y29kZSB0aGF0IGNhbGxzIGludG8gQ29yZSBHcmFwaGljcyBpbnNpZGUKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0LCBtb3ZlIHRoZSBib2R5IG9mIEltYWdlOjpkcmF3UGF0dGVybigpIGludG8KKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0Q0cuY3BwLCBhbmQgZG8gdGhlIHNhbWUgZm9yIENhaXJvLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdQYXR0ZXJuQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpkcmF3UGF0dGVybkNhbGxiYWNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5SZWxlYXNlQ2FsbGJhY2spOiBEZWxldGVk
LgorCisyMDE1LTEwLTEyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CiAgICAgICAgIFNwZWN1bGF0aXZlIENhaXJvIGJ1aWxkIGZpeGVzIGFmdGVyIHIxOTA5MTAuCiAK
ICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggMGVmMGM3ZjFiZGM2ZDYyOGIyYjM0Y2U5Nzg3ZmE2MzJkNTk1OWE5Yy4uZDgwM2Fj
NzUyNWE3ZTAzMTg4YWIxYmIzYTgyNDkyYjkxZWRjMjk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTMyMCw2ICszMjAs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CiAgICAg
ICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCisgICAgICAg
IHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworCiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0
aW9uUXVhbGl0eSk7CiAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4
IDJlYzBmYjk5ZGM0OWNmY2M0NTBiNWU5ZDZhNzViODI0M2UxYTdiZDkuLmMwMWE0MjZjZTdiYWMz
OTk5ZGMzNDRjZDQwN2YxODUyZDllZDRkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAKQEAgLTEwNzcsNiArMTA3NywxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpCit7CisgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGlt
YWdlIHlldC4KKyAgICAgICAgcmV0dXJuOworCisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKTsKKyAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBzdXJmYWNl
LmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgdG9DYWlyb09wZXJhdG9yKG9wKSwgZGVzdFJlY3QpOworfQorCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggYjlkMzNjOTk3NGE0YzQ5
ZmIwMmViYjI2ZTYxY2ExMjkwNjRiN2U1Zi4uZTRjNjNhMzQ2ZTIyZGZiMzRlY2ViYjc3MjYzYjc0
ZTM3NzdiMGU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKQEAgLTQyLDE0ICs0Miw5IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgQmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7
Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3
b24ndCBoYXZlIGFuIGltYWdlIHlldC4KLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2Fpcm9fdCog
Y3IgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwotICAgIGRyYXdQYXR0ZXJuVG9D
YWlyb0NvbnRleHQoY3IsIHN1cmZhY2UuZ2V0KCksIEludFNpemUoc2l6ZSgpKSwgdGlsZVJlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0UmVjdCk7
CisgICAgY29udGV4dC5kcmF3UGF0dGVybigqdGhpcywgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBzcGFjaW5nLCBjb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7
CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRp
ZERyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggZDFmMjcwZGVhMmUxOTU2MDRkMzgy
NzZlMTZmODRkODJiZGE5YjdmMS4uMDNhZDMxYzUxYTY4NjNkOThmYmMxM2NmYWIyZjZjMGU1NDA5
ZGUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMjQzLDYgKzI0MywxMDggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIs
IGNvbnN0IEZsb2F0U2kKICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgYWRqdXN0ZWRE
ZXN0UmVjdCwgaW1hZ2UuZ2V0KCkpOwogfQogCitzdGF0aWMgdm9pZCBkcmF3UGF0dGVybkNhbGxi
YWNrKHZvaWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIENHSW1hZ2VSZWYg
aW1hZ2UgPSAoQ0dJbWFnZVJlZilpbmZvOworICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdl
dEhlaWdodChpbWFnZSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIENHQ29udGV4dFNjYWxlQ1RN
KGNvbnRleHQsIDEsIC0xKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwg
LWhlaWdodCk7CisjZW5kaWYKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgR3JhcGhp
Y3NDb250ZXh0KGNvbnRleHQpLnJvdW5kVG9EZXZpY2VQaXhlbHMoRmxvYXRSZWN0KDAsIDAsIENH
SW1hZ2VHZXRXaWR0aChpbWFnZSksIGhlaWdodCkpLCBpbWFnZSk7Cit9CisKK3N0YXRpYyB2b2lk
IHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKK3sKKyAgICBhdXRvIGltYWdlID0g
c3RhdGljX2Nhc3Q8Q0dJbWFnZVJlZj4oaW5mbyk7CisgICAgY2FsbE9uTWFpblRocmVhZChbaW1h
Z2VdIHsKKyAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOworICAgIH0pOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3sKKyAgICBpZiAoIXBhdHRlcm5UcmFu
c2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOworICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgZGVz
dFJlY3QpOworCisgICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5kTW9k
ZSk7CisKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZGVzdFJlY3QueCgpLCBk
ZXN0UmVjdC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0U2NhbGVDVE0o
Y29udGV4dCwgMSwgLTEpOworICAgIAorICAgIC8vIENvbXB1dGUgdGhlIHNjYWxlZCB0aWxlIHNp
emUuCisgICAgZmxvYXQgc2NhbGVkVGlsZUhlaWdodCA9IHRpbGVSZWN0LmhlaWdodCgpICogbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSk7CisgICAgCisgICAgLy8g
V2UgaGF2ZSB0byBhZGp1c3QgdGhlIHBoYXNlIHRvIGRlYWwgd2l0aCB0aGUgZmFjdCB3ZSdyZSBp
biBDYXJ0ZXNpYW4gc3BhY2Ugbm93ICh3aXRoIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgZGVz
dFJlY3QgYmVpbmcKKyAgICAvLyB0aGUgb3JpZ2luKS4KKyAgICBmbG9hdCBhZGp1c3RlZFggPSBw
aGFzZS54KCkgLSBkZXN0UmVjdC54KCkgKyB0aWxlUmVjdC54KCkgKiBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJhbnNsYXRlZCB0aGUgY29udGV4
dCBzbyB0aGF0IGRlc3RSZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBzbyBzdWJ0cmFjdCBpdCBvdXQu
CisgICAgZmxvYXQgYWRqdXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0KCkgLSAocGhhc2UueSgpIC0g
ZGVzdFJlY3QueSgpICsgdGlsZVJlY3QueSgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0
ZXJuVHJhbnNmb3JtLmQoKSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsKKworICAgIENHSW1hZ2VSZWYg
dGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBmbG9h
dCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UpOworCisgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IHN1YkltYWdlOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBGbG9hdFNpemUgaW1hZ2VT
aXplID0gaW1hZ2Uub3JpZ2luYWxTaXplKCk7CisjZWxzZQorICAgIEZsb2F0U2l6ZSBpbWFnZVNp
emUgPSBpbWFnZS5zaXplKCk7CisjZW5kaWYKKyAgICBpZiAodGlsZVJlY3Quc2l6ZSgpID09IGlt
YWdlU2l6ZSkKKyAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2U7CisgICAgZWxzZSB7CisgICAg
ICAgIC8vIENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1h
Z2Ugc3RvcHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5l
dmVyIGhhcHBlbgorICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBm
b3IgYm9yZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVs
bHkgZGVjb2RlZC4KKyAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkpOworICAgICAg
ICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1h
Z2UsIHRpbGVSZWN0KSk7CisgICAgfQorCisgICAgLy8gQWRqdXN0IHRoZSBjb2xvciBzcGFjZS4K
KyAgICBzdWJJbWFnZSA9IEltYWdlOjppbWFnZVdpdGhDb2xvclNwYWNlKHN1YkltYWdlLmdldCgp
LCBzdHlsZUNvbG9yU3BhY2UpOworCisgICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBnYXBzIGJl
dHdlZW4gdGlsZXMgYmVjYXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFnZSBvciBu
b24temVybyBzcGFjaW5nLAorICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZpY2llbnQg
Q0dQYXR0ZXJuLWJhc2VkIG1lY2hhbmlzbS4KKyAgICBmbG9hdCBzY2FsZWRUaWxlV2lkdGggPSB0
aWxlUmVjdC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3Jt
LmEoKSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UpOworICAgIGlm
ICh3ID09IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGggPT0gaW1hZ2Uuc2l6ZSgpLmhlaWdodCgp
ICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcuaGVpZ2h0KCkpCisgICAgICAgIENHQ29u
dGV4dERyYXdUaWxlZEltYWdlKGNvbnRleHQsIEZsb2F0UmVjdChhZGp1c3RlZFgsIGFkanVzdGVk
WSwgc2NhbGVkVGlsZVdpZHRoLCBzY2FsZWRUaWxlSGVpZ2h0KSwgc3ViSW1hZ2UuZ2V0KCkpOwor
ICAgIGVsc2UgeworICAgICAgICBzdGF0aWMgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRl
cm5DYWxsYmFja3MgPSB7IDAsIGRyYXdQYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2Fs
bGJhY2sgfTsKKyAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbWF0cml4ID0gQ0dBZmZpbmVUcmFu
c2Zvcm1NYWtlKG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSks
IDAsIDAsIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSksIGFk
anVzdGVkWCwgYWRqdXN0ZWRZKTsKKyAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1D
b25jYXQobWF0cml4LCBDR0NvbnRleHRHZXRDVE0oY29udGV4dCkpOworICAgICAgICAvLyBUaGUg
dG9wIG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2UgaXMgZHJhd24gYXQgdGhlIGJvdHRvbSBv
ZiB0aGUgdGlsZS4gTWFwIGl0IHRvIHRoZSB0b3AuCisgICAgICAgIG1hdHJpeCA9IENHQWZmaW5l
VHJhbnNmb3JtVHJhbnNsYXRlKG1hdHJpeCwgMCwgaW1hZ2Uuc2l6ZSgpLmhlaWdodCgpIC0gaCk7
CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybVNj
YWxlKG1hdHJpeCwgMSwgLTEpOworICAgICAgICBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybVRy
YW5zbGF0ZShtYXRyaXgsIDAsIC1oKTsKKyNlbmRpZgorICAgICAgICBDR0ltYWdlUmVmIHBsYXRm
b3JtSW1hZ2UgPSBDR0ltYWdlUmV0YWluKHN1YkltYWdlLmdldCgpKTsKKyAgICAgICAgUmV0YWlu
UHRyPENHUGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0Q0YoQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRm
b3JtSW1hZ2UsIENHUmVjdE1ha2UoMCwgMCwgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVp
Z2h0KCkpLCBtYXRyaXgsCisgICAgICAgICAgICB0aWxlUmVjdC53aWR0aCgpICsgc3BhY2luZy53
aWR0aCgpICogKDEgLyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgp
KSksCisgICAgICAgICAgICB0aWxlUmVjdC5oZWlnaHQoKSArIHNwYWNpbmcuaGVpZ2h0KCkgKiAo
MSAvIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5kKCkpKSwKKyAgICAg
ICAgICAgIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIHRydWUsICZwYXR0ZXJuQ2Fs
bGJhY2tzKSk7CisgICAgICAgIAorICAgICAgICBpZiAoIXBhdHRlcm4pCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gcGF0dGVyblNwYWNl
ID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKDApKTsKKworICAgICAgICBDR0Zs
b2F0IGFscGhhID0gMTsKKyAgICAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRv
cHRDRihDR0NvbG9yQ3JlYXRlV2l0aFBhdHRlcm4ocGF0dGVyblNwYWNlLmdldCgpLCBwYXR0ZXJu
LmdldCgpLCAmYWxwaGEpKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yU3BhY2UoY29u
dGV4dCwgcGF0dGVyblNwYWNlLmdldCgpKTsKKworICAgICAgICAvLyBGSVhNRTogUmVhbGx5IHdh
bnQgYSBwdWJsaWMgQVBJIGZvciB0aGlzLiBJdCBpcyBqdXN0IENHQ29udGV4dFNldEJhc2VDVE0o
Y29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl5KS4KKyAgICAgICAgd2tTZXRCYXNlQ1RN
KGNvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHkpOworICAgICAgICBDR0NvbnRleHRT
ZXRQYXR0ZXJuUGhhc2UoY29udGV4dCwgQ0dTaXplWmVybyk7CisKKyAgICAgICAgQ0dDb250ZXh0
U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNvbG9yLmdldCgpKTsKKyAgICAgICAgQ0dD
b250ZXh0RmlsbFJlY3QoY29udGV4dCwgQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRl
eHQpKTsKKyAgICB9Cit9CisKIC8vIERyYXdzIGEgZmlsbGVkIHJlY3RhbmdsZSB3aXRoIGEgc3Ry
b2tlZCBib3JkZXIuCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCmluZGV4IDZhM2YwYjA3ZmVjNzQzNjFm
YzQzNmUxNjA3MGExYTI0ZGU2YjMzMmIuLjc1YWJiZjhjZDE2NGNkNTM5NThkNGZkNjZjYTEzYTk0
MTg2OTg3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQ0cuY3BwCkBAIC02NywxMTAgKzY3LDEzIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFn
ZTo6aW1hZ2VXaXRoQ29sb3JTcGFjZShDR0ltYWdlUmVmIG9yaWdpbmFsSW1hZ2UsIENvbG9yCiAg
ICAgcmV0dXJuIG9yaWdpbmFsSW1hZ2U7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdQYXR0ZXJuQ2Fs
bGJhY2sodm9pZCogaW5mbywgQ0dDb250ZXh0UmVmIGNvbnRleHQpCi17Ci0gICAgQ0dJbWFnZVJl
ZiBpbWFnZSA9IChDR0ltYWdlUmVmKWluZm87Ci0gICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdl
R2V0SGVpZ2h0KGltYWdlKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgQ0dDb250ZXh0U2NhbGVD
VE0oY29udGV4dCwgMSwgLTEpOwotICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAw
LCAtaGVpZ2h0KTsKLSNlbmRpZgotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBHcmFw
aGljc0NvbnRleHQoY29udGV4dCkucm91bmRUb0RldmljZVBpeGVscyhGbG9hdFJlY3QoMCwgMCwg
Q0dJbWFnZUdldFdpZHRoKGltYWdlKSwgaGVpZ2h0KSksIGltYWdlKTsKLX0KLQotc3RhdGljIHZv
aWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQotewotICAgIGF1dG8gaW1hZ2Ug
PSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtp
bWFnZV0gewotICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgfSk7Ci19Ci0KIHZv
aWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAog
ICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAoIW5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghcGF0
dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0dD
b250ZXh0UmVmIGNvbnRleHQgPSBjdHh0LnBsYXRmb3JtQ29udGV4dCgpOwotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjdHh0KTsKLSAgICBDR0NvbnRleHRDbGlwVG9S
ZWN0KGNvbnRleHQsIGRlc3RSZWN0KTsKLSAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihv
cCwgYmxlbmRNb2RlKTsKLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZGVzdFJl
Y3QueCgpLCBkZXN0UmVjdC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSk7Ci0gICAgQ0dDb250ZXh0
U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwotICAgIAotICAgIC8vIENvbXB1dGUgdGhlIHNjYWxl
ZCB0aWxlIHNpemUuCi0gICAgZmxvYXQgc2NhbGVkVGlsZUhlaWdodCA9IHRpbGVSZWN0LmhlaWdo
dCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSk7Ci0gICAg
Ci0gICAgLy8gV2UgaGF2ZSB0byBhZGp1c3QgdGhlIHBoYXNlIHRvIGRlYWwgd2l0aCB0aGUgZmFj
dCB3ZSdyZSBpbiBDYXJ0ZXNpYW4gc3BhY2Ugbm93ICh3aXRoIHRoZSBib3R0b20gbGVmdCBjb3Ju
ZXIgb2YgZGVzdFJlY3QgYmVpbmcKLSAgICAvLyB0aGUgb3JpZ2luKS4KLSAgICBmbG9hdCBhZGp1
c3RlZFggPSBwaGFzZS54KCkgLSBkZXN0UmVjdC54KCkgKyB0aWxlUmVjdC54KCkgKiBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJhbnNsYXRlZCB0
aGUgY29udGV4dCBzbyB0aGF0IGRlc3RSZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBzbyBzdWJ0cmFj
dCBpdCBvdXQuCi0gICAgZmxvYXQgYWRqdXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0KCkgLSAocGhh
c2UueSgpIC0gZGVzdFJlY3QueSgpICsgdGlsZVJlY3QueSgpICogbmFycm93UHJlY2lzaW9uVG9G
bG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsKLQotICAgIENH
SW1hZ2VSZWYgdGlsZUltYWdlID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBm
bG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UpOwotCi0gICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IHN1YkltYWdlOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICBGbG9hdFNpemUgaW1h
Z2VTaXplID0gb3JpZ2luYWxTaXplKCk7Ci0jZWxzZQotICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUg
PSBzaXplKCk7Ci0jZW5kaWYKLSAgICBpZiAodGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkK
LSAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2U7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIENv
cHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3RvcHMg
dGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhhcHBl
bgotICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9yZGVy
LWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVjb2Rl
ZC4KLSAgICAgICAgQVNTRVJUKGggPT0gaGVpZ2h0KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UsIHRpbGVSZWN0KSk7
Ci0gICAgfQotCi0gICAgLy8gQWRqdXN0IHRoZSBjb2xvciBzcGFjZS4KLSAgICBzdWJJbWFnZSA9
IEltYWdlOjppbWFnZVdpdGhDb2xvclNwYWNlKHN1YkltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3Bh
Y2UpOwotCi0gICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBnYXBzIGJldHdlZW4gdGlsZXMgYmVj
YXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFnZSBvciBub24temVybyBzcGFjaW5n
LAotICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZpY2llbnQgQ0dQYXR0ZXJuLWJhc2Vk
IG1lY2hhbmlzbS4KLSAgICBmbG9hdCBzY2FsZWRUaWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgp
ICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxv
YXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UpOwotICAgIGlmICh3ID09IHNpemUoKS53
aWR0aCgpICYmIGggPT0gc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNw
YWNpbmcuaGVpZ2h0KCkpCi0gICAgICAgIENHQ29udGV4dERyYXdUaWxlZEltYWdlKGNvbnRleHQs
IEZsb2F0UmVjdChhZGp1c3RlZFgsIGFkanVzdGVkWSwgc2NhbGVkVGlsZVdpZHRoLCBzY2FsZWRU
aWxlSGVpZ2h0KSwgc3ViSW1hZ2UuZ2V0KCkpOwotICAgIGVsc2UgewotICAgICAgICBzdGF0aWMg
Y29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxsYmFja3MgPSB7IDAsIGRyYXdQYXR0
ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sgfTsKLSAgICAgICAgQ0dBZmZpbmVU
cmFuc2Zvcm0gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKG5hcnJvd1ByZWNpc2lvblRv
Q0dGbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSksIDAsIDAsIG5hcnJvd1ByZWNpc2lvblRvQ0dG
bG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSksIGFkanVzdGVkWCwgYWRqdXN0ZWRZKTsKLSAgICAg
ICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQobWF0cml4LCBDR0NvbnRleHRHZXRD
VE0oY29udGV4dCkpOwotICAgICAgICAvLyBUaGUgdG9wIG9mIGEgcGFydGlhbGx5LWRlY29kZWQg
aW1hZ2UgaXMgZHJhd24gYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGlsZS4gTWFwIGl0IHRvIHRoZSB0
b3AuCi0gICAgICAgIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKG1hdHJpeCwg
MCwgc2l6ZSgpLmhlaWdodCgpIC0gaCk7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBtYXRy
aXggPSBDR0FmZmluZVRyYW5zZm9ybVNjYWxlKG1hdHJpeCwgMSwgLTEpOwotICAgICAgICBtYXRy
aXggPSBDR0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0ZShtYXRyaXgsIDAsIC1oKTsKLSNlbmRpZgot
ICAgICAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1hZ2UgPSBDR0ltYWdlUmV0YWluKHN1YkltYWdl
LmdldCgpKTsKLSAgICAgICAgUmV0YWluUHRyPENHUGF0dGVyblJlZj4gcGF0dGVybiA9IGFkb3B0
Q0YoQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1hZ2UsIENHUmVjdE1ha2UoMCwgMCwgdGlsZVJl
Y3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCkpLCBtYXRyaXgsCi0gICAgICAgICAgICB0aWxl
UmVjdC53aWR0aCgpICsgc3BhY2luZy53aWR0aCgpICogKDEgLyBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKSksCi0gICAgICAgICAgICB0aWxlUmVjdC5oZWlnaHQo
KSArIHNwYWNpbmcuaGVpZ2h0KCkgKiAoMSAvIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVy
blRyYW5zZm9ybS5kKCkpKSwKLSAgICAgICAgICAgIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNw
YWNpbmcsIHRydWUsICZwYXR0ZXJuQ2FsbGJhY2tzKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAo
IXBhdHRlcm4pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUmV0YWluUHRyPENHQ29s
b3JTcGFjZVJlZj4gcGF0dGVyblNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVQYXR0
ZXJuKDApKTsKLQotICAgICAgICBDR0Zsb2F0IGFscGhhID0gMTsKLSAgICAgICAgUmV0YWluUHRy
PENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlV2l0aFBhdHRlcm4ocGF0
dGVyblNwYWNlLmdldCgpLCBwYXR0ZXJuLmdldCgpLCAmYWxwaGEpKTsKLSAgICAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yU3BhY2UoY29udGV4dCwgcGF0dGVyblNwYWNlLmdldCgpKTsKLQotICAg
ICAgICAvLyBGSVhNRTogUmVhbGx5IHdhbnQgYSBwdWJsaWMgQVBJIGZvciB0aGlzLiBJdCBpcyBq
dXN0IENHQ29udGV4dFNldEJhc2VDVE0oY29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl5
KS4KLSAgICAgICAgd2tTZXRCYXNlQ1RNKGNvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRp
dHkpOwotICAgICAgICBDR0NvbnRleHRTZXRQYXR0ZXJuUGhhc2UoY29udGV4dCwgQ0dTaXplWmVy
byk7Ci0KLSAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNv
bG9yLmdldCgpKTsKLSAgICAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgQ0dDb250ZXh0
R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpKTsKLSAgICB9Ci0KLSAgICBzdGF0ZVNhdmVyLnJl
c3RvcmUoKTsKKyAgICBjdHh0LmRyYXdQYXR0ZXJuKCp0aGlzLCB0aWxlUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0LCBi
bGVuZE1vZGUpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNl
cnZlcigpLT5kaWREcmF3KHRoaXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262974</attachid>
            <date>2015-10-12 22:58:26 -0700</date>
            <delta_ts>2015-10-13 12:04:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150077-20151012225750.patch</filename>
            <type>text/plain</type>
            <size>16830</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwOTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVlZDk0ZTNiYjhhNWI3
MzdjYjUxNWFkODg3ZTc4MDE2Y2IyMDM2Zi4uOTQ3NTc4MTIzYmFjNTQ0NzgwMjZhYTE2M2ZlNTQ3
YTYyOTNmM2QxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE1LTEwLTEyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIE1vdmUgSW1hZ2U6
OmRyYXdQYXR0ZXJuIGZvciBDRyBpbnRvIEdyYXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDc3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gY29uc29saWRhdGUg
Y29kZSB0aGF0IGNhbGxzIGludG8gQ29yZSBHcmFwaGljcyBpbnNpZGUKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0LCBtb3ZlIHRoZSBib2R5IG9mIEltYWdlOjpkcmF3UGF0dGVybigpIGludG8KKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0Q0cuY3BwLCBhbmQgZG8gdGhlIHNhbWUgZm9yIENhaXJvLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdQYXR0ZXJuQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpkcmF3UGF0dGVybkNhbGxiYWNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5SZWxlYXNlQ2FsbGJhY2spOiBEZWxldGVk
LgorCisyMDE1LTEwLTEyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CiAgICAgICAgIFNwZWN1bGF0aXZlIENhaXJvIGJ1aWxkIGZpeGVzIGFmdGVyIHIxOTA5MTAuCiAK
ICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggMGVmMGM3ZjFiZGM2ZDYyOGIyYjM0Y2U5Nzg3ZmE2MzJkNTk1OWE5Yy4uZDgwM2Fj
NzUyNWE3ZTAzMTg4YWIxYmIzYTgyNDkyYjkxZWRjMjk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTMyMCw2ICszMjAs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CiAgICAg
ICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCisgICAgICAg
IHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworCiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0
aW9uUXVhbGl0eSk7CiAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4
IDJlYzBmYjk5ZGM0OWNmY2M0NTBiNWU5ZDZhNzViODI0M2UxYTdiZDkuLjkzZmIzMGM3ZTFhNzYw
MjJmZjNjNTU4MGQ0Y2U3OTQ5MzU0YzhjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAKQEAgLTEwNzcsNiArMTA3NywxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlKQoreworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICgh
c3VyZmFjZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQu
CisgICAgICAgIHJldHVybjsKKworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCkt
PmNyKCk7CisgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgc3VyZmFjZS5nZXQoKSwg
SW50U2l6ZShpbWFnZS5zaXplKCkpLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHRvQ2Fpcm9PcGVyYXRvcihvcCksIGRlc3RSZWN0KTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQogewogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IGI5ZDMzYzk5NzRhNGM0OWZiMDJlYmIy
NmU2MWNhMTI5MDY0YjdlNWYuLmU0YzYzYTM0NmUyMmRmYjM0ZWNlYmI3NzI2M2I3NGUzNzc3YjBl
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQ2Fpcm8uY3BwCkBAIC00MiwxNCArNDIsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IEJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwotICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2
ZSBhbiBpbWFnZSB5ZXQuCi0gICAgICAgIHJldHVybjsKLQotICAgIGNhaXJvX3QqIGNyID0gY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKLSAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250
ZXh0KGNyLCBzdXJmYWNlLmdldCgpLCBJbnRTaXplKHNpemUoKSksIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgdG9DYWlyb09wZXJhdG9yKG9wKSwgZGVzdFJlY3QpOworICAgIGNv
bnRleHQuZHJhd1BhdHRlcm4oKnRoaXMsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgY29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0LCBibGVuZE1vZGUpOwogCiAgICAg
aWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGQxZjI3MGRlYTJlMTk1NjA0ZDM4Mjc2ZTE2Zjg0
ZDgyYmRhOWI3ZjEuLjAzYWQzMWM1MWE2ODYzZDk4ZmJjMTNjZmFiMmY2YzBlNTQwOWRlMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKQEAgLTI0Myw2ICsyNDMsMTA4IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBG
bG9hdFNpCiAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIGFkanVzdGVkRGVzdFJlY3Qs
IGltYWdlLmdldCgpKTsKIH0KIAorc3RhdGljIHZvaWQgZHJhd1BhdHRlcm5DYWxsYmFjayh2b2lk
KiBpbmZvLCBDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBDR0ltYWdlUmVmIGltYWdlID0g
KENHSW1hZ2VSZWYpaW5mbzsKKyAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2UpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0
LCAxLCAtMSk7CisgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIDAsIC1oZWlnaHQp
OworI2VuZGlmCisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIEdyYXBoaWNzQ29udGV4
dChjb250ZXh0KS5yb3VuZFRvRGV2aWNlUGl4ZWxzKEZsb2F0UmVjdCgwLCAwLCBDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UpLCBoZWlnaHQpKSwgaW1hZ2UpOworfQorCitzdGF0aWMgdm9pZCBwYXR0ZXJu
UmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCit7CisgICAgYXV0byBpbWFnZSA9IHN0YXRpY19j
YXN0PENHSW1hZ2VSZWY+KGluZm8pOworICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlXSB7Cisg
ICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKKyAgICB9KTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit7CisgICAgaWYgKCFwYXR0ZXJuVHJhbnNmb3JtLmlz
SW52ZXJ0aWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDR0NvbnRleHRSZWYgY29udGV4
dCA9IHBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihjb250ZXh0KTsKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGRlc3RSZWN0KTsK
KworICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOworCisg
ICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3Qu
eSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkpOworICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQs
IDEsIC0xKTsKKyAgICAKKyAgICAvLyBDb21wdXRlIHRoZSBzY2FsZWQgdGlsZSBzaXplLgorICAg
IGZsb2F0IHNjYWxlZFRpbGVIZWlnaHQgPSB0aWxlUmVjdC5oZWlnaHQoKSAqIG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5kKCkpOworICAgIAorICAgIC8vIFdlIGhhdmUg
dG8gYWRqdXN0IHRoZSBwaGFzZSB0byBkZWFsIHdpdGggdGhlIGZhY3Qgd2UncmUgaW4gQ2FydGVz
aWFuIHNwYWNlIG5vdyAod2l0aCB0aGUgYm90dG9tIGxlZnQgY29ybmVyIG9mIGRlc3RSZWN0IGJl
aW5nCisgICAgLy8gdGhlIG9yaWdpbikuCisgICAgZmxvYXQgYWRqdXN0ZWRYID0gcGhhc2UueCgp
IC0gZGVzdFJlY3QueCgpICsgdGlsZVJlY3QueCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChw
YXR0ZXJuVHJhbnNmb3JtLmEoKSk7IC8vIFdlIHRyYW5zbGF0ZWQgdGhlIGNvbnRleHQgc28gdGhh
dCBkZXN0UmVjdC54KCkgaXMgdGhlIG9yaWdpbiwgc28gc3VidHJhY3QgaXQgb3V0LgorICAgIGZs
b2F0IGFkanVzdGVkWSA9IGRlc3RSZWN0LmhlaWdodCgpIC0gKHBoYXNlLnkoKSAtIGRlc3RSZWN0
LnkoKSArIHRpbGVSZWN0LnkoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5z
Zm9ybS5kKCkpICsgc2NhbGVkVGlsZUhlaWdodCk7CisKKyAgICBDR0ltYWdlUmVmIHRpbGVJbWFn
ZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgZmxvYXQgaCA9IENH
SW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlKTsKKworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBz
dWJJbWFnZTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGlt
YWdlLm9yaWdpbmFsU2l6ZSgpOworI2Vsc2UKKyAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1h
Z2Uuc2l6ZSgpOworI2VuZGlmCisgICAgaWYgKHRpbGVSZWN0LnNpemUoKSA9PSBpbWFnZVNpemUp
CisgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlOworICAgIGVsc2UgeworICAgICAgICAvLyBD
b3B5aW5nIGEgc3ViLWltYWdlIG91dCBvZiBhIHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIHN0b3Bz
IHRoZSBkZWNvZGluZyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UuIEl0IHNob3VsZCBuZXZlciBoYXBw
ZW4KKyAgICAgICAgLy8gYmVjYXVzZSBzdWItaW1hZ2VzIGFyZSBvbmx5IHVzZWQgZm9yIGJvcmRl
ci1pbWFnZSwgd2hpY2ggb25seSByZW5kZXJzIHdoZW4gdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29k
ZWQuCisgICAgICAgIEFTU0VSVChoID09IGltYWdlLmhlaWdodCgpKTsKKyAgICAgICAgc3ViSW1h
Z2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLCB0aWxl
UmVjdCkpOworICAgIH0KKworICAgIC8vIEFkanVzdCB0aGUgY29sb3Igc3BhY2UuCisgICAgc3Vi
SW1hZ2UgPSBJbWFnZTo6aW1hZ2VXaXRoQ29sb3JTcGFjZShzdWJJbWFnZS5nZXQoKSwgc3R5bGVD
b2xvclNwYWNlKTsKKworICAgIC8vIElmIHdlIG5lZWQgdG8gcGFpbnQgZ2FwcyBiZXR3ZWVuIHRp
bGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQgaW1hZ2Ugb3Igbm9uLXplcm8g
c3BhY2luZywKKyAgICAvLyBmYWxsIGJhY2sgdG8gdGhlIGxlc3MgZWZmaWNpZW50IENHUGF0dGVy
bi1iYXNlZCBtZWNoYW5pc20uCisgICAgZmxvYXQgc2NhbGVkVGlsZVdpZHRoID0gdGlsZVJlY3Qu
d2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOwor
ICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlKTsKKyAgICBpZiAodyA9PSBp
bWFnZS5zaXplKCkud2lkdGgoKSAmJiBoID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAhc3Bh
Y2luZy53aWR0aCgpICYmICFzcGFjaW5nLmhlaWdodCgpKQorICAgICAgICBDR0NvbnRleHREcmF3
VGlsZWRJbWFnZShjb250ZXh0LCBGbG9hdFJlY3QoYWRqdXN0ZWRYLCBhZGp1c3RlZFksIHNjYWxl
ZFRpbGVXaWR0aCwgc2NhbGVkVGlsZUhlaWdodCksIHN1YkltYWdlLmdldCgpKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IENHUGF0dGVybkNhbGxiYWNrcyBwYXR0ZXJuQ2FsbGJh
Y2tzID0geyAwLCBkcmF3UGF0dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07
CisgICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtTWFr
ZShuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpLCAwLCAwLCBu
YXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQocGF0dGVyblRyYW5zZm9ybS5kKCkpLCBhZGp1c3RlZFgs
IGFkanVzdGVkWSk7CisgICAgICAgIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KG1h
dHJpeCwgQ0dDb250ZXh0R2V0Q1RNKGNvbnRleHQpKTsKKyAgICAgICAgLy8gVGhlIHRvcCBvZiBh
IHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIGlzIGRyYXduIGF0IHRoZSBib3R0b20gb2YgdGhlIHRp
bGUuIE1hcCBpdCB0byB0aGUgdG9wLgorICAgICAgICBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9y
bVRyYW5zbGF0ZShtYXRyaXgsIDAsIGltYWdlLnNpemUoKS5oZWlnaHQoKSAtIGgpOworI2lmIFBM
QVRGT1JNKElPUykKKyAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZShtYXRy
aXgsIDEsIC0xKTsKKyAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUo
bWF0cml4LCAwLCAtaCk7CisjZW5kaWYKKyAgICAgICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdl
ID0gQ0dJbWFnZVJldGFpbihzdWJJbWFnZS5nZXQoKSk7CisgICAgICAgIFJldGFpblB0cjxDR1Bh
dHRlcm5SZWY+IHBhdHRlcm4gPSBhZG9wdENGKENHUGF0dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdl
LCBDR1JlY3RNYWtlKDAsIDAsIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgpKSwg
bWF0cml4LAorICAgICAgICAgICAgdGlsZVJlY3Qud2lkdGgoKSArIHNwYWNpbmcud2lkdGgoKSAq
ICgxIC8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSkpLAorICAg
ICAgICAgICAgdGlsZVJlY3QuaGVpZ2h0KCkgKyBzcGFjaW5nLmhlaWdodCgpICogKDEgLyBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uZCgpKSksCisgICAgICAgICAgICBr
Q0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCB0cnVlLCAmcGF0dGVybkNhbGxiYWNrcykp
OworICAgICAgICAKKyAgICAgICAgaWYgKCFwYXR0ZXJuKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IHBhdHRlcm5TcGFjZSA9IGFkb3B0
Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybigwKSk7CisKKyAgICAgICAgQ0dGbG9hdCBhbHBo
YSA9IDE7CisgICAgICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvciA9IGFkb3B0Q0YoQ0dD
b2xvckNyZWF0ZVdpdGhQYXR0ZXJuKHBhdHRlcm5TcGFjZS5nZXQoKSwgcGF0dGVybi5nZXQoKSwg
JmFscGhhKSk7CisgICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvclNwYWNlKGNvbnRleHQsIHBh
dHRlcm5TcGFjZS5nZXQoKSk7CisKKyAgICAgICAgLy8gRklYTUU6IFJlYWxseSB3YW50IGEgcHVi
bGljIEFQSSBmb3IgdGhpcy4gSXQgaXMganVzdCBDR0NvbnRleHRTZXRCYXNlQ1RNKGNvbnRleHQs
IENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpeSkuCisgICAgICAgIHdrU2V0QmFzZUNUTShjb250ZXh0
LCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5KTsKKyAgICAgICAgQ0dDb250ZXh0U2V0UGF0dGVy
blBoYXNlKGNvbnRleHQsIENHU2l6ZVplcm8pOworCisgICAgICAgIENHQ29udGV4dFNldEZpbGxD
b2xvcldpdGhDb2xvcihjb250ZXh0LCBjb2xvci5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dEZp
bGxSZWN0KGNvbnRleHQsIENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveChjb250ZXh0KSk7Cisg
ICAgfQorfQorCiAvLyBEcmF3cyBhIGZpbGxlZCByZWN0YW5nbGUgd2l0aCBhIHN0cm9rZWQgYm9y
ZGVyLgogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAppbmRleCA2YTNmMGIwN2ZlYzc0MzYxZmM0MzZlMTYw
NzBhMWEyNGRlNmIzMzJiLi43NWFiYmY4Y2QxNjRjZDUzOTU4ZDRmZDY2Y2ExM2E5NDE4Njk4NzQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNw
cApAQCAtNjcsMTEwICs2NywxMyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2U6OmltYWdl
V2l0aENvbG9yU3BhY2UoQ0dJbWFnZVJlZiBvcmlnaW5hbEltYWdlLCBDb2xvcgogICAgIHJldHVy
biBvcmlnaW5hbEltYWdlOwogfQogCi1zdGF0aWMgdm9pZCBkcmF3UGF0dGVybkNhbGxiYWNrKHZv
aWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQotewotICAgIENHSW1hZ2VSZWYgaW1hZ2Ug
PSAoQ0dJbWFnZVJlZilpbmZvOwotICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdo
dChpbWFnZSk7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRl
eHQsIDEsIC0xKTsKLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgLWhlaWdo
dCk7Ci0jZW5kaWYKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgR3JhcGhpY3NDb250
ZXh0KGNvbnRleHQpLnJvdW5kVG9EZXZpY2VQaXhlbHMoRmxvYXRSZWN0KDAsIDAsIENHSW1hZ2VH
ZXRXaWR0aChpbWFnZSksIGhlaWdodCkpLCBpbWFnZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHBhdHRl
cm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKLXsKLSAgICBhdXRvIGltYWdlID0gc3RhdGlj
X2Nhc3Q8Q0dJbWFnZVJlZj4oaW5mbyk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2VdIHsK
LSAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwotICAgIH0pOwotfQotCiB2b2lkIEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKCFuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhdHRlcm5UcmFu
c2Zvcm0uaXNJbnZlcnRpYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gY3R4dC5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY3R4dCk7Ci0gICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250
ZXh0LCBkZXN0UmVjdCk7Ci0gICAgY3R4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5k
TW9kZSk7Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGRlc3RSZWN0LngoKSwg
ZGVzdFJlY3QueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkpOwotICAgIENHQ29udGV4dFNjYWxlQ1RN
KGNvbnRleHQsIDEsIC0xKTsKLSAgICAKLSAgICAvLyBDb21wdXRlIHRoZSBzY2FsZWQgdGlsZSBz
aXplLgotICAgIGZsb2F0IHNjYWxlZFRpbGVIZWlnaHQgPSB0aWxlUmVjdC5oZWlnaHQoKSAqIG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5kKCkpOwotICAgIAotICAgIC8v
IFdlIGhhdmUgdG8gYWRqdXN0IHRoZSBwaGFzZSB0byBkZWFsIHdpdGggdGhlIGZhY3Qgd2UncmUg
aW4gQ2FydGVzaWFuIHNwYWNlIG5vdyAod2l0aCB0aGUgYm90dG9tIGxlZnQgY29ybmVyIG9mIGRl
c3RSZWN0IGJlaW5nCi0gICAgLy8gdGhlIG9yaWdpbikuCi0gICAgZmxvYXQgYWRqdXN0ZWRYID0g
cGhhc2UueCgpIC0gZGVzdFJlY3QueCgpICsgdGlsZVJlY3QueCgpICogbmFycm93UHJlY2lzaW9u
VG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7IC8vIFdlIHRyYW5zbGF0ZWQgdGhlIGNvbnRl
eHQgc28gdGhhdCBkZXN0UmVjdC54KCkgaXMgdGhlIG9yaWdpbiwgc28gc3VidHJhY3QgaXQgb3V0
LgotICAgIGZsb2F0IGFkanVzdGVkWSA9IGRlc3RSZWN0LmhlaWdodCgpIC0gKHBoYXNlLnkoKSAt
IGRlc3RSZWN0LnkoKSArIHRpbGVSZWN0LnkoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0
dGVyblRyYW5zZm9ybS5kKCkpICsgc2NhbGVkVGlsZUhlaWdodCk7Ci0KLSAgICBDR0ltYWdlUmVm
IHRpbGVJbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgZmxvYXQgaCA9
IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlKTsKLQotICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBzdWJJbWFnZTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9
IG9yaWdpbmFsU2l6ZSgpOwotI2Vsc2UKLSAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gc2l6ZSgp
OwotI2VuZGlmCi0gICAgaWYgKHRpbGVSZWN0LnNpemUoKSA9PSBpbWFnZVNpemUpCi0gICAgICAg
IHN1YkltYWdlID0gdGlsZUltYWdlOwotICAgIGVsc2UgewotICAgICAgICAvLyBDb3B5aW5nIGEg
c3ViLWltYWdlIG91dCBvZiBhIHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNv
ZGluZyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UuIEl0IHNob3VsZCBuZXZlciBoYXBwZW4KLSAgICAg
ICAgLy8gYmVjYXVzZSBzdWItaW1hZ2VzIGFyZSBvbmx5IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwg
d2hpY2ggb25seSByZW5kZXJzIHdoZW4gdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29kZWQuCi0gICAg
ICAgIEFTU0VSVChoID09IGhlaWdodCgpKTsKLSAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENH
SW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLCB0aWxlUmVjdCkpOwotICAgIH0K
LQotICAgIC8vIEFkanVzdCB0aGUgY29sb3Igc3BhY2UuCi0gICAgc3ViSW1hZ2UgPSBJbWFnZTo6
aW1hZ2VXaXRoQ29sb3JTcGFjZShzdWJJbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNlKTsKLQot
ICAgIC8vIElmIHdlIG5lZWQgdG8gcGFpbnQgZ2FwcyBiZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2Ug
aGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQgaW1hZ2Ugb3Igbm9uLXplcm8gc3BhY2luZywKLSAgICAv
LyBmYWxsIGJhY2sgdG8gdGhlIGxlc3MgZWZmaWNpZW50IENHUGF0dGVybi1iYXNlZCBtZWNoYW5p
c20uCi0gICAgZmxvYXQgc2NhbGVkVGlsZVdpZHRoID0gdGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IHcgPSBD
R0ltYWdlR2V0V2lkdGgodGlsZUltYWdlKTsKLSAgICBpZiAodyA9PSBzaXplKCkud2lkdGgoKSAm
JiBoID09IHNpemUoKS5oZWlnaHQoKSAmJiAhc3BhY2luZy53aWR0aCgpICYmICFzcGFjaW5nLmhl
aWdodCgpKQotICAgICAgICBDR0NvbnRleHREcmF3VGlsZWRJbWFnZShjb250ZXh0LCBGbG9hdFJl
Y3QoYWRqdXN0ZWRYLCBhZGp1c3RlZFksIHNjYWxlZFRpbGVXaWR0aCwgc2NhbGVkVGlsZUhlaWdo
dCksIHN1YkltYWdlLmdldCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IENH
UGF0dGVybkNhbGxiYWNrcyBwYXR0ZXJuQ2FsbGJhY2tzID0geyAwLCBkcmF3UGF0dGVybkNhbGxi
YWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07Ci0gICAgICAgIENHQWZmaW5lVHJhbnNmb3Jt
IG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZShuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQo
cGF0dGVyblRyYW5zZm9ybS5hKCkpLCAwLCAwLCBuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQocGF0
dGVyblRyYW5zZm9ybS5kKCkpLCBhZGp1c3RlZFgsIGFkanVzdGVkWSk7Ci0gICAgICAgIG1hdHJp
eCA9IENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KG1hdHJpeCwgQ0dDb250ZXh0R2V0Q1RNKGNvbnRl
eHQpKTsKLSAgICAgICAgLy8gVGhlIHRvcCBvZiBhIHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIGlz
IGRyYXduIGF0IHRoZSBib3R0b20gb2YgdGhlIHRpbGUuIE1hcCBpdCB0byB0aGUgdG9wLgotICAg
ICAgICBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0ZShtYXRyaXgsIDAsIHNpemUo
KS5oZWlnaHQoKSAtIGgpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgbWF0cml4ID0gQ0dB
ZmZpbmVUcmFuc2Zvcm1TY2FsZShtYXRyaXgsIDEsIC0xKTsKLSAgICAgICAgbWF0cml4ID0gQ0dB
ZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUobWF0cml4LCAwLCAtaCk7Ci0jZW5kaWYKLSAgICAgICAg
Q0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gQ0dJbWFnZVJldGFpbihzdWJJbWFnZS5nZXQoKSk7
Ci0gICAgICAgIFJldGFpblB0cjxDR1BhdHRlcm5SZWY+IHBhdHRlcm4gPSBhZG9wdENGKENHUGF0
dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLCBDR1JlY3RNYWtlKDAsIDAsIHRpbGVSZWN0LndpZHRo
KCksIHRpbGVSZWN0LmhlaWdodCgpKSwgbWF0cml4LAotICAgICAgICAgICAgdGlsZVJlY3Qud2lk
dGgoKSArIHNwYWNpbmcud2lkdGgoKSAqICgxIC8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0
ZXJuVHJhbnNmb3JtLmEoKSkpLAotICAgICAgICAgICAgdGlsZVJlY3QuaGVpZ2h0KCkgKyBzcGFj
aW5nLmhlaWdodCgpICogKDEgLyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zv
cm0uZCgpKSksCi0gICAgICAgICAgICBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCB0
cnVlLCAmcGF0dGVybkNhbGxiYWNrcykpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFwYXR0ZXJu
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VS
ZWY+IHBhdHRlcm5TcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybigwKSk7
Ci0KLSAgICAgICAgQ0dGbG9hdCBhbHBoYSA9IDE7Ci0gICAgICAgIFJldGFpblB0cjxDR0NvbG9y
UmVmPiBjb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZVdpdGhQYXR0ZXJuKHBhdHRlcm5TcGFj
ZS5nZXQoKSwgcGF0dGVybi5nZXQoKSwgJmFscGhhKSk7Ci0gICAgICAgIENHQ29udGV4dFNldEZp
bGxDb2xvclNwYWNlKGNvbnRleHQsIHBhdHRlcm5TcGFjZS5nZXQoKSk7Ci0KLSAgICAgICAgLy8g
RklYTUU6IFJlYWxseSB3YW50IGEgcHVibGljIEFQSSBmb3IgdGhpcy4gSXQgaXMganVzdCBDR0Nv
bnRleHRTZXRCYXNlQ1RNKGNvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpeSkuCi0gICAg
ICAgIHdrU2V0QmFzZUNUTShjb250ZXh0LCBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5KTsKLSAg
ICAgICAgQ0dDb250ZXh0U2V0UGF0dGVyblBoYXNlKGNvbnRleHQsIENHU2l6ZVplcm8pOwotCi0g
ICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjb2xvci5nZXQo
KSk7Ci0gICAgICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIENHQ29udGV4dEdldENsaXBC
b3VuZGluZ0JveChjb250ZXh0KSk7Ci0gICAgfQotCi0gICAgc3RhdGVTYXZlci5yZXN0b3JlKCk7
CisgICAgY3R4dC5kcmF3UGF0dGVybigqdGhpcywgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBzcGFjaW5nLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2Rl
KTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+
ZGlkRHJhdyh0aGlzKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>