<?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>147773</bug_id>
          
          <creation_ts>2015-08-06 23:26:18 -0700</creation_ts>
          <short_desc>Make RenderElement the CachedImageClient, rather than RenderObject</short_desc>
          <delta_ts>2015-08-10 09:16:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1115667</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-08-06 23:26:18 -0700</bug_when>
    <thetext>Make RenderElement the CachedImageClient, rather than RenderObject</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115669</commentid>
    <comment_count>1</comment_count>
      <attachid>258463</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-08-06 23:27:05 -0700</bug_when>
    <thetext>Created attachment 258463
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115670</commentid>
    <comment_count>2</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-08-06 23:29:38 -0700</bug_when>
    <thetext>Does this regress the sizeof(RenderElement) due to extra vtable ptr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116027</commentid>
    <comment_count>3</comment_count>
      <attachid>258571</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-08-08 12:20:05 -0700</bug_when>
    <thetext>Created attachment 258571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116028</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-08-08 12:54:03 -0700</bug_when>
    <thetext>Before:

sizeof RenderObject is 48
sizeof RenderText is 88
sizeof RenderElement is 72
sizeof RenderBoxModelObject is 80
sizeof RenderBox is 136

After:

sizeof RenderObject is 48
sizeof RenderText is 88
sizeof RenderElement is 88
sizeof RenderBoxModelObject is 96
sizeof RenderBox is 152

Hrmm, maybe we can improve packing into RenderObject to eliminate this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116063</commentid>
    <comment_count>5</comment_count>
      <attachid>258571</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-08-08 17:51:31 -0700</bug_when>
    <thetext>Comment on attachment 258571
Patch

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

Not saying review+ yet because of the question in HTMLImageElement::width.

&gt; Source/WebCore/html/HTMLImageElement.cpp:290
&gt; -            return m_imageLoader.image()-&gt;imageSizeForRenderer(renderer(), 1.0f).width();
&gt; +            return m_imageLoader.image()-&gt;imageSizeForRenderer(nullptr, 1.0f).width();

Change log doesn’t make clear why we want to pass nullptr here instead of renderer.

&gt; Source/WebCore/page/EventHandler.cpp:1446
&gt; +        RenderElement* renderElement = is&lt;RenderElement&gt;(renderer) ? downcast&lt;RenderElement&gt;(renderer) : (renderer-&gt;isText() ? renderer-&gt;parent() : nullptr);

Why is the isText check needed? Which non-RenderElement, non-text RenderObject has a requirement that we use null instead of a pointer to the object’s parent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116064</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-08-08 17:53:01 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Before:
&gt; 
&gt; sizeof RenderObject is 48
&gt; sizeof RenderText is 88
&gt; sizeof RenderElement is 72
&gt; sizeof RenderBoxModelObject is 80
&gt; sizeof RenderBox is 136
&gt; 
&gt; After:
&gt; 
&gt; sizeof RenderObject is 48
&gt; sizeof RenderText is 88
&gt; sizeof RenderElement is 88
&gt; sizeof RenderBoxModelObject is 96
&gt; sizeof RenderBox is 152
&gt; 
&gt; Hrmm, maybe we can improve packing into RenderObject to eliminate this
&gt; change.

That’s bizarre. Why on earth do we see that big increase in RenderBox? I suspect the problem is that this makes it multiple inheritance and before it was single inheritance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116210</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-08-10 08:24:03 -0700</bug_when>
    <thetext>This adds vptr to RenderElement, the results are exactly as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116211</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-08-10 08:29:53 -0700</bug_when>
    <thetext>A good strategy might be to have a separate non-renderer object that is a CachedImageClient and keep those in a global RenderElement-&gt;ImageClient map. The client object would only be constructed when needed. Most renderers don&apos;t load any images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116212</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-08-10 08:31:21 -0700</bug_when>
    <thetext>RenderElementImageLoader or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116213</commentid>
    <comment_count>10</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-08-10 08:32:36 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; A good strategy might be to have a separate non-renderer object that is a
&gt; CachedImageClient and keep those in a global RenderElement-&gt;ImageClient map.
&gt; The client object would only be constructed when needed. Most renderers
&gt; don&apos;t load any images.
I&apos;d like to see something like that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116224</commentid>
    <comment_count>11</comment_count>
      <attachid>258571</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-08-10 09:11:09 -0700</bug_when>
    <thetext>Comment on attachment 258571
Patch

Sounds like a plan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116225</commentid>
    <comment_count>12</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-08-10 09:16:25 -0700</bug_when>
    <thetext>I thought we already had static_asserts against growth of common renderers. We should add some!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258463</attachid>
            <date>2015-08-06 23:27:05 -0700</date>
            <delta_ts>2015-08-08 12:19:59 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-147773-20150806232654.patch</filename>
            <type>text/plain</type>
            <size>20361</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3YTNiMDQyNjFiOTBk
NTAxNDkzNTlmNjY5YzNkODYwMzIzZjZhYi4uYTMzMDVlMGZlNDEyMjlmNWQ1ZDlhOTNiMWM1Y2Jj
YWZjMGU3ODQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE1LTA4LTA2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgUmVuZGVy
RWxlbWVudCB0aGUgQ2FjaGVkSW1hZ2VDbGllbnQsIHJhdGhlciB0aGFuIFJlbmRlck9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NzczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9vYmpjL0RPTS5tbToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBpbWFnZV0pOgorICAgICAgICAq
IGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50Ojp3aWR0aCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZUZvclJlbmRlcmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZXJlcik6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VGcm9tSW1hZ2VFbGVtZW50
Tm9kZSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmltYWdlQ2hh
bmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OlJlbmRl
ck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmltYWdlQ2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjppbWFnZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQ2FjaGVkSW1hZ2U6OmNhblJlbmRlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNo
ZWRJbWFnZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0Ojpj
YW5SZW5kZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlSW1hZ2U6OmNhblJlbmRlcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6ZmluZElt
YWdlRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6aW1hZ2VT
aXplRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6aW1hZ2VG
b3JSZW5kZXJlcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaDoKKwog
MjAxNS0wOC0wNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtpT1NdIFJlbW92ZSBkZWFkIGNvZGUgZnJvbSBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQ
bGF0Zm9ybURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCAzZDE4ZDQw
NzVkZjhlMmVmNjZkNDAxMWEwNGEzYzVkNjg4ODU0OTllLi4yZGUzMjc5NmM1ZTU0ZmYwNDlkZjhi
ODg1MTgwYmJhMWQ4MjBiODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAt
NzAxLDEzICs3MDEsMTUgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRU
YXJnZXQqIGV2ZW50VGFyZ2V0KQogLSAoTlNJbWFnZSopaW1hZ2UKIHsKICAgICAvLyBGSVhNRTog
Q291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6Ok5vZGUgYW5kIGF1dG9nZW5l
cmF0ZT8KLSAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZShzZWxmKS0+
cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVu
ZGVyZXIoKTsKICAgICBpZiAoIWlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZG93bmNh
c3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikuY2FjaGVkSW1hZ2UoKTsKKyAgICAKKyAgICBSZW5k
ZXJJbWFnZSYgcmVuZGVySW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKTsK
KyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSByZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgp
OwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpLT5nZXROU0ltYWdlKCk7CisgICAgcmV0dXJuIGNhY2hlZEltYWdlLT5p
bWFnZUZvclJlbmRlcmVyKCZyZW5kZXJJbWFnZSktPmdldE5TSW1hZ2UoKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA3Mjc4Y2E2MDRl
ZWIzZjFmMDVhOTkwZDVmMzE2M2E2NjE4MWNkMmQ3Li5kZTgyMjYxZDUyYzMwYWU5ODQ3Yzk5NGI4
NzE5YzM5ZTkzYjc1ZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAKQEAgLTI4Nyw3ICsyODcsNyBAQCBpbnQgSFRNTEltYWdlRWxlbWVudDo6d2lkdGgoYm9vbCBp
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMpCiAKICAgICAgICAgLy8gaWYgdGhlIGltYWdlIGlzIGF2
YWlsYWJsZSwgdXNlIGl0cyB3aWR0aAogICAgICAgICBpZiAobV9pbWFnZUxvYWRlci5pbWFnZSgp
KQotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIuaW1hZ2UoKS0+aW1hZ2VTaXplRm9y
UmVuZGVyZXIocmVuZGVyZXIoKSwgMS4wZikud2lkdGgoKTsKKyAgICAgICAgICAgIHJldHVybiBt
X2ltYWdlTG9hZGVyLmltYWdlKCktPmltYWdlU2l6ZUZvclJlbmRlcmVyKG51bGxwdHIsIDEuMGYp
LndpZHRoKCk7CiAgICAgfQogCiAgICAgaWYgKGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGRmMzM2NzVj
NjNiNWRiNGFmMDNlMzI5MzdjOTFhOWQ3MzQwNGE3MGEuLjEwOTM3NWI4MGIxMWNjMTAyMzI5MTc4
NWFmY2RhZGY5ODY5MTQxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2Uo
KQogICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiB9CiAKLUltYWdlKiBDYWNoZWRJbWFn
ZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorSW1hZ2Uq
IENhY2hlZEltYWdlOjppbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyKQogewogICAgIGlmIChlcnJvck9jY3VycmVkKCkgJiYgbV9zaG91bGRQYWludEJyb2tlbklt
YWdlKSB7CiAgICAgICAgIC8vIFJldHVybmluZyB0aGUgMXggYnJva2VuIGltYWdlIGlzIG5vbi1p
ZGVhbCwgYnV0IHdlIGNhbm5vdCByZWxpYWJseSBhY2Nlc3MgdGhlIGFwcHJvcHJpYXRlCkBAIC0y
NjcsNyArMjY3LDcgQEAgYm9vbCBDYWNoZWRJbWFnZTo6aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1MYXlvdXRTaXplIENhY2hlZEltYWdlOjpp
bWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBmbG9hdCBt
dWx0aXBsaWVyLCBTaXplVHlwZSBzaXplVHlwZSkKK0xheW91dFNpemUgQ2FjaGVkSW1hZ2U6Omlt
YWdlU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBt
dWx0aXBsaWVyLCBTaXplVHlwZSBzaXplVHlwZSkKIHsKICAgICBpZiAoIW1faW1hZ2UpCiAgICAg
ICAgIHJldHVybiBMYXlvdXRTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCmluZGV4IDg4NTkyNTIzMmI2M2FiNTkwZDQzODZkY2MyY2VmNjI2NThiZDI4NDMu
LjQ3YTlkYWI0ZGIwM2FmMTgzYTllYjNkNzQwMmRlNjM3Yjk0NzFlMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC01OCwxNCArNTgsMTQgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgfkNhY2hlZEltYWdlKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFn
ZSogaW1hZ2UoKTsgLy8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5v
dCBhdmFpbGFibGUgeWV0LgotICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlKiBpbWFnZUZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCopOyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0
aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2Uq
IGltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCopOyAvLyBSZXR1cm5zIHRoZSBu
dWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCiAgICAgYm9vbCBo
YXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICBib29sIGN1cnJl
bnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7CiAKICAgICBzdGQ6
OnBhaXI8SW1hZ2UqLCBmbG9hdD4gYnJva2VuSW1hZ2UoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ip
IGNvbnN0OyAvLyBSZXR1cm5zIGFuIGltYWdlIGFuZCB0aGUgaW1hZ2UncyByZXNvbHV0aW9uIHNj
YWxlIGZhY3Rvci4KICAgICBib29sIHdpbGxQYWludEJyb2tlbkltYWdlKCkgY29uc3Q7IAogCi0g
ICAgYm9vbCBjYW5SZW5kZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgZmxvYXQgbXVs
dGlwbGllcikgeyByZXR1cm4gIWVycm9yT2NjdXJyZWQoKSAmJiAhaW1hZ2VTaXplRm9yUmVuZGVy
ZXIocmVuZGVyZXIsIG11bHRpcGxpZXIpLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgY2FuUmVuZGVy
KGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBsaWVyKSB7IHJldHVy
biAhZXJyb3JPY2N1cnJlZCgpICYmICFpbWFnZVNpemVGb3JSZW5kZXJlcihyZW5kZXJlciwgbXVs
dGlwbGllcikuaXNFbXB0eSgpOyB9CiAKICAgICB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5k
ZXJlcihjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIGNvbnN0IExheW91dFNpemUmLCBmbG9hdCk7
CiAgICAgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3Q7CkBAIC04MCw3ICs4MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgSW50cmluc2ljU2l6ZQogICAgIH07CiAgICAgLy8gVGhpcyBt
ZXRob2QgdGFrZXMgYSB6b29tIG11bHRpcGxpZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBpbmNyZWFz
ZSB0aGUgbmF0dXJhbCBzaXplIG9mIHRoZSBpbWFnZSBieSB0aGUgem9vbS4KLSAgICBMYXlvdXRT
aXplIGltYWdlU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGZsb2F0IG11bHRp
cGxpZXIsIFNpemVUeXBlID0gVXNlZFNpemUpOyAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBj
b21wbGV0ZSBpbWFnZS4KKyAgICBMYXlvdXRTaXplIGltYWdlU2l6ZUZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlckVsZW1lbnQqLCBmbG9hdCBtdWx0aXBsaWVyLCBTaXplVHlwZSA9IFVzZWRTaXplKTsg
Ly8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgY29tcGxldGUgaW1hZ2UuCiAgICAgdm9pZCBjb21w
dXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGlu
dHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbyk7CiAKICAgICBib29sIGlz
TWFudWFsbHlDYWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWFudWFsbHlDYWNoZWQ7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCA0Y2Zh
NWY3ZDNhZGFkOTQ2NWQzNjlmNGE0YTE5N2VkOGUyN2Y1MGM5Li42MWUxYmZiMTIwOTZhNDAxOGFl
ZmVlNjRiNjEyNTBmZGRiNTRiODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xMzYsMTEgKzEzNiwxMyBAQCBzdGF0aWMgSW1hZ2UqIGlt
YWdlRnJvbUltYWdlRWxlbWVudE5vZGUoTm9kZSYgbm9kZSkKICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gbm9kZS5yZW5kZXJlcigpOwogICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KHJlbmRl
cmVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgQ2FjaGVkSW1hZ2UqIGltYWdlID0g
ZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikuY2FjaGVkSW1hZ2UoKTsKKworICAgIFJl
bmRlckltYWdlJiByZW5kZXJJbWFnZSA9IGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIp
OworICAgIENhY2hlZEltYWdlKiBpbWFnZSA9IHJlbmRlckltYWdlLmNhY2hlZEltYWdlKCk7CiAg
ICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7
CisgICAgcmV0dXJuIGltYWdlLT5pbWFnZUZvclJlbmRlcmVyKCZyZW5kZXJJbWFnZSk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDdhNTExZGQ0ZWI5
MGE5MzMyYjQ3YmYzZTMwMjc0OGE5NmNhZTFlOTMuLjMwMTRkMzY1M2FmYzg0MDBmZjVkNzE0ZDFl
N2ZkOGJkMzgzYWFkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTE0
NDMsNiArMTQ0Myw4IEBAIE9wdGlvbmFsQ3Vyc29yIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29y
KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYm9vbCBzaGlmCiAKICAgICBpZiAoc3R5bGUg
JiYgc3R5bGUtPmN1cnNvcnMoKSkgewogICAgICAgICBjb25zdCBDdXJzb3JMaXN0KiBjdXJzb3Jz
ID0gc3R5bGUtPmN1cnNvcnMoKTsKKyAgICAgICAgLy8gRklYTUU6IGNhbiB0aGUgaGl0IHRlc3Qg
ZXZlciByZXR1cm4gYSBub24tRWxlbWVudCBub2RlPworICAgICAgICBSZW5kZXJFbGVtZW50KiBy
ZW5kZXJFbGVtZW50ID0gaXM8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpID8gZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4ocmVuZGVyZXIpIDogbnVsbHB0cjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGN1cnNvcnMtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBTdHlsZUltYWdl
KiBzdHlsZUltYWdlID0gKCpjdXJzb3JzKVtpXS5pbWFnZSgpOwogICAgICAgICAgICAgaWYgKCFz
dHlsZUltYWdlKQpAQCAtMTQ1Myw3ICsxNDU1LDcgQEAgT3B0aW9uYWxDdXJzb3IgRXZlbnRIYW5k
bGVyOjpzZWxlY3RDdXJzb3IoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBib29sIHNoaWYK
ICAgICAgICAgICAgIGZsb2F0IHNjYWxlID0gc3R5bGVJbWFnZS0+aW1hZ2VTY2FsZUZhY3Rvcigp
OwogICAgICAgICAgICAgLy8gR2V0IGhvdHNwb3QgYW5kIGNvbnZlcnQgZnJvbSBsb2dpY2FsIHBp
eGVscyB0byBwaHlzaWNhbCBwaXhlbHMuCiAgICAgICAgICAgICBJbnRQb2ludCBob3RTcG90ID0g
KCpjdXJzb3JzKVtpXS5ob3RTcG90KCk7Ci0gICAgICAgICAgICBGbG9hdFNpemUgc2l6ZSA9IGNh
Y2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKS0+c2l6ZSgpOworICAgICAgICAg
ICAgRmxvYXRTaXplIHNpemUgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJF
bGVtZW50KS0+c2l6ZSgpOwogICAgICAgICAgICAgaWYgKGNhY2hlZEltYWdlLT5lcnJvck9jY3Vy
cmVkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAvLyBMaW1pdCB0
aGUgc2l6ZSBvZiBjdXJzb3JzIChpbiBVSSBwaXhlbHMpIHNvIHRoYXQgdGhleSBjYW5ub3QgYmUK
QEAgLTE0NjIsNyArMTQ2NCw3IEBAIE9wdGlvbmFsQ3Vyc29yIEV2ZW50SGFuZGxlcjo6c2VsZWN0
Q3Vyc29yKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYm9vbCBzaGlmCiAgICAgICAgICAg
ICBpZiAoc2l6ZS53aWR0aCgpID4gbWF4aW11bUN1cnNvclNpemUgfHwgc2l6ZS5oZWlnaHQoKSA+
IG1heGltdW1DdXJzb3JTaXplKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJl
cik7CisgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5k
ZXJlcihyZW5kZXJFbGVtZW50KTsKICNpZiBFTkFCTEUoTU9VU0VfQ1VSU09SX1NDQUxFKQogICAg
ICAgICAgICAgLy8gRW5zdXJlIG5vIG92ZXJmbG93IHBvc3NpYmxlIGluIGNhbGN1bGF0aW9ucyBh
Ym92ZS4KICAgICAgICAgICAgIGlmIChzY2FsZSA8IG1pbmltdW1DdXJzb3JTY2FsZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCA1MGY4YTNlNWM3MWU1
YTI1MzU2ZGFhNGRlOTRmMDJkMjMxYmIwMzcxLi42MjNmZWVmMGVjZTgzNDg1NWRmMjU5MWQyYzNk
Mjk2MzI1M2NjNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCkBAIC0xMDk1LDYgKzEwOTUsMTEgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp3aWxsQmVEZXN0
cm95ZWQoKQogI2VuZGlmCiB9CiAKK3ZvaWQgUmVuZGVyRWxlbWVudDo6aW1hZ2VDaGFuZ2VkKENh
Y2hlZEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKK3sKKyAgICBpbWFnZUNoYW5n
ZWQoc3RhdGljX2Nhc3Q8V3JhcHBlZEltYWdlUHRyPihpbWFnZSksIHJlY3QpOworfQorCiB2b2lk
IFJlbmRlckVsZW1lbnQ6OnNldE5lZWRzUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKICAgICBBU1NFUlQoIWlzU2V0TmVlZHNMYXlvdXRGb3Ji
aWRkZW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCA1
ZjZjNzNiMmJiZDc0YzYxYzQwN2UwOWY0NGIyMWRkNzU1ODkyZmEzLi42YTVlNmRkMjcyYWMwNTU4
MTk2YjdlMTUyMjkxYTA0MjUwYzA0NWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmgKQEAgLTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgUmVuZGVyRWxlbWVudF9oCiAK
ICNpbmNsdWRlICJBbmltYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2VD
bGllbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzEsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb250cm9sU3Rh
dGVzOwogY2xhc3MgUmVuZGVyQmxvY2s7CiAKLWNsYXNzIFJlbmRlckVsZW1lbnQgOiBwdWJsaWMg
UmVuZGVyT2JqZWN0IHsKK2NsYXNzIFJlbmRlckVsZW1lbnQgOiBwdWJsaWMgUmVuZGVyT2JqZWN0
LCBwdWJsaWMgQ2FjaGVkSW1hZ2VDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRl
ckVsZW1lbnQoKTsKIApAQCAtMjA5LDYgKzIxMCw5IEBAIHB1YmxpYzoKICAgICAKICAgICBjb25z
dCBSZW5kZXJFbGVtZW50KiBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbihUZXh0
RGVjb3JhdGlvbiwgYm9vbCBmaXJzdExpbmUpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIGlt
YWdlQ2hhbmdlZChDYWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJp
ZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIs
IGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgeyB9CisKIHByb3RlY3RlZDoKICAgICBlbnVtIEJh
c2VUeXBlRmxhZ3MgewogICAgICAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0RmxhZyA9IDEgPDwg
MCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYWU2NDFh
NDhhZjY2MDdjY2UyNWZiMGUwZmFmNzc3MTM0ZGRkMDRiMC4uYmNlNDkyMDZkZmZiNzMyNmE1M2I3
YzgxNDEzMTIzNTJkMzBkNTBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKQEAgLTEwNyw4ICsxMDcsNyBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVuZGVy
T2JqZWN0KSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlck9iamVjdCksIFJlbmRlck9iagogREVG
SU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCByZW5kZXJP
YmplY3RDb3VudGVyLCAoIlJlbmRlck9iamVjdCIpKTsKIAogUmVuZGVyT2JqZWN0OjpSZW5kZXJP
YmplY3QoTm9kZSYgbm9kZSkKLSAgICA6IENhY2hlZEltYWdlQ2xpZW50KCkKLSAgICAsIG1fbm9k
ZShub2RlKQorICAgIDogbV9ub2RlKG5vZGUpCiAgICAgLCBtX3BhcmVudChudWxscHRyKQogICAg
ICwgbV9wcmV2aW91cyhudWxscHRyKQogICAgICwgbV9uZXh0KG51bGxwdHIpCkBAIC0yMjg2LDEx
ICsyMjg1LDYgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFkanVzdFJlY3RGb3JPdXRsaW5lQW5kU2hh
ZG93KExheW91dFJlY3QmIHJlY3QpIGNvbnN0CiAgICAgcmVjdC5pbmZsYXRlKG91dGxpbmVTaXpl
KTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSogaW1h
Z2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCi17Ci0gICAgaW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0
PFdyYXBwZWRJbWFnZVB0cj4oaW1hZ2UpLCByZWN0KTsKLX0KLQogUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIFJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KCkgY29uc3QKIHsKICAgICAvLyBJZiBhbnkg
b2YgdGhlIGZvbGxvd2luZyBob2xkcyB0cnVlIHJldHVybiBudWxsIGFuZCBzdG9wIHRoaXMgYWxn
b3JpdGhtOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGY1Y2Qz
NTVmZmM0ZDg3YzBhNmNhMGNiOGJhMjkyOTUyMDcxMDk4NjAuLjA5OTc3NTNkMWJjYzVjNjUyZDhh
NDhiY2Q0N2YxYjFiNzQyZDM5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKQEAgLTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgUmVuZGVyT2JqZWN0X2gKICNkZWZpbmUg
UmVuZGVyT2JqZWN0X2gKIAotI2luY2x1ZGUgIkNhY2hlZEltYWdlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKQEAgLTEzOSw3ICsxMzgsNyBAQCBzdHJ1Y3QgQW5ub3Rh
dGVkUmVnaW9uVmFsdWUgewogI2VuZGlmCiAKIC8vIEJhc2UgY2xhc3MgZm9yIGFsbCByZW5kZXJp
bmcgdHJlZSBvYmplY3RzLgotY2xhc3MgUmVuZGVyT2JqZWN0IDogcHVibGljIENhY2hlZEltYWdl
Q2xpZW50IHsKK2NsYXNzIFJlbmRlck9iamVjdCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckJsb2NrOwogICAgIGZyaWVuZCBjbGFzcyBSZW5k
ZXJCbG9ja0Zsb3c7CkBAIC04MjYsOSArODI1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50
IHByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihpbnQgY3VycmVudCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBpbnQgbmV4dE9mZnNldChpbnQgY3VycmVudCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiwgY29uc3QgSW50UmVjdCogPSBudWxs
cHRyKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFn
ZVB0ciwgY29uc3QgSW50UmVjdCogPSBudWxscHRyKSB7IH0KLQogICAgIFNlbGVjdGlvblN1YnRy
ZWVSb290JiBzZWxlY3Rpb25Sb290KCkgY29uc3Q7CiAgICAgdm9pZCBzZWxlY3Rpb25TdGFydEVu
ZChpbnQmIHNwb3MsIGludCYgZXBvcykgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKaW5kZXggYzI2NTNhMWRj
ODM5NTg1OGVjM2QzY2U1ZWNhNzRjYmRmNGEzMDc4NS4uNDU4ZjNiMmQ3NjhiYzdkMjQ0NmEwN2Fj
OTBlMGZhNjg4MTBhYjU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBTdHlsZUNhY2hlZEltYWdlOjpjc3NWYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9pbWFnZS0+dXJsKCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVVJJKTsKIH0KIAotYm9vbCBTdHlsZUNhY2hlZEltYWdlOjpjYW5SZW5kZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QKK2Jvb2wgU3R5
bGVDYWNoZWRJbWFnZTo6Y2FuUmVuZGVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBm
bG9hdCBtdWx0aXBsaWVyKSBjb25zdAogewogICAgIHJldHVybiBtX2ltYWdlLT5jYW5SZW5kZXIo
cmVuZGVyZXIsIG11bHRpcGxpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmgKaW5kZXggNTRjMmI5MDY3Y2M1MjY4NWM0MzBmODYx
NGE2MDBlNmQyZTk3YTIxZC4uODg0YTlkMjQzYWIwMzIyM2E4NjU3YTNiMDE4ZDUzOTFiM2FkMjc1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJ
bWFnZS5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVh
bCBib29sIGNhblJlbmRlcihjb25zdCBSZW5kZXJPYmplY3QqLCBmbG9hdCBtdWx0aXBsaWVyKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyKGNvbnN0IFJlbmRlckVs
ZW1lbnQqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNMb2FkZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1
cnJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIGltYWdlU2l6ZShj
b25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFn
ZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFn
ZVNldC5jcHAKaW5kZXggNmMxYjAxNzI0YmRkMTYzMmQzOGJmZjQ4ODFkZGEzMzZjYmQwNzkzMS4u
MmNmYmQwZmQ2ZGJjMThmMWI4MDZlOWZjNDI3NTVlNzZkNTQzODFlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcApA
QCAtNTQsNyArNTQsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBTdHlsZUNhY2hlZEltYWdlU2V0
Ojpjc3NWYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2VTZXRWYWx1ZTsKIH0KIAotYm9v
bCBTdHlsZUNhY2hlZEltYWdlU2V0OjpjYW5SZW5kZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QKK2Jvb2wgU3R5bGVDYWNoZWRJbWFnZVNldDo6
Y2FuUmVuZGVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBsaWVy
KSBjb25zdAogewogICAgIHJldHVybiBtX2Jlc3RGaXRJbWFnZS0+Y2FuUmVuZGVyKHJlbmRlcmVy
LCBtdWx0aXBsaWVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oCmluZGV4IDQwN2U0MDM3NGVhNmY1MGFlNjMyMGI0ZmIw
MTg3OTU4YzViZWQ4YjIuLjI1ZDU4Nzg3MjhjZGRiNmNkZGZjYWQ3NWZhZWIwMDdlYjMzNjE5MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZElt
YWdlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2VTZXQuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIC8vIG1lYW5pbmdmdWwg
ZW5vdWdoIG9yIG5vdC4KICAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBkYXRhKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9iZXN0Rml0SW1hZ2UuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBjYW5SZW5kZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQgbXVsdGlwbGllcikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGNhblJlbmRlcihjb25zdCBSZW5kZXJFbGVt
ZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IGlzTG9hZGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJy
ZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBpbWFnZVNpemUoY29u
c3QgUmVuZGVyRWxlbWVudCosIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgKaW5kZXggMjM2ZjFhMjE5
OWMyODNhZDMxZjU0M2Y5NzM5MjlkOTllNTJjNzZlZC4uYjk1OGQ0MGQxNWY0NTVlYmQ2NTk5OTcy
ODI1MmJkNzI3OTY5NGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVJbWFnZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuUmVuZGVyKGNvbnN0IFJlbmRlck9iamVjdCosIGZsb2F0IC8qbXVsdGlwbGllciovKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNhblJlbmRlcihjb25zdCBSZW5k
ZXJFbGVtZW50KiwgZmxvYXQgLyptdWx0aXBsaWVyKi8pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAg
dmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgRmxvYXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQg
bXVsdGlwbGllcikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuY3BwCmluZGV4IGY0ZWI3ZTRkYWE3YWY4MjcwNjViMGU2M2RiM2FmNjRhNTJi
MjJhY2MuLmZmYTMzMGQyOWZkNDI5ODk5Yjc1NDc1ODNkMDQ5N2M1MTg2OTc4MDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKQEAgLTYyLDEyICs2
MiwxMiBAQCB2b2lkIFNWR0ltYWdlQ2FjaGU6OnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihj
b25zdCBDYWNoZWRJbWFnZUNsaWVudCogY2xpZW50LAogICAgIG1faW1hZ2VGb3JDb250YWluZXJN
YXAuc2V0KGNsaWVudCwgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmNyZWF0ZShtX3N2Z0ltYWdlLCBj
b250YWluZXJTaXplV2l0aG91dFpvb20sIGNvbnRhaW5lclpvb20pKTsKIH0KIAotSW1hZ2UqIFNW
R0ltYWdlQ2FjaGU6OmZpbmRJbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpIGNvbnN0CitJbWFnZSogU1ZHSW1hZ2VDYWNoZTo6ZmluZEltYWdlRm9yUmVuZGVyZXIo
Y29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlbmRl
cmVyID8gbV9pbWFnZUZvckNvbnRhaW5lck1hcC5nZXQocmVuZGVyZXIpIDogbnVsbHB0cjsKIH0K
IAotRmxvYXRTaXplIFNWR0ltYWdlQ2FjaGU6OmltYWdlU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CitGbG9hdFNpemUgU1ZHSW1hZ2VDYWNoZTo6aW1h
Z2VTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7
CiAgICAgYXV0byogaW1hZ2UgPSBmaW5kSW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAg
cmV0dXJuIGltYWdlID8gaW1hZ2UtPnNpemUoKSA6IG1fc3ZnSW1hZ2UtPnNpemUoKTsKQEAgLTc1
LDcgKzc1LDcgQEAgRmxvYXRTaXplIFNWR0ltYWdlQ2FjaGU6OmltYWdlU2l6ZUZvclJlbmRlcmVy
KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnMKIAogLy8gRklYTUU6IFRoaXMgZG9l
c24ndCB0YWtlIGludG8gYWNjb3VudCB0aGUgYW5pbWF0aW9uIHRpbWVsaW5lIHNvIGFuaW1hdGlv
bnMgd2lsbCBub3QKIC8vIHJlc3RhcnQgb24gcGFnZSBsb2FkLCBub3Igd2lsbCB0d28gYW5pbWF0
aW9ucyBpbiBkaWZmZXJlbnQgcGFnZXMgaGF2ZSBkaWZmZXJlbnQgdGltZWxpbmVzLgotSW1hZ2Uq
IFNWR0ltYWdlQ2FjaGU6OmltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikgY29uc3QKK0ltYWdlKiBTVkdJbWFnZUNhY2hlOjppbWFnZUZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSBjb25zdAogewogICAgIGF1dG8qIGltYWdlID0gZmlu
ZEltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICghaW1hZ2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaAppbmRleCA2OTc2N2FjNWI3N2ZlMjU1
YzE4NDk2MzQyNmY5MjMwM2U4MTM4YzhmLi5iYmRmZWFiODA2ZGZmNWQxOTE1ZjViNzhjYjM0MzI1
YWJlNGQ2OWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hl
LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBMYXlvdXRTaXpl
OwogY2xhc3MgU1ZHSW1hZ2U7CiBjbGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsKLWNsYXNzIFJl
bmRlck9iamVjdDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiAKIGNsYXNzIFNWR0ltYWdlQ2FjaGUg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDUsMTIgKzQ1LDEyIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShjb25zdCBDYWNoZWRJbWFnZUNsaWVu
dCopOwogCiAgICAgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgQ2FjaGVk
SW1hZ2VDbGllbnQqLCBjb25zdCBMYXlvdXRTaXplJiwgZmxvYXQpOwotICAgIEZsb2F0U2l6ZSBp
bWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBGbG9h
dFNpemUgaW1hZ2VTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0Owog
Ci0gICAgSW1hZ2UqIGltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7
CisgICAgSW1hZ2UqIGltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIEltYWdlKiBmaW5kSW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5k
ZXJPYmplY3QqKSBjb25zdDsKKyAgICBJbWFnZSogZmluZEltYWdlRm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyRWxlbWVudCopIGNvbnN0OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENhY2hl
ZEltYWdlQ2xpZW50KiwgUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFpbmVyPj4gSW1hZ2VGb3JDb250
YWluZXJNYXA7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258571</attachid>
            <date>2015-08-08 12:20:05 -0700</date>
            <delta_ts>2015-08-10 09:11:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147773-20150808121952.patch</filename>
            <type>text/plain</type>
            <size>20877</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3YTNiMDQyNjFiOTBk
NTAxNDkzNTlmNjY5YzNkODYwMzIzZjZhYi4uY2YyZGUyMDI2ODM0NTJkYmQwZDEwOWE5ZTQ4NDNm
YmY3OTU3ZDg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE1LTA4LTA2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgUmVuZGVy
RWxlbWVudCB0aGUgQ2FjaGVkSW1hZ2VDbGllbnQsIHJhdGhlciB0aGFuIFJlbmRlck9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NzczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBS
ZW5kZXJFbGVtZW50IGlzIG5vdyB0aGUgQ2FjaGVkSW1hZ2VDbGllbnQsIHJhdGhlciB0aGFuIFJl
bmRlck9iamVjdC4KKyAgICAgICAgQ2hhbmdlIHZhcmlvdXMgaW1hZ2UgY2xpZW50LXJlbGF0ZWQg
ZnVuY3Rpb25zIHRvIHRha2UgUmVuZGVyRWxlbWVudHMsCisgICAgICAgIHJhdGhlciB0aGFuIFJl
bmRlck9iamVjdCAobnVsbHMgYXJlIHZhbGlkLCBzbyB0aGV5IGNhbid0IHRha2UgcmVmZXJlbmNl
cykuCisgICAgICAgIAorICAgICAgICBTdHJhaWdodGZvcndhcmQgdHlwZSBjaGFuZ2VzIGV2ZXJ5
d2hlcmUgb3RoZXIgdGhhbiBFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcigpLAorICAgICAgICB3
aGVyZSBoaXQgdGVzdGluZyBjYW4gcmV0dXJuIHRleHQgbm9kZXMuIFNpbmNlIHRoZSBzdHlsZSBm
b3IgYSBSZW5kZXJUZXh0CisgICAgICAgIGFsd2F5cyBjb21lcyBmcm9tIGl0cyBwYXJlbnQgUmVu
ZGVyRWxlbWVudCwgd2UgY2FuIHVzZSB0aGUgcGFyZW50IGFzIHRoZQorICAgICAgICBpbWFnZSBj
bGllbnQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTS5tbToKKyAgICAgICAgKC1bRE9N
RWxlbWVudCBpbWFnZV0pOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojp3aWR0aCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdl
OjppbWFnZUZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFn
ZVNpemVGb3JSZW5kZXJlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6
CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aW1hZ2VGcm9tSW1hZ2VFbGVtZW50Tm9kZSk6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3Ip
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmltYWdlQ2hh
bmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmltYWdlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjppbWFnZUNo
YW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2U6OmNhblJlbmRlcik6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0OjpjYW5SZW5kZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1N0eWxlSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlSW1hZ2U6OmNhblJlbmRlcik6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VDYWNoZTo6ZmluZEltYWdlRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VDYWNoZTo6aW1hZ2VTaXplRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VDYWNoZTo6aW1hZ2VGb3JSZW5kZXJlcik6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlQ2FjaGUuaDoKKwogMjAxNS0wOC0wNiAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSBkZWFkIGNvZGUg
ZnJvbSBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTS5tbQppbmRleCAzZDE4ZDQwNzVkZjhlMmVmNjZkNDAxMWEwNGEzYzVkNjg4ODU0
OTllLi4yZGUzMjc5NmM1ZTU0ZmYwNDlkZjhiODg1MTgwYmJhMWQ4MjBiODBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtNzAxLDEzICs3MDEsMTUgQEAgaWQgPERPTUV2ZW50
VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQogLSAoTlNJbWFn
ZSopaW1hZ2UKIHsKICAgICAvLyBGSVhNRTogQ291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRv
IFdlYkNvcmU6Ok5vZGUgYW5kIGF1dG9nZW5lcmF0ZT8KLSAgICBXZWJDb3JlOjpSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIWlzPFJlbmRlcklt
YWdlPihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgV2ViQ29yZTo6Q2FjaGVk
SW1hZ2UqIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikuY2Fj
aGVkSW1hZ2UoKTsKKyAgICAKKyAgICBSZW5kZXJJbWFnZSYgcmVuZGVySW1hZ2UgPSBkb3duY2Fz
dDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2Ug
PSByZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgY2Fj
aGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1
cm4gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpLT5nZXROU0ltYWdlKCk7
CisgICAgcmV0dXJuIGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKCZyZW5kZXJJbWFnZSkt
PmdldE5TSW1hZ2UoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAppbmRleCA3Mjc4Y2E2MDRlZWIzZjFmMDVhOTkwZDVmMzE2M2E2NjE4MWNkMmQ3
Li5kZTgyMjYxZDUyYzMwYWU5ODQ3Yzk5NGI4NzE5YzM5ZTkzYjc1ZDMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCBpbnQgSFRN
TEltYWdlRWxlbWVudDo6d2lkdGgoYm9vbCBpZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMpCiAKICAg
ICAgICAgLy8gaWYgdGhlIGltYWdlIGlzIGF2YWlsYWJsZSwgdXNlIGl0cyB3aWR0aAogICAgICAg
ICBpZiAobV9pbWFnZUxvYWRlci5pbWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VM
b2FkZXIuaW1hZ2UoKS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIocmVuZGVyZXIoKSwgMS4wZikud2lk
dGgoKTsKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlTG9hZGVyLmltYWdlKCktPmltYWdlU2l6
ZUZvclJlbmRlcmVyKG51bGxwdHIsIDEuMGYpLndpZHRoKCk7CiAgICAgfQogCiAgICAgaWYgKGln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCmluZGV4IGRmMzM2NzVjNjNiNWRiNGFmMDNlMzI5MzdjOTFhOWQ3MzQwNGE3
MGEuLjEwOTM3NWI4MGIxMWNjMTAyMzI5MTc4NWFmY2RhZGY5ODY5MTQxNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBA
IEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2UoKQogICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdl
KCk7CiB9CiAKLUltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQorSW1hZ2UqIENhY2hlZEltYWdlOjppbWFnZUZvclJlbmRlcmVy
KGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIGlmIChlcnJvck9jY3VycmVk
KCkgJiYgbV9zaG91bGRQYWludEJyb2tlbkltYWdlKSB7CiAgICAgICAgIC8vIFJldHVybmluZyB0
aGUgMXggYnJva2VuIGltYWdlIGlzIG5vbi1pZGVhbCwgYnV0IHdlIGNhbm5vdCByZWxpYWJseSBh
Y2Nlc3MgdGhlIGFwcHJvcHJpYXRlCkBAIC0yNjcsNyArMjY3LDcgQEAgYm9vbCBDYWNoZWRJbWFn
ZTo6aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1MYXlvdXRTaXplIENhY2hlZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBsaWVyLCBTaXplVHlwZSBzaXplVHlwZSkK
K0xheW91dFNpemUgQ2FjaGVkSW1hZ2U6OmltYWdlU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBsaWVyLCBTaXplVHlwZSBzaXplVHlwZSkK
IHsKICAgICBpZiAoIW1faW1hZ2UpCiAgICAgICAgIHJldHVybiBMYXlvdXRTaXplKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDg4NTkyNTIzMmI2M2Fi
NTkwZDQzODZkY2MyY2VmNjI2NThiZDI4NDMuLjQ3YTlkYWI0ZGIwM2FmMTgzYTllYjNkNzQwMmRl
NjM3Yjk0NzFlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
CkBAIC01OCwxNCArNTgsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZEltYWdlKCk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZSogaW1hZ2UoKTsgLy8gUmV0dXJucyB0aGUgbnVs
bEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0LgotICAgIFdFQkNPUkVf
RVhQT1JUIEltYWdlKiBpbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopOyAvLyBS
ZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQu
CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2UqIGltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVy
RWxlbWVudCopOyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90
IGF2YWlsYWJsZSB5ZXQuCiAgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1h
Z2UuZ2V0KCk7IH0KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBS
ZW5kZXJFbGVtZW50Kik7CiAKICAgICBzdGQ6OnBhaXI8SW1hZ2UqLCBmbG9hdD4gYnJva2VuSW1h
Z2UoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0OyAvLyBSZXR1cm5zIGFuIGltYWdlIGFu
ZCB0aGUgaW1hZ2UncyByZXNvbHV0aW9uIHNjYWxlIGZhY3Rvci4KICAgICBib29sIHdpbGxQYWlu
dEJyb2tlbkltYWdlKCkgY29uc3Q7IAogCi0gICAgYm9vbCBjYW5SZW5kZXIoY29uc3QgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgZmxvYXQgbXVsdGlwbGllcikgeyByZXR1cm4gIWVycm9yT2NjdXJy
ZWQoKSAmJiAhaW1hZ2VTaXplRm9yUmVuZGVyZXIocmVuZGVyZXIsIG11bHRpcGxpZXIpLmlzRW1w
dHkoKTsgfQorICAgIGJvb2wgY2FuUmVuZGVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBmbG9hdCBtdWx0aXBsaWVyKSB7IHJldHVybiAhZXJyb3JPY2N1cnJlZCgpICYmICFpbWFnZVNp
emVGb3JSZW5kZXJlcihyZW5kZXJlciwgbXVsdGlwbGllcikuaXNFbXB0eSgpOyB9CiAKICAgICB2
b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBDYWNoZWRJbWFnZUNsaWVudCos
IGNvbnN0IExheW91dFNpemUmLCBmbG9hdCk7CiAgICAgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJT
aXplKCkgY29uc3Q7CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgSW50cmluc2lj
U2l6ZQogICAgIH07CiAgICAgLy8gVGhpcyBtZXRob2QgdGFrZXMgYSB6b29tIG11bHRpcGxpZXIg
dGhhdCBjYW4gYmUgdXNlZCB0byBpbmNyZWFzZSB0aGUgbmF0dXJhbCBzaXplIG9mIHRoZSBpbWFn
ZSBieSB0aGUgem9vbS4KLSAgICBMYXlvdXRTaXplIGltYWdlU2l6ZUZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCosIGZsb2F0IG11bHRpcGxpZXIsIFNpemVUeXBlID0gVXNlZFNpemUpOyAv
LyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBjb21wbGV0ZSBpbWFnZS4KKyAgICBMYXlvdXRTaXpl
IGltYWdlU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBmbG9hdCBtdWx0aXBs
aWVyLCBTaXplVHlwZSA9IFVzZWRTaXplKTsgLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgY29t
cGxldGUgaW1hZ2UuCiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgm
IGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRy
aW5zaWNSYXRpbyk7CiAKICAgICBib29sIGlzTWFudWFsbHlDYWNoZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzTWFudWFsbHlDYWNoZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcAppbmRleCA0Y2ZhNWY3ZDNhZGFkOTQ2NWQzNjlmNGE0YTE5N2VkOGUy
N2Y1MGM5Li42MWUxYmZiMTIwOTZhNDAxOGFlZmVlNjRiNjEyNTBmZGRiNTRiODAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xMzYsMTEg
KzEzNiwxMyBAQCBzdGF0aWMgSW1hZ2UqIGltYWdlRnJvbUltYWdlRWxlbWVudE5vZGUoTm9kZSYg
bm9kZSkKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS5yZW5kZXJlcigpOwogICAg
IGlmICghaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgQ2FjaGVkSW1hZ2UqIGltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJl
cikuY2FjaGVkSW1hZ2UoKTsKKworICAgIFJlbmRlckltYWdlJiByZW5kZXJJbWFnZSA9IGRvd25j
YXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIpOworICAgIENhY2hlZEltYWdlKiBpbWFnZSA9IHJl
bmRlckltYWdlLmNhY2hlZEltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+ZXJyb3JP
Y2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBpbWFnZS0+
aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CisgICAgcmV0dXJuIGltYWdlLT5pbWFnZUZvclJl
bmRlcmVyKCZyZW5kZXJJbWFnZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDdhNTExZGQ0ZWI5MGE5MzMyYjQ3YmYzZTMwMjc0OGE5NmNhZTFlOTMu
LmE2NWRhYzdkYzE5ZGI5ODIzMTQ3MzYyY2QxNjg3YzUzNWQ4MGQxYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTE0NDMsNiArMTQ0Myw3IEBAIE9wdGlvbmFsQ3Vyc29y
IEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwg
Ym9vbCBzaGlmCiAKICAgICBpZiAoc3R5bGUgJiYgc3R5bGUtPmN1cnNvcnMoKSkgewogICAgICAg
ICBjb25zdCBDdXJzb3JMaXN0KiBjdXJzb3JzID0gc3R5bGUtPmN1cnNvcnMoKTsKKyAgICAgICAg
UmVuZGVyRWxlbWVudCogcmVuZGVyRWxlbWVudCA9IGlzPFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVy
KSA/IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKSA6IChyZW5kZXJlci0+aXNUZXh0
KCkgPyByZW5kZXJlci0+cGFyZW50KCkgOiBudWxscHRyKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGN1cnNvcnMtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBTdHlsZUlt
YWdlKiBzdHlsZUltYWdlID0gKCpjdXJzb3JzKVtpXS5pbWFnZSgpOwogICAgICAgICAgICAgaWYg
KCFzdHlsZUltYWdlKQpAQCAtMTQ1Myw3ICsxNDU0LDcgQEAgT3B0aW9uYWxDdXJzb3IgRXZlbnRI
YW5kbGVyOjpzZWxlY3RDdXJzb3IoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBib29sIHNo
aWYKICAgICAgICAgICAgIGZsb2F0IHNjYWxlID0gc3R5bGVJbWFnZS0+aW1hZ2VTY2FsZUZhY3Rv
cigpOwogICAgICAgICAgICAgLy8gR2V0IGhvdHNwb3QgYW5kIGNvbnZlcnQgZnJvbSBsb2dpY2Fs
IHBpeGVscyB0byBwaHlzaWNhbCBwaXhlbHMuCiAgICAgICAgICAgICBJbnRQb2ludCBob3RTcG90
ID0gKCpjdXJzb3JzKVtpXS5ob3RTcG90KCk7Ci0gICAgICAgICAgICBGbG9hdFNpemUgc2l6ZSA9
IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKS0+c2l6ZSgpOworICAgICAg
ICAgICAgRmxvYXRTaXplIHNpemUgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5k
ZXJFbGVtZW50KS0+c2l6ZSgpOwogICAgICAgICAgICAgaWYgKGNhY2hlZEltYWdlLT5lcnJvck9j
Y3VycmVkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAvLyBMaW1p
dCB0aGUgc2l6ZSBvZiBjdXJzb3JzIChpbiBVSSBwaXhlbHMpIHNvIHRoYXQgdGhleSBjYW5ub3Qg
YmUKQEAgLTE0NjIsNyArMTQ2Myw3IEBAIE9wdGlvbmFsQ3Vyc29yIEV2ZW50SGFuZGxlcjo6c2Vs
ZWN0Q3Vyc29yKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYm9vbCBzaGlmCiAgICAgICAg
ICAgICBpZiAoc2l6ZS53aWR0aCgpID4gbWF4aW11bUN1cnNvclNpemUgfHwgc2l6ZS5oZWlnaHQo
KSA+IG1heGltdW1DdXJzb3JTaXplKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5k
ZXJlcik7CisgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JS
ZW5kZXJlcihyZW5kZXJFbGVtZW50KTsKICNpZiBFTkFCTEUoTU9VU0VfQ1VSU09SX1NDQUxFKQog
ICAgICAgICAgICAgLy8gRW5zdXJlIG5vIG92ZXJmbG93IHBvc3NpYmxlIGluIGNhbGN1bGF0aW9u
cyBhYm92ZS4KICAgICAgICAgICAgIGlmIChzY2FsZSA8IG1pbmltdW1DdXJzb3JTY2FsZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCA1MGY4YTNlNWM3
MWU1YTI1MzU2ZGFhNGRlOTRmMDJkMjMxYmIwMzcxLi42MjNmZWVmMGVjZTgzNDg1NWRmMjU5MWQy
YzNkMjk2MzI1M2NjNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwCkBAIC0xMDk1LDYgKzEwOTUsMTEgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp3aWxsQmVE
ZXN0cm95ZWQoKQogI2VuZGlmCiB9CiAKK3ZvaWQgUmVuZGVyRWxlbWVudDo6aW1hZ2VDaGFuZ2Vk
KENhY2hlZEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKK3sKKyAgICBpbWFnZUNo
YW5nZWQoc3RhdGljX2Nhc3Q8V3JhcHBlZEltYWdlUHRyPihpbWFnZSksIHJlY3QpOworfQorCiB2
b2lkIFJlbmRlckVsZW1lbnQ6OnNldE5lZWRzUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKICAgICBBU1NFUlQoIWlzU2V0TmVlZHNMYXlvdXRG
b3JiaWRkZW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRl
eCA1ZjZjNzNiMmJiZDc0YzYxYzQwN2UwOWY0NGIyMWRkNzU1ODkyZmEzLi42YTVlNmRkMjcyYWMw
NTU4MTk2YjdlMTUyMjkxYTA0MjUwYzA0NWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmgKQEAgLTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgUmVuZGVyRWxlbWVudF9o
CiAKICNpbmNsdWRlICJBbmltYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1h
Z2VDbGllbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzEsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb250cm9s
U3RhdGVzOwogY2xhc3MgUmVuZGVyQmxvY2s7CiAKLWNsYXNzIFJlbmRlckVsZW1lbnQgOiBwdWJs
aWMgUmVuZGVyT2JqZWN0IHsKK2NsYXNzIFJlbmRlckVsZW1lbnQgOiBwdWJsaWMgUmVuZGVyT2Jq
ZWN0LCBwdWJsaWMgQ2FjaGVkSW1hZ2VDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflJl
bmRlckVsZW1lbnQoKTsKIApAQCAtMjA5LDYgKzIxMCw5IEBAIHB1YmxpYzoKICAgICAKICAgICBj
b25zdCBSZW5kZXJFbGVtZW50KiBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbihU
ZXh0RGVjb3JhdGlvbiwgYm9vbCBmaXJzdExpbmUpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lk
IGltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3Zl
cnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQ
dHIsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgeyB9CisKIHByb3RlY3RlZDoKICAgICBlbnVt
IEJhc2VUeXBlRmxhZ3MgewogICAgICAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0RmxhZyA9IDEg
PDwgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYWU2
NDFhNDhhZjY2MDdjY2UyNWZiMGUwZmFmNzc3MTM0ZGRkMDRiMC4uYmNlNDkyMDZkZmZiNzMyNmE1
M2I3YzgxNDEzMTIzNTJkMzBkNTBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKQEAgLTEwNyw4ICsxMDcsNyBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVu
ZGVyT2JqZWN0KSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlck9iamVjdCksIFJlbmRlck9iagog
REVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCByZW5k
ZXJPYmplY3RDb3VudGVyLCAoIlJlbmRlck9iamVjdCIpKTsKIAogUmVuZGVyT2JqZWN0OjpSZW5k
ZXJPYmplY3QoTm9kZSYgbm9kZSkKLSAgICA6IENhY2hlZEltYWdlQ2xpZW50KCkKLSAgICAsIG1f
bm9kZShub2RlKQorICAgIDogbV9ub2RlKG5vZGUpCiAgICAgLCBtX3BhcmVudChudWxscHRyKQog
ICAgICwgbV9wcmV2aW91cyhudWxscHRyKQogICAgICwgbV9uZXh0KG51bGxwdHIpCkBAIC0yMjg2
LDExICsyMjg1LDYgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFkanVzdFJlY3RGb3JPdXRsaW5lQW5k
U2hhZG93KExheW91dFJlY3QmIHJlY3QpIGNvbnN0CiAgICAgcmVjdC5pbmZsYXRlKG91dGxpbmVT
aXplKTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSog
aW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCi17Ci0gICAgaW1hZ2VDaGFuZ2VkKHN0YXRpY19j
YXN0PFdyYXBwZWRJbWFnZVB0cj4oaW1hZ2UpLCByZWN0KTsKLX0KLQogUmVuZGVyQm94TW9kZWxP
YmplY3QqIFJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KCkgY29uc3QKIHsKICAgICAvLyBJZiBh
bnkgb2YgdGhlIGZvbGxvd2luZyBob2xkcyB0cnVlIHJldHVybiBudWxsIGFuZCBzdG9wIHRoaXMg
YWxnb3JpdGhtOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGY1
Y2QzNTVmZmM0ZDg3YzBhNmNhMGNiOGJhMjkyOTUyMDcxMDk4NjAuLjA5OTc3NTNkMWJjYzVjNjUy
ZDhhNDhiY2Q0N2YxYjFiNzQyZDM5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKQEAgLTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgUmVuZGVyT2JqZWN0X2gKICNkZWZp
bmUgUmVuZGVyT2JqZWN0X2gKIAotI2luY2x1ZGUgIkNhY2hlZEltYWdlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKQEAgLTEzOSw3ICsxMzgsNyBAQCBzdHJ1Y3QgQW5u
b3RhdGVkUmVnaW9uVmFsdWUgewogI2VuZGlmCiAKIC8vIEJhc2UgY2xhc3MgZm9yIGFsbCByZW5k
ZXJpbmcgdHJlZSBvYmplY3RzLgotY2xhc3MgUmVuZGVyT2JqZWN0IDogcHVibGljIENhY2hlZElt
YWdlQ2xpZW50IHsKK2NsYXNzIFJlbmRlck9iamVjdCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckJsb2NrOwogICAgIGZyaWVuZCBjbGFzcyBS
ZW5kZXJCbG9ja0Zsb3c7CkBAIC04MjYsOSArODI1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
aW50IHByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihpbnQgY3VycmVudCkgY29uc3Q7
CiAgICAgdmlydHVhbCBpbnQgbmV4dE9mZnNldChpbnQgY3VycmVudCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiwgY29uc3QgSW50UmVjdCogPSBu
dWxscHRyKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJ
bWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSBudWxscHRyKSB7IH0KLQogICAgIFNlbGVjdGlvblN1
YnRyZWVSb290JiBzZWxlY3Rpb25Sb290KCkgY29uc3Q7CiAgICAgdm9pZCBzZWxlY3Rpb25TdGFy
dEVuZChpbnQmIHNwb3MsIGludCYgZXBvcykgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKaW5kZXggYzI2NTNh
MWRjODM5NTg1OGVjM2QzY2U1ZWNhNzRjYmRmNGEzMDc4NS4uNDU4ZjNiMmQ3NjhiYzdkMjQ0NmEw
N2FjOTBlMGZhNjg4MTBhYjU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBTdHlsZUNhY2hlZEltYWdlOjpjc3NWYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9pbWFnZS0+dXJsKCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfVVJJKTsKIH0KIAotYm9vbCBTdHlsZUNhY2hlZEltYWdlOjpjYW5SZW5kZXIoY29u
c3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QKK2Jvb2wg
U3R5bGVDYWNoZWRJbWFnZTo6Y2FuUmVuZGVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdAogewogICAgIHJldHVybiBtX2ltYWdlLT5jYW5SZW5k
ZXIocmVuZGVyZXIsIG11bHRpcGxpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmgKaW5kZXggNTRjMmI5MDY3Y2M1MjY4NWM0MzBm
ODYxNGE2MDBlNmQyZTk3YTIxZC4uODg0YTlkMjQzYWIwMzIyM2E4NjU3YTNiMDE4ZDUzOTFiM2Fk
Mjc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNo
ZWRJbWFnZS5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmly
dHVhbCBib29sIGNhblJlbmRlcihjb25zdCBSZW5kZXJPYmplY3QqLCBmbG9hdCBtdWx0aXBsaWVy
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyKGNvbnN0IFJlbmRl
ckVsZW1lbnQqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgaXNMb2FkZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZXJyb3JP
Y2N1cnJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIGltYWdlU2l6
ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJ
bWFnZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJ
bWFnZVNldC5jcHAKaW5kZXggNmMxYjAxNzI0YmRkMTYzMmQzOGJmZjQ4ODFkZGEzMzZjYmQwNzkz
MS4uMmNmYmQwZmQ2ZGJjMThmMWI4MDZlOWZjNDI3NTVlNzZkNTQzODFlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNw
cApAQCAtNTQsNyArNTQsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBTdHlsZUNhY2hlZEltYWdl
U2V0Ojpjc3NWYWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2VTZXRWYWx1ZTsKIH0KIAot
Ym9vbCBTdHlsZUNhY2hlZEltYWdlU2V0OjpjYW5SZW5kZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QKK2Jvb2wgU3R5bGVDYWNoZWRJbWFnZVNl
dDo6Y2FuUmVuZGVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBs
aWVyKSBjb25zdAogewogICAgIHJldHVybiBtX2Jlc3RGaXRJbWFnZS0+Y2FuUmVuZGVyKHJlbmRl
cmVyLCBtdWx0aXBsaWVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oCmluZGV4IDQwN2U0MDM3NGVhNmY1MGFlNjMyMGI0
ZmIwMTg3OTU4YzViZWQ4YjIuLjI1ZDU4Nzg3MjhjZGRiNmNkZGZjYWQ3NWZhZWIwMDdlYjMzNjE5
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZEltYWdlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2VTZXQuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIC8vIG1lYW5pbmdm
dWwgZW5vdWdoIG9yIG5vdC4KICAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBkYXRhKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9iZXN0Rml0SW1hZ2UuZ2V0KCk7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBjYW5SZW5kZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQgbXVsdGlwbGllcikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGNhblJlbmRlcihjb25zdCBSZW5kZXJF
bGVtZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIGlzTG9hZGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGVycm9yT2Nj
dXJyZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBpbWFnZVNpemUo
Y29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgKaW5kZXggMjM2ZjFh
MjE5OWMyODNhZDMxZjU0M2Y5NzM5MjlkOTllNTJjNzZlZC4uYjk1OGQ0MGQxNWY0NTVlYmQ2NTk5
OTcyODI1MmJkNzI3OTY5NGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVJbWFnZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgY2FuUmVuZGVyKGNvbnN0IFJlbmRlck9iamVjdCosIGZsb2F0IC8qbXVsdGlwbGllciovKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNhblJlbmRlcihjb25zdCBS
ZW5kZXJFbGVtZW50KiwgZmxvYXQgLyptdWx0aXBsaWVyKi8pIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgRmxvYXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxv
YXQgbXVsdGlwbGllcikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlQ2FjaGUuY3BwCmluZGV4IGY0ZWI3ZTRkYWE3YWY4MjcwNjViMGU2M2RiM2FmNjRh
NTJiMjJhY2MuLmZmYTMzMGQyOWZkNDI5ODk5Yjc1NDc1ODNkMDQ5N2M1MTg2OTc4MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKQEAgLTYyLDEy
ICs2MiwxMiBAQCB2b2lkIFNWR0ltYWdlQ2FjaGU6OnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJl
cihjb25zdCBDYWNoZWRJbWFnZUNsaWVudCogY2xpZW50LAogICAgIG1faW1hZ2VGb3JDb250YWlu
ZXJNYXAuc2V0KGNsaWVudCwgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmNyZWF0ZShtX3N2Z0ltYWdl
LCBjb250YWluZXJTaXplV2l0aG91dFpvb20sIGNvbnRhaW5lclpvb20pKTsKIH0KIAotSW1hZ2Uq
IFNWR0ltYWdlQ2FjaGU6OmZpbmRJbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCog
cmVuZGVyZXIpIGNvbnN0CitJbWFnZSogU1ZHSW1hZ2VDYWNoZTo6ZmluZEltYWdlRm9yUmVuZGVy
ZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJl
bmRlcmVyID8gbV9pbWFnZUZvckNvbnRhaW5lck1hcC5nZXQocmVuZGVyZXIpIDogbnVsbHB0cjsK
IH0KIAotRmxvYXRTaXplIFNWR0ltYWdlQ2FjaGU6OmltYWdlU2l6ZUZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CitGbG9hdFNpemUgU1ZHSW1hZ2VDYWNoZTo6
aW1hZ2VTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0
CiB7CiAgICAgYXV0byogaW1hZ2UgPSBmaW5kSW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAg
ICAgcmV0dXJuIGltYWdlID8gaW1hZ2UtPnNpemUoKSA6IG1fc3ZnSW1hZ2UtPnNpemUoKTsKQEAg
LTc1LDcgKzc1LDcgQEAgRmxvYXRTaXplIFNWR0ltYWdlQ2FjaGU6OmltYWdlU2l6ZUZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnMKIAogLy8gRklYTUU6IFRoaXMg
ZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB0aGUgYW5pbWF0aW9uIHRpbWVsaW5lIHNvIGFuaW1h
dGlvbnMgd2lsbCBub3QKIC8vIHJlc3RhcnQgb24gcGFnZSBsb2FkLCBub3Igd2lsbCB0d28gYW5p
bWF0aW9ucyBpbiBkaWZmZXJlbnQgcGFnZXMgaGF2ZSBkaWZmZXJlbnQgdGltZWxpbmVzLgotSW1h
Z2UqIFNWR0ltYWdlQ2FjaGU6OmltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikgY29uc3QKK0ltYWdlKiBTVkdJbWFnZUNhY2hlOjppbWFnZUZvclJlbmRlcmVyKGNv
bnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSBjb25zdAogewogICAgIGF1dG8qIGltYWdlID0g
ZmluZEltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICghaW1hZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaAppbmRleCA2OTc2N2FjNWI3N2Zl
MjU1YzE4NDk2MzQyNmY5MjMwM2U4MTM4YzhmLi5iYmRmZWFiODA2ZGZmNWQxOTE1ZjViNzhjYjM0
MzI1YWJlNGQ2OWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNh
Y2hlLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBMYXlvdXRT
aXplOwogY2xhc3MgU1ZHSW1hZ2U7CiBjbGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsKLWNsYXNz
IFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiAKIGNsYXNzIFNWR0ltYWdlQ2Fj
aGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDUsMTIgKzQ1LDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShjb25zdCBDYWNoZWRJbWFnZUNs
aWVudCopOwogCiAgICAgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgQ2Fj
aGVkSW1hZ2VDbGllbnQqLCBjb25zdCBMYXlvdXRTaXplJiwgZmxvYXQpOwotICAgIEZsb2F0U2l6
ZSBpbWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBG
bG9hdFNpemUgaW1hZ2VTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0
OwogCi0gICAgSW1hZ2UqIGltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KikgY29u
c3Q7CisgICAgSW1hZ2UqIGltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCopIGNv
bnN0OwogCiBwcml2YXRlOgotICAgIEltYWdlKiBmaW5kSW1hZ2VGb3JSZW5kZXJlcihjb25zdCBS
ZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBJbWFnZSogZmluZEltYWdlRm9yUmVuZGVyZXIoY29u
c3QgUmVuZGVyRWxlbWVudCopIGNvbnN0OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENh
Y2hlZEltYWdlQ2xpZW50KiwgUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFpbmVyPj4gSW1hZ2VGb3JD
b250YWluZXJNYXA7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>