<?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>178306</bug_id>
          
          <creation_ts>2017-10-14 08:12:32 -0700</creation_ts>
          <short_desc>Use auto/nullptr in scrolling code</short_desc>
          <delta_ts>2017-10-16 00:59:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1360427</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-10-14 08:12:32 -0700</bug_when>
    <thetext>Use auto/nullptr in scrolling code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360428</commentid>
    <comment_count>1</comment_count>
      <attachid>323809</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-10-14 08:16:55 -0700</bug_when>
    <thetext>Created attachment 323809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360694</commentid>
    <comment_count>2</comment_count>
      <attachid>323878</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-10-16 00:49:54 -0700</bug_when>
    <thetext>Created attachment 323878
Patch

Alternative version, with &quot;auto*&quot; used for pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360695</commentid>
    <comment_count>3</comment_count>
      <attachid>323878</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-10-16 00:52:59 -0700</bug_when>
    <thetext>Comment on attachment 323878
Patch

It seems this no longer applies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360696</commentid>
    <comment_count>4</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-10-16 00:55:01 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #3)
&gt; Comment on attachment 323878 [details]
&gt; Patch
&gt; 
&gt; It seems this no longer applies

Yes, because of r223337. I&apos;ll update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360697</commentid>
    <comment_count>5</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-10-16 00:58:22 -0700</bug_when>
    <thetext>Committed r223339: &lt;https://trac.webkit.org/changeset/223339&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360698</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-16 00:59:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/35002866&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323809</attachid>
            <date>2017-10-14 08:16:55 -0700</date>
            <delta_ts>2017-10-16 00:53:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178306-20171014171653.patch</filename>
            <type>text/plain</type>
            <size>32990</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNhYzg4YTIyOTkyMmIz
ZDgzNzVlODUyZWY4YTQ0MGY3ZTIwMDBhNC4uYTJlYTU1YjQzMmMzYjUxZjY1NjU0M2JmYTk4Mjlk
Y2YzZGZkYzVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE3LTEwLTE0ICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgYXV0by9udWxscHRy
IGluIHNjcm9sbGluZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzgzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBzY3JvbGxpbmcgY29kZSB0byB1c2Ug
dGhlIGF1dG8ga2V5d29yZCB3aGVuCisgICAgICAgIHBvc3NpYmxlLiBJdCBhbHNvIHJlcGxhY2Vz
ICcwJyB3aXRoICdudWxscHRyJyBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZgorICAgICAgICBTY3Jv
bGxpbmdTdGF0ZVRyZWU6OnN0YXRlTm9kZUZvcklELgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
YmVoYXZpb3IgdW5jaGFuZ2VkLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xs
UG9zaXRpb25VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6ZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5
bmNTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
cmVjb25jaWxlU2Nyb2xsaW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6dXBkYXRlRnJhbWVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVO
b2RlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
dXBkYXRlTm9kZVZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRyYWNraW5n
UmVnaW9uc0ZvckZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzY3JvbGxMYXllckZvckZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdDb29yZGluYXRvcjo6aGVhZGVyTGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZvb3RlckxheWVyRm9yRnJhbWVWaWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb3VudGVyU2Nyb2xsaW5nTGF5
ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Omluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpjb250ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhhbmRsZVdoZWVs
RXZlbnRQaGFzZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFz
VmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29uc0ZvckFsbEZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvcjo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNUZXh0IGNvbnN0KToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZTo6cmVjb25jaWxlTGF5ZXJQb3Np
dGlvbkZvclZpZXdwb3J0UmVjdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVTdGlja3lOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZTo6cmVjb25jaWxlTGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdCk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlVHJlZTo6bm9kZVR5cGVBbmRQYXJlbnRNYXRjaCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmF0dGFjaE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlOjpkZXRhY2hOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1N0YXRlVHJlZTo6cmVtb3ZlTm9kZUFuZEFsbERlc2NlbmRhbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlVHJlZTo6c3RhdGVOb2RlRm9ySUQgY29u
c3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6c2hvdWxkSGFuZGxlV2hlZWxFdmVudFN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6dmlld3BvcnRDaGFuZ2Vk
VmlhRGVsZWdhdGVkU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6
OnNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpjb21taXRUcmVlU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZTo6dXBkYXRlVHJlZUZyb21TdGF0ZU5vZGUpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVOb2RlOjplbmNsb3NpbmdGcmFtZU5vZGUgY29uc3QpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6ZGV0YWNoRnJvbVN0YXRlVHJlZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnVwZGF0ZU5v
ZGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5h
dGVkR3JhcGhpY3M6OnVwZGF0ZU5vZGVWaWV3cG9ydENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsYWJs
ZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEp
OgorCiAyMDE3LTEwLTEyICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVc2UgbGVzcyBzcGVjaWZpYyBjYXN0IGluIFNjcm9sbGluZ1RyZWU6OnNjcm9sbFBvc2l0
aW9uQ2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRl
eCA0NWM5YzdlNWM1YWM0NWJhNDRiZDVkYTc1Mzg2YWJkYjQ0M2NiNzMzLi41NWRkY2M3OTE0ZGE5
YTQ4ZGUzYTI3NTNkZTFlNGI0YTZkNjVkMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAt
MTM2LDEyICsxMzYsMTIgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZp
ZXdMYXlvdXRVcGRhdGVkKEZyYW1lVmlldyYgZnJhbWVWaWV3KQogICAgIGlmICghY29vcmRpbmF0
ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSBkb3duY2FzdDxTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRl
Tm9kZUZvcklEKGZyYW1lVmlldy5zY3JvbGxMYXllcklEKCkpKTsKKyAgICBhdXRvIG5vZGUgPSBk
b3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0
ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy5zY3JvbGxMYXllcklEKCkpKTsKICAgICBp
ZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNjcm9sbGJhciogdmVydGljYWxTY3Jv
bGxiYXIgPSBmcmFtZVZpZXcudmVydGljYWxTY3JvbGxiYXIoKTsKLSAgICBTY3JvbGxiYXIqIGhv
cml6b250YWxTY3JvbGxiYXIgPSBmcmFtZVZpZXcuaG9yaXpvbnRhbFNjcm9sbGJhcigpOworICAg
IGF1dG8gdmVydGljYWxTY3JvbGxiYXIgPSBmcmFtZVZpZXcudmVydGljYWxTY3JvbGxiYXIoKTsK
KyAgICBhdXRvIGhvcml6b250YWxTY3JvbGxiYXIgPSBmcmFtZVZpZXcuaG9yaXpvbnRhbFNjcm9s
bGJhcigpOwogICAgIG5vZGUtPnNldFNjcm9sbGVySW1wc0Zyb21TY3JvbGxiYXJzKHZlcnRpY2Fs
U2Nyb2xsYmFyLCBob3Jpem9udGFsU2Nyb2xsYmFyKTsKICAgICAKICAgICBub2RlLT5zZXRGcmFt
ZVNjYWxlRmFjdG9yKGZyYW1lVmlldy5mcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKSk7CkBAIC0x
NjcsNyArMTY3LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdM
YXlvdXRVcGRhdGVkKEZyYW1lVmlldyYgZnJhbWVWaWV3KQogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICBQYWdlKiBwYWdlID0gZnJhbWVWaWV3LmZyYW1lKCkucGFnZSgpOworICAg
IGF1dG8gcGFnZSA9IGZyYW1lVmlldy5mcmFtZSgpLnBhZ2UoKTsKICAgICBpZiAocGFnZSAmJiBw
YWdlLT5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpIHsKICAgICAgICAgTE9HKFdoZWVsRXZl
bnRUZXN0VHJpZ2dlcnMsICIgICAgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3
TGF5b3V0VXBkYXRlZDogRXhwZWN0cyB3aGVlbCBldmVudCB0ZXN0IHRyaWdnZXI9JWQiLCBwYWdl
LT5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpOwogICAgICAgICBub2RlLT5zZXRFeHBlY3Rz
V2hlZWxFdmVudFRlc3RUcmlnZ2VyKHBhZ2UtPmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSk7
CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFt
ZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3JiBmcmFtZVZpZXcKIAogICAgIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoZnJhbWVWaWV3KTsK
IAotICAgIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKiBub2RlID0gZG93bmNhc3Q8
U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5z
dGF0ZU5vZGVGb3JJRChmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpKSk7CisgICAgYXV0byBub2Rl
ID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5n
U3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpKSk7CiAg
ICAgbm9kZS0+c2V0TGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAg
ICAgbm9kZS0+c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHJvb3RDb250ZW50TGF5ZXJGb3JGcmFt
ZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0Q291bnRlclNjcm9sbGluZ0xheWVyKGNv
dW50ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKQEAgLTI1NCw3ICsy
NTQsNyBAQCBib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcXVlc3RTY3JvbGxQb3Np
dGlvblVwZGF0ZShGcmFtZVZpZXcmIGZyYW1lVmlldwogICAgIGlmIChmcmFtZVZpZXcuZnJhbWUo
KS5kb2N1bWVudCgpLT5wYWdlQ2FjaGVTdGF0ZSgpICE9IERvY3VtZW50OjpOb3RJblBhZ2VDYWNo
ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUqIHN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4obV9z
Y3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy5zY3JvbGxMYXllcklE
KCkpKTsKKyAgICBhdXRvIHN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy5z
Y3JvbGxMYXllcklEKCkpKTsKICAgICBpZiAoIXN0YXRlTm9kZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC0zMDEsMTIgKzMwMSwxMiBAQCBGcmFtZVZpZXcqIEFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmZyYW1lVmlld0ZvclNjcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlECiAgICAg
aWYgKHNjcm9sbGluZ05vZGVJRCA9PSBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+cm9vdFN0YXRlTm9k
ZSgpLT5zY3JvbGxpbmdOb2RlSUQoKSkKICAgICAgICAgcmV0dXJuIG1fcGFnZS0+bWFpbkZyYW1l
KCkudmlldygpOwogCi0gICAgU2Nyb2xsaW5nU3RhdGVOb2RlKiBzdGF0ZU5vZGUgPSBtX3Njcm9s
bGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoc2Nyb2xsaW5nTm9kZUlEKTsKKyAgICBhdXRv
IHN0YXRlTm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChzY3JvbGxp
bmdOb2RlSUQpOwogICAgIGlmICghc3RhdGVOb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIC8vIEZpbmQgdGhlIGVuY2xvc2luZyBmcmFtZSBzY3JvbGxpbmcgbm9kZS4KLSAgICBT
Y3JvbGxpbmdTdGF0ZU5vZGUqIHBhcmVudE5vZGUgPSBzdGF0ZU5vZGU7CisgICAgYXV0byBwYXJl
bnROb2RlID0gc3RhdGVOb2RlOwogICAgIHdoaWxlIChwYXJlbnROb2RlICYmIHBhcmVudE5vZGUt
Pm5vZGVUeXBlKCkgIT0gRnJhbWVTY3JvbGxpbmdOb2RlKQogICAgICAgICBwYXJlbnROb2RlID0g
cGFyZW50Tm9kZS0+cGFyZW50KCk7CiAgICAgCkBAIC0zMTYsNyArMzE2LDcgQEAgRnJhbWVWaWV3
KiBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGb3JTY3JvbGxpbmdOb2RlKFNj
cm9sbGluZ05vZGVJRAogICAgIC8vIFdhbGsgdGhlIGZyYW1lIHRyZWUgdG8gZmluZCB0aGUgbWF0
Y2hpbmcgRnJhbWVWaWV3LiBUaGlzIGlzIG5vdCBpZGVhbCwgYnV0IGF2b2lkcyBiYWNrIHBvaW50
ZXJzIHRvIEZyYW1lVmlld3MKICAgICAvLyBmcm9tIFNjcm9sbGluZ1RyZWVTdGF0ZU5vZGVzLgog
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgaWYgKEZyYW1lVmll
dyogdmlldyA9IGZyYW1lLT52aWV3KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gdmlldyA9IGZyYW1l
LT52aWV3KCkpIHsKICAgICAgICAgICAgIGlmICh2aWV3LT5zY3JvbGxMYXllcklEKCkgPT0gcGFy
ZW50Tm9kZS0+c2Nyb2xsaW5nTm9kZUlEKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHZpZXc7
CiAgICAgICAgIH0KQEAgLTMzMiwxMyArMzMyLDEzIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05v
CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lVmlldyogZnJh
bWVWaWV3UHRyID0gZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdOb2RlSUQpOwor
ICAgIGF1dG8gZnJhbWVWaWV3UHRyID0gZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShzY3JvbGxp
bmdOb2RlSUQpOwogICAgIGlmICghZnJhbWVWaWV3UHRyKQogICAgICAgICByZXR1cm47CiAKICAg
ICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIkFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbCBub2RlICIgPDwg
c2Nyb2xsaW5nTm9kZUlEIDw8ICIgc2Nyb2xsUG9zaXRpb24gIiA8PCBzY3JvbGxQb3NpdGlvbiA8
PCAiIGFjdGlvbiAiIDw8IHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOwogCi0gICAgRnJh
bWVWaWV3JiBmcmFtZVZpZXcgPSAqZnJhbWVWaWV3UHRyOworICAgIGF1dG8mIGZyYW1lVmlldyA9
ICpmcmFtZVZpZXdQdHI7CiAKICAgICBpZiAoc2Nyb2xsaW5nTm9kZUlEID09IGZyYW1lVmlldy5z
Y3JvbGxMYXllcklEKCkpIHsKICAgICAgICAgcmVjb25jaWxlU2Nyb2xsaW5nU3RhdGUoZnJhbWVW
aWV3LCBzY3JvbGxQb3NpdGlvbiwgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIHByb2dyYW1tYXRpY1Nj
cm9sbCwgVmlld3BvcnRSZWN0U3RhYmlsaXR5OjpTdGFibGUsIHNjcm9sbGluZ0xheWVyUG9zaXRp
b25BY3Rpb24pOwpAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vCiAg
ICAgfQogCiAgICAgLy8gT3ZlcmZsb3ctc2Nyb2xsIGFyZWEuCi0gICAgaWYgKFNjcm9sbGFibGVB
cmVhKiBzY3JvbGxhYmxlQXJlYSA9IGZyYW1lVmlldy5zY3JvbGxhYmxlQXJlYUZvclNjcm9sbExh
eWVySUQoc2Nyb2xsaW5nTm9kZUlEKSkgeworICAgIGlmIChhdXRvIHNjcm9sbGFibGVBcmVhID0g
ZnJhbWVWaWV3LnNjcm9sbGFibGVBcmVhRm9yU2Nyb2xsTGF5ZXJJRChzY3JvbGxpbmdOb2RlSUQp
KSB7CiAgICAgICAgIHNjcm9sbGFibGVBcmVhLT5zZXRJc1VzZXJTY3JvbGwoc2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbkFjdGlvbiA9PSBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTeW5jKTsK
ICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihz
Y3JvbGxQb3NpdGlvbik7CiAgICAgICAgIHNjcm9sbGFibGVBcmVhLT5zZXRJc1VzZXJTY3JvbGwo
ZmFsc2UpOwpAQCAtNDExLDE2ICs0MTEsMTYgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpyZWNvbmNpbGVTY3JvbGxpbmdTdGF0ZShGcmFtZVZpZXcmIGZyYW1lVmlldywgY28KICAg
ICAgICAgICAgIHJlY29uY2lsZVZpZXdwb3J0Q29uc3RyYWluZWRMYXllclBvc2l0aW9ucyhMYXlv
dXRSZWN0KGxheW91dFZpZXdwb3J0UmVjdC52YWx1ZSgpKSwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlv
bkFjdGlvbik7CiAgICAgfQogCi0gICAgR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIgPSBzY3Jv
bGxMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOworICAgIGF1dG8gc2Nyb2xsTGF5ZXIgPSBz
Y3JvbGxMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOwogICAgIGlmICghc2Nyb2xsTGF5ZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdM
YXllciA9IGNvdW50ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOwotICAg
IEdyYXBoaWNzTGF5ZXIqIGluc2V0Q2xpcExheWVyID0gaW5zZXRDbGlwTGF5ZXJGb3JGcmFtZVZp
ZXcoZnJhbWVWaWV3KTsKLSAgICBHcmFwaGljc0xheWVyKiBjb250ZW50U2hhZG93TGF5ZXIgPSBj
b250ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsKLSAgICBHcmFwaGljc0xh
eWVyKiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIgPSByb290Q29udGVudExheWVyRm9yRnJhbWVWaWV3
KGZyYW1lVmlldyk7Ci0gICAgR3JhcGhpY3NMYXllciogaGVhZGVyTGF5ZXIgPSBoZWFkZXJMYXll
ckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOwotICAgIEdyYXBoaWNzTGF5ZXIqIGZvb3RlckxheWVy
ID0gZm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsKKyAgICBhdXRvIGNvdW50ZXJT
Y3JvbGxpbmdMYXllciA9IGNvdW50ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhmcmFtZVZp
ZXcpOworICAgIGF1dG8gaW5zZXRDbGlwTGF5ZXIgPSBpbnNldENsaXBMYXllckZvckZyYW1lVmll
dyhmcmFtZVZpZXcpOworICAgIGF1dG8gY29udGVudFNoYWRvd0xheWVyID0gY29udGVudFNoYWRv
d0xheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CisgICAgYXV0byBzY3JvbGxlZENvbnRlbnRz
TGF5ZXIgPSByb290Q29udGVudExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CisgICAgYXV0
byBoZWFkZXJMYXllciA9IGhlYWRlckxheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CisgICAg
YXV0byBmb290ZXJMYXllciA9IGZvb3RlckxheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CiAK
ICAgICBBU1NFUlQoZnJhbWVWaWV3LnNjcm9sbFBvc2l0aW9uKCkgPT0gcm91bmRlZEludFBvaW50
KHNjcm9sbFBvc2l0aW9uKSk7CiAgICAgTGF5b3V0UG9pbnQgc2Nyb2xsUG9zaXRpb25Gb3JGaXhl
ZCA9IGZyYW1lVmlldy5zY3JvbGxQb3NpdGlvbkZvckZpeGVkUG9zaXRpb24oKTsKQEAgLTUxOSw3
ICs1MTksNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmVuc3VyZVJvb3RTdGF0
ZU5vZGVGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBmcmFtZQogCiB2b2lkIEFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnVwZGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2RlSUQgbm9k
ZUlELCBHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2Nyb2xsZWRDb250ZW50
c0xheWVyLCBHcmFwaGljc0xheWVyKiBjb3VudGVyU2Nyb2xsaW5nTGF5ZXIsIEdyYXBoaWNzTGF5
ZXIqIGluc2V0Q2xpcExheWVyLCBjb25zdCBTY3JvbGxpbmdHZW9tZXRyeSogc2Nyb2xsaW5nR2Vv
bWV0cnkpCiB7Ci0gICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSBk
b3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0
ZVRyZWUtPnN0YXRlTm9kZUZvcklEKG5vZGVJRCkpOworICAgIGF1dG8gbm9kZSA9IGRvd25jYXN0
PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+
c3RhdGVOb2RlRm9ySUQobm9kZUlEKSk7CiAgICAgQVNTRVJUKG5vZGUpOwogICAgIGlmICghbm9k
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQwLDcgKzU0MCw3IEBAIHZvaWQgQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6dXBkYXRlRnJhbWVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCBu
b2RlSUQsCiAgICAgCiB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBHcmFwaGljc0xheWVyKiBs
YXllciwgR3JhcGhpY3NMYXllciogc2Nyb2xsZWRDb250ZW50c0xheWVyLCBjb25zdCBTY3JvbGxp
bmdHZW9tZXRyeSogc2Nyb2xsaW5nR2VvbWV0cnkpCiB7Ci0gICAgU2Nyb2xsaW5nU3RhdGVPdmVy
Zmxvd1Njcm9sbGluZ05vZGUqIG5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKG5vZGVJ
RCkpOworICAgIGF1dG8gbm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQobm9kZUlEKSk7
CiAgICAgQVNTRVJUKG5vZGUpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NTY1LDcgKzU2NSw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCBub2RlCiAKIHZvaWQgQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcjo6dXBkYXRlTm9kZUxheWVyKFNjcm9sbGluZ05vZGVJRCBub2RlSUQs
IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgU2Nyb2xsaW5nU3RhdGVOb2Rl
KiBub2RlID0gbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKG5vZGVJRCk7Cisg
ICAgYXV0byBub2RlID0gbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKG5vZGVJ
RCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAKQEAgLTU3NCwxOCArNTc0LDE4
IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlTm9kZUxheWVyKFNjcm9s
bGluZ05vZGVJRCBub2RlSUQsIEdyYXBoaWNzCiAKIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6dXBkYXRlTm9kZVZpZXdwb3J0Q29uc3RyYWludHMoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJ
RCwgY29uc3QgVmlld3BvcnRDb25zdHJhaW50cyYgY29uc3RyYWludHMpCiB7Ci0gICAgU2Nyb2xs
aW5nU3RhdGVOb2RlKiBub2RlID0gbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklE
KG5vZGVJRCk7CisgICAgYXV0byBub2RlID0gbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9k
ZUZvcklEKG5vZGVJRCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAKICAgICBz
d2l0Y2ggKGNvbnN0cmFpbnRzLmNvbnN0cmFpbnRUeXBlKCkpIHsKICAgICBjYXNlIFZpZXdwb3J0
Q29uc3RyYWludHM6OkZpeGVkUG9zaXRpb25Db25zdHJhaW50OiB7Ci0gICAgICAgIFNjcm9sbGlu
Z1N0YXRlRml4ZWROb2RlJiBmaXhlZE5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZpeGVk
Tm9kZT4oKm5vZGUpOworICAgICAgICBhdXRvJiBmaXhlZE5vZGUgPSBkb3duY2FzdDxTY3JvbGxp
bmdTdGF0ZUZpeGVkTm9kZT4oKm5vZGUpOwogICAgICAgICBmaXhlZE5vZGUudXBkYXRlQ29uc3Ry
YWludHMoKGNvbnN0IEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJiljb25zdHJhaW50
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFZpZXdwb3J0Q29uc3RyYWludHM6
OlN0aWNreVBvc2l0aW9uQ29uc3RyYWludDogewotICAgICAgICBTY3JvbGxpbmdTdGF0ZVN0aWNr
eU5vZGUmIHN0aWNreU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU+KCpu
b2RlKTsKKyAgICAgICAgYXV0byYgc3RpY2t5Tm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRl
U3RpY2t5Tm9kZT4oKm5vZGUpOwogICAgICAgICBzdGlja3lOb2RlLnVwZGF0ZUNvbnN0cmFpbnRz
KChjb25zdCBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMmKWNvbnN0cmFpbnRzKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcjo6dXBkYXRlTm9kZVZpZXdwb3J0Q29uc3RyYWludHMoU2Nyb2xsaW5n
Tm9kZUlEIG5vCiAKIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb25zKEZyYW1lVmlldyYgZnJhbWVWaWV3LCBTeW5jaHJvbm91c1Njcm9s
bGluZ1JlYXNvbnMgcmVhc29ucykKIHsKLSAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZSogc2Nyb2xsaW5nU3RhdGVOb2RlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGUqPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJh
bWVWaWV3LnNjcm9sbExheWVySUQoKSkpOworICAgIGF1dG8gc2Nyb2xsaW5nU3RhdGVOb2RlID0g
c3RhdGljX2Nhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqPihtX3Njcm9sbGlu
Z1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSkpOwog
ICAgIGlmICghc2Nyb2xsaW5nU3RhdGVOb2RlKQogICAgICAgICByZXR1cm47CiAKQEAgLTYwOSw3
ICs2MDksNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFN5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29ucyhGcmFtZVZpZXcmIGZyYW1lVgogdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uKEZyYW1lVmlldyYgZnJhbWVWaWV3
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKEdyYXBoaWNzTGF5ZXIq
IHNjcm9sbExheWVyID0gc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKKyAgICBp
ZiAoYXV0byBzY3JvbGxMYXllciA9IHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykp
CiAgICAgICAgIHNjcm9sbExheWVyLT5zZXRQb3NpdGlvbigtZnJhbWVWaWV3LnNjcm9sbFBvc2l0
aW9uKCkpOwogfQogCkBAIC02NDcsNyArNjQ3LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQgc2Nyb2wK
ICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdOb2RlSUQpOwor
ICAgIGF1dG8gZnJhbWVWaWV3ID0gZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdO
b2RlSUQpOwogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC02
NTgsNyArNjU4LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRBY3RpdmVT
Y3JvbGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQgc2Nyb2wKICAgICB9CiAgICAgCiAgICAg
Ly8gT3ZlcmZsb3ctc2Nyb2xsIGFyZWEuCi0gICAgaWYgKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxh
YmxlQXJlYSA9IGZyYW1lVmlldy0+c2Nyb2xsYWJsZUFyZWFGb3JTY3JvbGxMYXllcklEKHNjcm9s
bGluZ05vZGVJRCkpIHsKKyAgICBpZiAoYXV0byBzY3JvbGxhYmxlQXJlYSA9IGZyYW1lVmlldy0+
c2Nyb2xsYWJsZUFyZWFGb3JTY3JvbGxMYXllcklEKHNjcm9sbGluZ05vZGVJRCkpIHsKICAgICAg
ICAgc2Nyb2xsYWJsZUFyZWEtPnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoaG9y
aXpvbnRhbEluZGV4KTsKICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnNldEN1cnJlbnRWZXJ0aWNh
bFNuYXBQb2ludEluZGV4KHZlcnRpY2FsSW5kZXgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBi
Yzg1NTgwZmVhZjdmYzcwNzViOGEzMmQ0OTQ2YzExYzAwMzNlZGFlLi43YjIxYzk2Mjk3MjZmMzQx
NzEwNjJhYmUwYTFjMjBiNzNhZjM2MWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC04OSw3ICs4OSw3IEBA
IGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVW
aWV3KGNvbnN0IEZyYW1lVmlldyYgZnJhCiAgICAgKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVudFJl
bmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVu
dFJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJWaWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIHJlbmRlclZpZXctPnVzZXNDb21wb3NpdGluZygpOwpAQCAtMTQ3LDcgKzE0
Nyw3IEBAIEV2ZW50VHJhY2tpbmdSZWdpb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjphYnNvbHV0
ZUV2ZW50VHJhY2tpbmdSZWdpb25zRm9yRnJhbWUoCiAgICAgRXZlbnRUcmFja2luZ1JlZ2lvbnMg
ZXZlbnRUcmFja2luZ1JlZ2lvbnM7CiAKICAgICAvLyBGSVhNRTogaWYgd2UndmUgYWxyZWFkeSBh
Y2NvdW50ZWQgZm9yIHRoaXMgc3ViZnJhbWUgYXMgYSBzY3JvbGxhYmxlIGFyZWEsIHdlIGNhbiBh
dm9pZCByZWN1cnNpbmcgaW50byBpdCBoZXJlLgotICAgIGZvciAoRnJhbWUqIHN1YmZyYW1lID0g
ZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgc3ViZnJhbWU7IHN1YmZyYW1lID0gc3ViZnJhbWUt
PnRyZWUoKS5uZXh0U2libGluZygpKSB7CisgICAgZm9yIChhdXRvIHN1YmZyYW1lID0gZnJhbWUu
dHJlZSgpLmZpcnN0Q2hpbGQoKTsgc3ViZnJhbWU7IHN1YmZyYW1lID0gc3ViZnJhbWUtPnRyZWUo
KS5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGF1dG8qIHN1YmZyYW1lVmlldyA9IHN1YmZyYW1l
LT52aWV3KCk7CiAgICAgICAgIGlmICghc3ViZnJhbWVWaWV3KQogICAgICAgICAgICAgY29udGlu
dWU7CkBAIC0yMTIsNyArMjEyLDcgQEAgR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNjcm9sbExheWVyRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEKIAogR3JhcGhp
Y3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbExheWVyRm9yRnJhbWVWaWV3KEZy
YW1lVmlldyYgZnJhbWVWaWV3KQogewotICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0g
ZnJhbWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAgaWYgKGF1dG8gcmVuZGVy
VmlldyA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1
cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLnNjcm9sbExheWVyKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CkBAIC0yMjAsNyArMjIwLDcgQEAgR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNjcm9sbExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWUKIEdy
YXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoZWFkZXJMYXllckZvckZyYW1lVmll
dyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCi0g
ICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXcuZnJhbWUoKS5jb250ZW50
UmVuZGVyZXIoKSkKKyAgICBpZiAoYXV0byByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCku
Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9y
KCkuaGVhZGVyTGF5ZXIoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbHNlCkBAIC0yMzIsNyAr
MjMyLDcgQEAgR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhlYWRlckxheWVy
Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWUKIEdyYXBoaWNzTGF5ZXIqIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpmb290ZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmll
dykKIHsKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCi0gICAgaWYgKFJlbmRlclZpZXcqIHJl
bmRlclZpZXcgPSBmcmFtZVZpZXcuZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICBpZiAo
YXV0byByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCiAg
ICAgICAgIHJldHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkuZm9vdGVyTGF5ZXIoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKICNlbHNlCkBAIC0yNDMsMTQgKzI0MywxNCBAQCBHcmFwaGljc0xh
eWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Zm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVW
aWV3JiBmcmFtZVZpZQogCiBHcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y291
bnRlclNjcm9sbGluZ0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewot
ICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVu
dFJlbmRlcmVyKCkpCisgICAgaWYgKGF1dG8gcmVuZGVyVmlldyA9IGZyYW1lVmlldy5mcmFtZSgp
LmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRv
cigpLmZpeGVkUm9vdEJhY2tncm91bmRMYXllcigpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
CiBHcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6aW5zZXRDbGlwTGF5ZXJGb3JG
cmFtZVZpZXcoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7Ci0gICAgaWYgKFJlbmRlclZpZXcqIHJl
bmRlclZpZXcgPSBmcmFtZVZpZXcuZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICBpZiAo
YXV0byByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCiAg
ICAgICAgIHJldHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkuY2xpcExheWVyKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CkBAIC0yNTgsNyArMjU4LDcgQEAgR3JhcGhpY3NMYXllciogU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6Omluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYg
ZnJhbWUKIEdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb250ZW50U2hhZG93
TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAjaWYgRU5BQkxFKFJV
QkJFUl9CQU5ESU5HKQotICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3
LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAgaWYgKGF1dG8gcmVuZGVyVmlldyA9IGZy
YW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVy
Vmlldy0+Y29tcG9zaXRvcigpLmxheWVyRm9yQ29udGVudFNoYWRvdygpOwogICAgIAogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjcwLDcgKzI3MCw3IEBAIEdyYXBoaWNzTGF5ZXIqIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpjb250ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBm
CiAKIEdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyb290Q29udGVudExheWVy
Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewotICAgIGlmIChSZW5kZXJWaWV3
KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAg
aWYgKGF1dG8gcmVuZGVyVmlldyA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigp
KQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLnJvb3RDb250ZW50TGF5
ZXIoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2UgcGhhc2UpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCk7CisgICAg
YXV0byBmcmFtZVZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBpZiAoIWZy
YW1lVmlldykKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgYm9vbCBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHMoY29uc3QKICAgICBmb3IgKGF1dG8mIHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Qg
OiAqdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpIHsKICAgICAgICAgaWYgKCFpczxSZW5kZXJC
b3hNb2RlbE9iamVjdD4oKnZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpIHx8ICF2aWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0LT5oYXNMYXllcigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIFJlbmRlckxheWVyJiBsYXllciA9ICpkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVj
dD4oKnZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpLmxheWVyKCk7CisgICAgICAgIGF1dG8mIGxh
eWVyID0gKmRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0Pigqdmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdCkubGF5ZXIoKTsKICAgICAgICAgLy8gQW55IGV4cGxpY2l0IHJlYXNvbiB0aGF0IGEg
Zml4ZWQgcG9zaXRpb24gZWxlbWVudCBpcyBub3QgY29tcG9zaXRlZCBzaG91bGRuJ3QgY2F1c2Ug
c2xvdyBzY3JvbGxpbmcuCiAgICAgICAgIGlmICghbGF5ZXIuaXNDb21wb3NpdGVkKCkgJiYgbGF5
ZXIudmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24oKSA9PSBSZW5kZXJMYXll
cjo6Tm9Ob3RDb21wb3NpdGVkUmVhc29uKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0z
NDUsNyArMzQ1LDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb25zKEZyYW1lVmlldyYgZnJhbWVWaWUKIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnVwZGF0ZVN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0ZvckFsbEZyYW1lcygp
CiB7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBpZiAoRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKSB7CisgICAgICAgIGlmIChhdXRvIGZy
YW1lVmlldyA9IGZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgICAgIGlmIChjb29yZGluYXRlc1Nj
cm9sbGluZ0ZvckZyYW1lVmlldygqZnJhbWVWaWV3KSkKICAgICAgICAgICAgICAgICB1cGRhdGVT
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKmZyYW1lVmlldyk7CiAgICAgICAgIH0KQEAgLTQw
Miw3ICs0MDIsNyBAQCBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29uc0FzVGV4dChTeW5jaHJvbm91c1Njcm9sbAogCiBTdHJpbmcgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0CiB7
Ci0gICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3
KCkpCisgICAgaWYgKGF1dG8gZnJhbWVWaWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkp
CiAgICAgICAgIHJldHVybiBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoc3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb25zKCpmcmFtZVZpZXcpKTsKIAogICAgIHJldHVybiBTdHJpbmco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlRml4ZWROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlRml4ZWROb2RlLmNwcAppbmRleCBhZTZkYTgyYjNjMTFiNGQ4ZTViODQzOWM4NGFmYWJj
MjI1Nzc3NzhiLi43NmJjN2U4YTQ4MzdjNzg4NDQxMzZhODZiNjJjNGM5OWQzNWU2N2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZpeGVk
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVGaXhlZE5vZGUuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVGaXhl
ZE5vZGU6OnJlY29uY2lsZUxheWVyUG9zaXRpb25Gb3JWaWV3cG9ydFJlY3QoY29uc3QgTGF5b3V0
CiB7CiAgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlv
bkZvclZpZXdwb3J0UmVjdCh2aWV3cG9ydFJlY3QpOwogICAgIGlmIChsYXllcigpLnJlcHJlc2Vu
dHNHcmFwaGljc0xheWVyKCkpIHsKLSAgICAgICAgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
ciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXIqPihsYXllcigpKTsKKyAgICAgICAgYXV0byBn
cmFwaGljc0xheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcio+KGxheWVyKCkpOwogCiAg
ICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nU3Rh
dGVGaXhlZE5vZGUgIiA8PCBzY3JvbGxpbmdOb2RlSUQoKSA8PCIgcmVjb25jaWxlTGF5ZXJQb3Np
dGlvbkZvclZpZXdwb3J0UmVjdCAiIDw8IGFjdGlvbiA8PCAiIHBvc2l0aW9uIG9mIGxheWVyICIg
PDwgZ3JhcGhpY3NMYXllci0+cHJpbWFyeUxheWVySUQoKSA8PCAiIHRvICIgPDwgcG9zaXRpb24p
OwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuY3BwCmluZGV4IDg2NzA2YTU3NGNhYjI4NWExNGFh
ZDNiMzBlZDVkYWNkYzNjMTk0OTQuLjViYmE5MjMyYTdmZDU3MWY0NGYwYzQ2NWUxZDkzMjJjNmMx
N2E2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU3RpY2t5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFNjcm9s
bGluZ1N0YXRlU3RpY2t5Tm9kZTo6cmVjb25jaWxlTGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVj
dChjb25zdCBMYXlvdQogewogICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSBtX2NvbnN0cmFpbnRz
LmxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KHZpZXdwb3J0UmVjdCk7CiAgICAgaWYg
KGxheWVyKCkucmVwcmVzZW50c0dyYXBoaWNzTGF5ZXIoKSkgewotICAgICAgICBHcmFwaGljc0xh
eWVyKiBncmFwaGljc0xheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcio+KGxheWVyKCkp
OworICAgICAgICBhdXRvIGdyYXBoaWNzTGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVy
Kj4obGF5ZXIoKSk7CiAKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKENvbXBvc2l0aW5nLCBzdHJl
YW0gPDwgIlNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8
ICIgcmVjb25jaWxlTGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdCAiIDw8IGFjdGlvbiA8PCAi
IHBvc2l0aW9uIG9mIGxheWVyICIgPDwgZ3JhcGhpY3NMYXllci0+cHJpbWFyeUxheWVySUQoKSA8
PCAiIHRvICIgPDwgcG9zaXRpb24gPDwgIiBzdGlja3kgb2Zmc2V0ICIgPDwgbV9jb25zdHJhaW50
cy5zdGlja3lPZmZzZXRBdExhc3RMYXlvdXQoKSk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKaW5kZXggYzA1
YzUxZDE0ZjA0ZjRhN2YxYjkyYjZkZGYzMzVlNWNjY2UyY2MyOS4uODk3MjA1OTk2MDFiMjg2ZjQ2
Y2I3MzMxMzJlYjE1ZWZmMTdjZjY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC04OCw3ICs4OCw3IEBAIGJvb2wg
U2Nyb2xsaW5nU3RhdGVUcmVlOjpub2RlVHlwZUFuZFBhcmVudE1hdGNoKFNjcm9sbGluZ1N0YXRl
Tm9kZSYgbm9kZSwgU2Nyb2xsCiAgICAgaWYgKG5vZGUubm9kZVR5cGUoKSAhPSBub2RlVHlwZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU2Nyb2xsaW5nU3RhdGVOb2RlKiBwYXJlbnQg
PSBzdGF0ZU5vZGVGb3JJRChwYXJlbnRJRCk7CisgICAgYXV0byBwYXJlbnQgPSBzdGF0ZU5vZGVG
b3JJRChwYXJlbnRJRCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CkBAIC05OSw3ICs5OSw3IEBAIFNjcm9sbGluZ05vZGVJRCBTY3JvbGxpbmdTdGF0ZVRyZWU6OmF0
dGFjaE5vZGUoU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sCiB7CiAgICAgQVNTRVJU
KG5ld05vZGVJRCk7CiAKLSAgICBpZiAoU2Nyb2xsaW5nU3RhdGVOb2RlKiBub2RlID0gc3RhdGVO
b2RlRm9ySUQobmV3Tm9kZUlEKSkgeworICAgIGlmIChhdXRvIG5vZGUgPSBzdGF0ZU5vZGVGb3JJ
RChuZXdOb2RlSUQpKSB7CiAgICAgICAgIGlmIChub2RlVHlwZUFuZFBhcmVudE1hdGNoKCpub2Rl
LCBub2RlVHlwZSwgcGFyZW50SUQpKQogICAgICAgICAgICAgcmV0dXJuIG5ld05vZGVJRDsKIApA
QCAtMTIyLDcgKzEyMiw3IEBAIFNjcm9sbGluZ05vZGVJRCBTY3JvbGxpbmdTdGF0ZVRyZWU6OmF0
dGFjaE5vZGUoU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sCiAgICAgICAgIG5ld05v
ZGUgPSByb290U3RhdGVOb2RlKCk7CiAgICAgICAgIG1faGFzTmV3Um9vdFN0YXRlTm9kZSA9IHRy
dWU7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgU2Nyb2xsaW5nU3RhdGVOb2RlKiBwYXJlbnQgPSBz
dGF0ZU5vZGVGb3JJRChwYXJlbnRJRCk7CisgICAgICAgIGF1dG8gcGFyZW50ID0gc3RhdGVOb2Rl
Rm9ySUQocGFyZW50SUQpOwogICAgICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgICAgIHJldHVy
biAwOwogCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVRyZWU6OmRldGFj
aE5vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
VGhlIG5vZGUgbWF5IG5vdCBiZSBmb3VuZCBpZiBjbGVhclN0YXRlVHJlZSgpIHdhcyByZWNlbnRs
eSBjYWxsZWQuCi0gICAgU2Nyb2xsaW5nU3RhdGVOb2RlKiBub2RlID0gbV9zdGF0ZU5vZGVNYXAu
dGFrZShub2RlSUQpOworICAgIGF1dG8gbm9kZSA9IG1fc3RhdGVOb2RlTWFwLnRha2Uobm9kZUlE
KTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjA0LDcgKzIwNCw3IEBA
IHZvaWQgU2Nyb2xsaW5nU3RhdGVUcmVlOjphZGROb2RlKFNjcm9sbGluZ1N0YXRlTm9kZSogbm9k
ZSkKIAogdm9pZCBTY3JvbGxpbmdTdGF0ZVRyZWU6OnJlbW92ZU5vZGVBbmRBbGxEZXNjZW5kYW50
cyhTY3JvbGxpbmdTdGF0ZU5vZGUqIG5vZGUsIFN1YmZyYW1lTm9kZVJlbW92YWwgc3ViZnJhbWVO
b2RlUmVtb3ZhbCkKIHsKLSAgICBTY3JvbGxpbmdTdGF0ZU5vZGUqIHBhcmVudCA9IG5vZGUtPnBh
cmVudCgpOworICAgIGF1dG8gcGFyZW50ID0gbm9kZS0+cGFyZW50KCk7CiAKICAgICByZWN1cnNp
dmVOb2RlV2lsbEJlUmVtb3ZlZChub2RlLCBzdWJmcmFtZU5vZGVSZW1vdmFsKTsKIApAQCAtMjUy
LDExICsyNTIsMTEgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVRyZWU6OnNldFJlbW92ZWROb2RlcyhI
YXNoU2V0PFNjcm9sbGluZ05vZGVJRD4gbm9kZXMpCiBTY3JvbGxpbmdTdGF0ZU5vZGUqIFNjcm9s
bGluZ1N0YXRlVHJlZTo6c3RhdGVOb2RlRm9ySUQoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbExheWVy
SUQpIGNvbnN0CiB7CiAgICAgaWYgKCFzY3JvbGxMYXllcklEKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGl0ID0gbV9zdGF0ZU5vZGVNYXAu
ZmluZChzY3JvbGxMYXllcklEKTsKICAgICBpZiAoaXQgPT0gbV9zdGF0ZU5vZGVNYXAuZW5kKCkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEFTU0VS
VChpdC0+dmFsdWUtPnNjcm9sbGluZ05vZGVJRCgpID09IHNjcm9sbExheWVySUQpOwogICAgIHJl
dHVybiBpdC0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuY3BwCmluZGV4IDZlNjhhMDA3MmJiMjU1ZmY5YjgyYzc4ZTAzNjVhNGE5ODFhYThl
ZWEuLjQzZGRmZWJlOGMwYTM1MGIzNWRlOGY2MTc1Mzc4YjJmODMxZGI0ZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC02Miw3ICs2
Miw3IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZTo6c2hvdWxkSGFuZGxlV2hlZWxFdmVudFN5bmNocm9u
b3VzbHkoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50CiAgICAgICAgIG1fbGF0Y2hlZE5vZGUgPSAw
OwogICAgIAogICAgIGlmICghbV9ldmVudFRyYWNraW5nUmVnaW9ucy5pc0VtcHR5KCkgJiYgbV9y
b290Tm9kZSkgewotICAgICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlJiBmcmFt
ZVNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
PigqbV9yb290Tm9kZSk7CisgICAgICAgIGF1dG8mIGZyYW1lU2Nyb2xsaW5nTm9kZSA9IGRvd25j
YXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KCptX3Jvb3ROb2RlKTsKICAgICAg
ICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IHdoZWVsRXZlbnQucG9zaXRpb24oKTsKICAgICAgICAg
cG9zaXRpb24ubW92ZShmcmFtZVNjcm9sbGluZ05vZGUudmlld1RvQ29udGVudHNPZmZzZXQobV9t
YWluRnJhbWVTY3JvbGxQb3NpdGlvbikpOwogCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQpCiAKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6dmlld3BvcnRDaGFuZ2VkVmlhRGVsZWdhdGVk
U2Nyb2xsaW5nKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQ
b3NpdGlvblJlY3QsIGRvdWJsZSBzY2FsZSkKIHsKLSAgICBTY3JvbGxpbmdUcmVlTm9kZSogbm9k
ZSA9IG5vZGVGb3JJRChub2RlSUQpOworICAgIGF1dG8gbm9kZSA9IG5vZGVGb3JJRChub2RlSUQp
OwogICAgIGlmICghaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KG5vZGUpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6OnZpZXdw
b3J0Q2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZyhTY3JvbGxpbmdOb2RlSUQgbm9kZUlELAog
CiB2b2lkIFNjcm9sbGluZ1RyZWU6OnNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYURlbGVnYXRlZFNj
cm9sbGluZyhTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBpblVzZXJJbnRlcmFjdGlvbikKIHsKLSAgICBTY3JvbGxp
bmdUcmVlTm9kZSogbm9kZSA9IG5vZGVGb3JJRChub2RlSUQpOworICAgIGF1dG8gbm9kZSA9IG5v
ZGVGb3JJRChub2RlSUQpOwogICAgIGlmICghaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+
KG5vZGUpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNjcm9s
bGluZ1RyZWU6OmNvbW1pdFRyZWVTdGF0ZShzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVU
cmVlPiBzY3JvbGxpbgogICAgIAogICAgIExPRyhTY3JvbGxpbmcsICJcblNjcm9sbGluZ1RyZWU6
OmNvbW1pdFRyZWVTdGF0ZSIpOwogICAgIAotICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZSogcm9vdE5vZGUgPSBzY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKTsKKyAgICBh
dXRvIHJvb3ROb2RlID0gc2Nyb2xsaW5nU3RhdGVUcmVlLT5yb290U3RhdGVOb2RlKCk7CiAgICAg
aWYgKHJvb3ROb2RlCiAgICAgICAgICYmIChyb290U3RhdGVOb2RlQ2hhbmdlZAogICAgICAgICAg
ICAgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZTo6RXZlbnRUcmFja2luZ1JlZ2lvbikKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lk
IFNjcm9sbGluZ1RyZWU6OnVwZGF0ZVRyZWVGcm9tU3RhdGVOb2RlKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSogc3RhdGVOb2RlLAogICAgICAgICBhdXRvIHBhcmVudEl0ID0gbV9ub2RlTWFwLmZp
bmQocGFyZW50Tm9kZUlEKTsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04ocGFyZW50SXQgIT0gbV9ub2RlTWFwLmVuZCgpKTsKICAgICAgICAgaWYgKHBhcmVudEl0ICE9
IG1fbm9kZU1hcC5lbmQoKSkgewotICAgICAgICAgICAgU2Nyb2xsaW5nVHJlZU5vZGUqIHBhcmVu
dCA9IHBhcmVudEl0LT52YWx1ZTsKKyAgICAgICAgICAgIGF1dG8gcGFyZW50ID0gcGFyZW50SXQt
PnZhbHVlOwogICAgICAgICAgICAgbm9kZS0+c2V0UGFyZW50KHBhcmVudCk7CiAgICAgICAgICAg
ICBwYXJlbnQtPmFwcGVuZENoaWxkKCpub2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCmluZGV4IGU1Y2Q1
YWU0MWVmNzNmN2QzM2VkZjVlMGIzNDliMjdmYWQ1ZWVkMDEuLjg1M2VlYjk3Y2VjNGM5YTgyOTAz
ZDQzNzk3NGFhNWE1OWU3MDQyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0
YXRlVHJlZUFzVGV4dEIKIAogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogU2Nyb2xs
aW5nVHJlZU5vZGU6OmVuY2xvc2luZ0ZyYW1lTm9kZSgpIGNvbnN0CiB7Ci0gICAgU2Nyb2xsaW5n
VHJlZU5vZGUqIG5vZGUgPSBwYXJlbnQoKTsKKyAgICBhdXRvIG5vZGUgPSBwYXJlbnQoKTsKICAg
ICB3aGlsZSAobm9kZSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IEZyYW1lU2Nyb2xsaW5nTm9kZSkK
ICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFw
aGljcy5jcHAKaW5kZXggNjc2NDQwMDI4NGM3OWY5OTU0MTIwMWY2OGUxYjYxZTgyNDYyMjQ5Yy4u
MTM4ZGFiZTM3NDU2MGQ5NzE4ZmQ2M2EwMWU1MTU0OThhODUzN2NiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdD
b29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtNTksNyArNTksNyBAQCBTY3JvbGxpbmdOb2RlSUQgU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjphdHRhY2hUb1N0YXRlVHJlZShT
Y3JvbAogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6ZGV0
YWNoRnJvbVN0YXRlVHJlZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogewotICAgIFNjcm9sbGlu
Z1N0YXRlTm9kZSogbm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChu
b2RlSUQpOworICAgIGF1dG8gbm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVG
b3JJRChub2RlSUQpOwogICAgIGlmIChub2RlICYmIG5vZGUtPm5vZGVUeXBlKCkgPT0gRml4ZWRO
b2RlKQogICAgICAgICBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCpzdGF0aWNf
Y2FzdDxHcmFwaGljc0xheWVyKj4obm9kZS0+bGF5ZXIoKSkpLnNldEZpeGVkVG9WaWV3cG9ydChm
YWxzZSk7CiAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3Jk
aW5hdGVkR3JhcGhpY3M6OmNsZWFyU3RhdGVUcmVlKCkKIAogdm9pZCBTY3JvbGxpbmdDb29yZGlu
YXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnVwZGF0ZU5vZGVMYXllcihTY3JvbGxpbmdOb2RlSUQg
bm9kZUlELCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewotICAgIFNjcm9sbGluZ1N0
YXRlTm9kZSogbm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChub2Rl
SUQpOworICAgIGF1dG8gbm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJ
RChub2RlSUQpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC04Miw3ICs4
Miw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjp1cGRh
dGVOb2RlTGF5ZXIoU2Nyb2xsaW5nTm9kZUlEIG5vCiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDb29yZGluYXRlZEdyYXBoaWNzOjp1cGRhdGVOb2RlVmlld3BvcnRDb25zdHJhaW50cyhTY3Jv
bGxpbmdOb2RlSUQgbm9kZUlELCBjb25zdCBWaWV3cG9ydENvbnN0cmFpbnRzJiBjb25zdHJhaW50
cykKIHsKLSAgICBTY3JvbGxpbmdTdGF0ZU5vZGUqIG5vZGUgPSBtX3Njcm9sbGluZ1N0YXRlVHJl
ZS0+c3RhdGVOb2RlRm9ySUQobm9kZUlEKTsKKyAgICBhdXRvIG5vZGUgPSBtX3Njcm9sbGluZ1N0
YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQobm9kZUlEKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
b29yZGluYXRlZEdyYXBoaWNzOjp1cGRhdGVOb2RlVmlld3BvcnRDb25zdHJhaW50cyhTY3JvCiAK
IHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpzY3JvbGxhYmxl
QXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkK
IHsKLSAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gZG93bmNhc3Q8Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyPihzY3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKHNjcm9sbGFi
bGVBcmVhKSk7CisgICAgYXV0byBsYXllciA9IGRvd25jYXN0PENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcj4oc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkpOwogICAg
IGlmICghbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQg
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpzY3JvbGxhYmxlQXJlYVNj
cm9sbExheWVyRGlkQ2hhbmdlCiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRl
ZEdyYXBoaWNzOjp3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3Jv
bGxhYmxlQXJlYSkKIHsKLSAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gZG93
bmNhc3Q8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPihzY3JvbGxMYXllckZvclNjcm9sbGFibGVB
cmVhKHNjcm9sbGFibGVBcmVhKSk7CisgICAgYXV0byBsYXllciA9IGRvd25jYXN0PENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcj4oc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxl
QXJlYSkpOwogICAgIGlmICghbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323878</attachid>
            <date>2017-10-16 00:49:54 -0700</date>
            <delta_ts>2017-10-16 00:52:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178306-20171014171653.patch</filename>
            <type>text/plain</type>
            <size>33045</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNhYzg4YTIyOTkyMmIz
ZDgzNzVlODUyZWY4YTQ0MGY3ZTIwMDBhNC4uYTJlYTU1YjQzMmMzYjUxZjY1NjU0M2JmYTk4Mjlk
Y2YzZGZkYzVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE3LTEwLTE0ICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgYXV0by9udWxscHRy
IGluIHNjcm9sbGluZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzgzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBzY3JvbGxpbmcgY29kZSB0byB1c2Ug
dGhlIGF1dG8ga2V5d29yZCB3aGVuCisgICAgICAgIHBvc3NpYmxlLiBJdCBhbHNvIHJlcGxhY2Vz
ICcwJyB3aXRoICdudWxscHRyJyBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZgorICAgICAgICBTY3Jv
bGxpbmdTdGF0ZVRyZWU6OnN0YXRlTm9kZUZvcklELgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
YmVoYXZpb3IgdW5jaGFuZ2VkLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xs
UG9zaXRpb25VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6ZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5
bmNTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
cmVjb25jaWxlU2Nyb2xsaW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6dXBkYXRlRnJhbWVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVO
b2RlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
dXBkYXRlTm9kZVZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbExh
eWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6YWJzb2x1dGVFdmVudFRyYWNraW5n
UmVnaW9uc0ZvckZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzY3JvbGxMYXllckZvckZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdDb29yZGluYXRvcjo6aGVhZGVyTGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZvb3RlckxheWVyRm9yRnJhbWVWaWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb3VudGVyU2Nyb2xsaW5nTGF5
ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Omluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpjb250ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhhbmRsZVdoZWVs
RXZlbnRQaGFzZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFz
VmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29uc0ZvckFsbEZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvcjo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNUZXh0IGNvbnN0KToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZTo6cmVjb25jaWxlTGF5ZXJQb3Np
dGlvbkZvclZpZXdwb3J0UmVjdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVTdGlja3lOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZTo6cmVjb25jaWxlTGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdCk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlVHJlZTo6bm9kZVR5cGVBbmRQYXJlbnRNYXRjaCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmF0dGFjaE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlOjpkZXRhY2hOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1N0YXRlVHJlZTo6cmVtb3ZlTm9kZUFuZEFsbERlc2NlbmRhbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlVHJlZTo6c3RhdGVOb2RlRm9ySUQgY29u
c3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6c2hvdWxkSGFuZGxlV2hlZWxFdmVudFN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6dmlld3BvcnRDaGFuZ2Vk
VmlhRGVsZWdhdGVkU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6
OnNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpjb21taXRUcmVlU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZTo6dXBkYXRlVHJlZUZyb21TdGF0ZU5vZGUpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVOb2RlOjplbmNsb3NpbmdGcmFtZU5vZGUgY29uc3QpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6ZGV0YWNoRnJvbVN0YXRlVHJlZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnVwZGF0ZU5v
ZGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5h
dGVkR3JhcGhpY3M6OnVwZGF0ZU5vZGVWaWV3cG9ydENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsYWJs
ZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEp
OgorCiAyMDE3LTEwLTEyICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVc2UgbGVzcyBzcGVjaWZpYyBjYXN0IGluIFNjcm9sbGluZ1RyZWU6OnNjcm9sbFBvc2l0
aW9uQ2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRl
eCA0NWM5YzdlNWM1YWM0NWJhNDRiZDVkYTc1Mzg2YWJkYjQ0M2NiNzMzLi41NWRkY2M3OTE0ZGE5
YTQ4ZGUzYTI3NTNkZTFlNGI0YTZkNjVkMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAt
MTM2LDEyICsxMzYsMTIgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZp
ZXdMYXlvdXRVcGRhdGVkKEZyYW1lVmlldyYgZnJhbWVWaWV3KQogICAgIGlmICghY29vcmRpbmF0
ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSBkb3duY2FzdDxTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRl
Tm9kZUZvcklEKGZyYW1lVmlldy5zY3JvbGxMYXllcklEKCkpKTsKKyAgICBhdXRvKiBub2RlID0g
ZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3Rh
dGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpKSk7CiAgICAg
aWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Ny
b2xsYmFyID0gZnJhbWVWaWV3LnZlcnRpY2FsU2Nyb2xsYmFyKCk7Ci0gICAgU2Nyb2xsYmFyKiBo
b3Jpem9udGFsU2Nyb2xsYmFyID0gZnJhbWVWaWV3Lmhvcml6b250YWxTY3JvbGxiYXIoKTsKKyAg
ICBhdXRvKiB2ZXJ0aWNhbFNjcm9sbGJhciA9IGZyYW1lVmlldy52ZXJ0aWNhbFNjcm9sbGJhcigp
OworICAgIGF1dG8qIGhvcml6b250YWxTY3JvbGxiYXIgPSBmcmFtZVZpZXcuaG9yaXpvbnRhbFNj
cm9sbGJhcigpOwogICAgIG5vZGUtPnNldFNjcm9sbGVySW1wc0Zyb21TY3JvbGxiYXJzKHZlcnRp
Y2FsU2Nyb2xsYmFyLCBob3Jpem9udGFsU2Nyb2xsYmFyKTsKICAgICAKICAgICBub2RlLT5zZXRG
cmFtZVNjYWxlRmFjdG9yKGZyYW1lVmlldy5mcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKSk7CkBA
IC0xNjcsNyArMTY3LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZp
ZXdMYXlvdXRVcGRhdGVkKEZyYW1lVmlldyYgZnJhbWVWaWV3KQogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICBQYWdlKiBwYWdlID0gZnJhbWVWaWV3LmZyYW1lKCkucGFnZSgpOwor
ICAgIGF1dG8qIHBhZ2UgPSBmcmFtZVZpZXcuZnJhbWUoKS5wYWdlKCk7CiAgICAgaWYgKHBhZ2Ug
JiYgcGFnZS0+ZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKSB7CiAgICAgICAgIExPRyhXaGVl
bEV2ZW50VGVzdFRyaWdnZXJzLCAiICAgIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1l
Vmlld0xheW91dFVwZGF0ZWQ6IEV4cGVjdHMgd2hlZWwgZXZlbnQgdGVzdCB0cmlnZ2VyPSVkIiwg
cGFnZS0+ZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKTsKICAgICAgICAgbm9kZS0+c2V0RXhw
ZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcihwYWdlLT5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJz
KCkpOwpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyYgZnJhbWVWaWV3CiAKICAgICBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKGZyYW1lVmll
dyk7CiAKLSAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSogbm9kZSA9IGRvd25j
YXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJl
ZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSkpOworICAgIGF1dG8q
IG5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3Jv
bGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy5zY3JvbGxMYXllcklEKCkp
KTsKICAgICBub2RlLT5zZXRMYXllcihzY3JvbGxMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcp
KTsKICAgICBub2RlLT5zZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIocm9vdENvbnRlbnRMYXllckZv
ckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKICAgICBub2RlLT5zZXRDb3VudGVyU2Nyb2xsaW5nTGF5
ZXIoY291bnRlclNjcm9sbGluZ0xheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwpAQCAtMjU0
LDcgKzI1NCw3IEBAIGJvb2wgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVxdWVzdFNjcm9s
bFBvc2l0aW9uVXBkYXRlKEZyYW1lVmlldyYgZnJhbWVWaWV3CiAgICAgaWYgKGZyYW1lVmlldy5m
cmFtZSgpLmRvY3VtZW50KCktPnBhZ2VDYWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6Ok5vdEluUGFn
ZUNhY2hlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZSogc3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
PihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNjcm9sbExh
eWVySUQoKSkpOworICAgIGF1dG8qIHN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1l
Vmlldy5zY3JvbGxMYXllcklEKCkpKTsKICAgICBpZiAoIXN0YXRlTm9kZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0zMDEsMTIgKzMwMSwxMiBAQCBGcmFtZVZpZXcqIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0ZvclNjcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlE
CiAgICAgaWYgKHNjcm9sbGluZ05vZGVJRCA9PSBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+cm9vdFN0
YXRlTm9kZSgpLT5zY3JvbGxpbmdOb2RlSUQoKSkKICAgICAgICAgcmV0dXJuIG1fcGFnZS0+bWFp
bkZyYW1lKCkudmlldygpOwogCi0gICAgU2Nyb2xsaW5nU3RhdGVOb2RlKiBzdGF0ZU5vZGUgPSBt
X3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoc2Nyb2xsaW5nTm9kZUlEKTsKKyAg
ICBhdXRvKiBzdGF0ZU5vZGUgPSBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQo
c2Nyb2xsaW5nTm9kZUlEKTsKICAgICBpZiAoIXN0YXRlTm9kZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAvLyBGaW5kIHRoZSBlbmNsb3NpbmcgZnJhbWUgc2Nyb2xsaW5nIG5vZGUu
Ci0gICAgU2Nyb2xsaW5nU3RhdGVOb2RlKiBwYXJlbnROb2RlID0gc3RhdGVOb2RlOworICAgIGF1
dG8qIHBhcmVudE5vZGUgPSBzdGF0ZU5vZGU7CiAgICAgd2hpbGUgKHBhcmVudE5vZGUgJiYgcGFy
ZW50Tm9kZS0+bm9kZVR5cGUoKSAhPSBGcmFtZVNjcm9sbGluZ05vZGUpCiAgICAgICAgIHBhcmVu
dE5vZGUgPSBwYXJlbnROb2RlLT5wYXJlbnQoKTsKICAgICAKQEAgLTMxNiw3ICszMTYsNyBAQCBG
cmFtZVZpZXcqIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0ZvclNjcm9sbGlu
Z05vZGUoU2Nyb2xsaW5nTm9kZUlECiAgICAgLy8gV2FsayB0aGUgZnJhbWUgdHJlZSB0byBmaW5k
IHRoZSBtYXRjaGluZyBGcmFtZVZpZXcuIFRoaXMgaXMgbm90IGlkZWFsLCBidXQgYXZvaWRzIGJh
Y2sgcG9pbnRlcnMgdG8gRnJhbWVWaWV3cwogICAgIC8vIGZyb20gU2Nyb2xsaW5nVHJlZVN0YXRl
Tm9kZXMuCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBpZiAo
RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKSkgeworICAgICAgICBpZiAoYXV0byogdmll
dyA9IGZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgICAgIGlmICh2aWV3LT5zY3JvbGxMYXllcklE
KCkgPT0gcGFyZW50Tm9kZS0+c2Nyb2xsaW5nTm9kZUlEKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHZpZXc7CiAgICAgICAgIH0KQEAgLTMzMiwxMyArMzMyLDEzIEBAIHZvaWQgQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNj
cm9sbGluZ05vCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1l
VmlldyogZnJhbWVWaWV3UHRyID0gZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdO
b2RlSUQpOworICAgIGF1dG8qIGZyYW1lVmlld1B0ciA9IGZyYW1lVmlld0ZvclNjcm9sbGluZ05v
ZGUoc2Nyb2xsaW5nTm9kZUlEKTsKICAgICBpZiAoIWZyYW1lVmlld1B0cikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwg
bm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCA8PCAiIHNjcm9sbFBvc2l0aW9uICIgPDwgc2Nyb2xs
UG9zaXRpb24gPDwgIiBhY3Rpb24gIiA8PCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsK
IAotICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gKmZyYW1lVmlld1B0cjsKKyAgICBhdXRvJiBm
cmFtZVZpZXcgPSAqZnJhbWVWaWV3UHRyOwogCiAgICAgaWYgKHNjcm9sbGluZ05vZGVJRCA9PSBm
cmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpKSB7CiAgICAgICAgIHJlY29uY2lsZVNjcm9sbGluZ1N0
YXRlKGZyYW1lVmlldywgc2Nyb2xsUG9zaXRpb24sIGxheW91dFZpZXdwb3J0T3JpZ2luLCBwcm9n
cmFtbWF0aWNTY3JvbGwsIFZpZXdwb3J0UmVjdFN0YWJpbGl0eTo6U3RhYmxlLCBzY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uKTsKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3Jv
bGxpbmdObwogICAgIH0KIAogICAgIC8vIE92ZXJmbG93LXNjcm9sbCBhcmVhLgotICAgIGlmIChT
Y3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSBmcmFtZVZpZXcuc2Nyb2xsYWJsZUFyZWFG
b3JTY3JvbGxMYXllcklEKHNjcm9sbGluZ05vZGVJRCkpIHsKKyAgICBpZiAoYXV0byogc2Nyb2xs
YWJsZUFyZWEgPSBmcmFtZVZpZXcuc2Nyb2xsYWJsZUFyZWFGb3JTY3JvbGxMYXllcklEKHNjcm9s
bGluZ05vZGVJRCkpIHsKICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnNldElzVXNlclNjcm9sbChz
Y3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uID09IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rp
b246OlN5bmMpOwogICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsVG9PZmZzZXRXaXRob3V0
QW5pbWF0aW9uKHNjcm9sbFBvc2l0aW9uKTsKICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnNldElz
VXNlclNjcm9sbChmYWxzZSk7CkBAIC00MTEsMTYgKzQxMSwxNiBAQCB2b2lkIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnJlY29uY2lsZVNjcm9sbGluZ1N0YXRlKEZyYW1lVmlldyYgZnJhbWVW
aWV3LCBjbwogICAgICAgICAgICAgcmVjb25jaWxlVmlld3BvcnRDb25zdHJhaW5lZExheWVyUG9z
aXRpb25zKExheW91dFJlY3QobGF5b3V0Vmlld3BvcnRSZWN0LnZhbHVlKCkpLCBzY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uKTsKICAgICB9CiAKLSAgICBHcmFwaGljc0xheWVyKiBzY3JvbGxM
YXllciA9IHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CisgICAgYXV0byogc2Ny
b2xsTGF5ZXIgPSBzY3JvbGxMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOwogICAgIGlmICgh
c2Nyb2xsTGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzTGF5ZXIqIGNvdW50
ZXJTY3JvbGxpbmdMYXllciA9IGNvdW50ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhmcmFt
ZVZpZXcpOwotICAgIEdyYXBoaWNzTGF5ZXIqIGluc2V0Q2xpcExheWVyID0gaW5zZXRDbGlwTGF5
ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsKLSAgICBHcmFwaGljc0xheWVyKiBjb250ZW50U2hh
ZG93TGF5ZXIgPSBjb250ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsKLSAg
ICBHcmFwaGljc0xheWVyKiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIgPSByb290Q29udGVudExheWVy
Rm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7Ci0gICAgR3JhcGhpY3NMYXllciogaGVhZGVyTGF5ZXIg
PSBoZWFkZXJMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOwotICAgIEdyYXBoaWNzTGF5ZXIq
IGZvb3RlckxheWVyID0gZm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsKKyAgICBh
dXRvKiBjb3VudGVyU2Nyb2xsaW5nTGF5ZXIgPSBjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFt
ZVZpZXcoZnJhbWVWaWV3KTsKKyAgICBhdXRvKiBpbnNldENsaXBMYXllciA9IGluc2V0Q2xpcExh
eWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CisgICAgYXV0byogY29udGVudFNoYWRvd0xheWVy
ID0gY29udGVudFNoYWRvd0xheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CisgICAgYXV0byog
c2Nyb2xsZWRDb250ZW50c0xheWVyID0gcm9vdENvbnRlbnRMYXllckZvckZyYW1lVmlldyhmcmFt
ZVZpZXcpOworICAgIGF1dG8qIGhlYWRlckxheWVyID0gaGVhZGVyTGF5ZXJGb3JGcmFtZVZpZXco
ZnJhbWVWaWV3KTsKKyAgICBhdXRvKiBmb290ZXJMYXllciA9IGZvb3RlckxheWVyRm9yRnJhbWVW
aWV3KGZyYW1lVmlldyk7CiAKICAgICBBU1NFUlQoZnJhbWVWaWV3LnNjcm9sbFBvc2l0aW9uKCkg
PT0gcm91bmRlZEludFBvaW50KHNjcm9sbFBvc2l0aW9uKSk7CiAgICAgTGF5b3V0UG9pbnQgc2Ny
b2xsUG9zaXRpb25Gb3JGaXhlZCA9IGZyYW1lVmlldy5zY3JvbGxQb3NpdGlvbkZvckZpeGVkUG9z
aXRpb24oKTsKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmVuc3VyZVJvb3RTdGF0ZU5vZGVGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBmcmFtZQogCiB2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShT
Y3JvbGxpbmdOb2RlSUQgbm9kZUlELCBHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXll
ciogc2Nyb2xsZWRDb250ZW50c0xheWVyLCBHcmFwaGljc0xheWVyKiBjb3VudGVyU2Nyb2xsaW5n
TGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIGluc2V0Q2xpcExheWVyLCBjb25zdCBTY3JvbGxpbmdHZW9t
ZXRyeSogc2Nyb2xsaW5nR2VvbWV0cnkpCiB7Ci0gICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGUqIG5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKG5vZGVJRCkpOworICAgIGF1
dG8qIG5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9z
Y3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKG5vZGVJRCkpOwogICAgIEFTU0VSVChu
b2RlKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKQEAgLTU0MCw3ICs1NDAsNyBA
QCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlELAogICAgIAogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yOjp1cGRhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJ
RCwgR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVudHNM
YXllciwgY29uc3QgU2Nyb2xsaW5nR2VvbWV0cnkqIHNjcm9sbGluZ0dlb21ldHJ5KQogewotICAg
IFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKiBub2RlID0gZG93bmNhc3Q8U2Ny
b2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5z
dGF0ZU5vZGVGb3JJRChub2RlSUQpKTsKKyAgICBhdXRvKiBub2RlID0gZG93bmNhc3Q8U2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0
ZU5vZGVGb3JJRChub2RlSUQpKTsKICAgICBBU1NFUlQobm9kZSk7CiAgICAgaWYgKCFub2RlKQog
ICAgICAgICByZXR1cm47CkBAIC01NjUsNyArNTY1LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjp1cGRhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlEIG5v
ZGUKIAogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVOb2RlTGF5ZXIoU2Ny
b2xsaW5nTm9kZUlEIG5vZGVJRCwgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKLSAg
ICBTY3JvbGxpbmdTdGF0ZU5vZGUqIG5vZGUgPSBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVO
b2RlRm9ySUQobm9kZUlEKTsKKyAgICBhdXRvKiBub2RlID0gbV9zY3JvbGxpbmdTdGF0ZVRyZWUt
PnN0YXRlTm9kZUZvcklEKG5vZGVJRCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47
CiAKQEAgLTU3NCwxOCArNTc0LDE4IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
dXBkYXRlTm9kZUxheWVyKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIEdyYXBoaWNzCiAKIHZvaWQg
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlTm9kZVZpZXdwb3J0Q29uc3RyYWludHMo
U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgY29uc3QgVmlld3BvcnRDb25zdHJhaW50cyYgY29uc3Ry
YWludHMpCiB7Ci0gICAgU2Nyb2xsaW5nU3RhdGVOb2RlKiBub2RlID0gbV9zY3JvbGxpbmdTdGF0
ZVRyZWUtPnN0YXRlTm9kZUZvcklEKG5vZGVJRCk7CisgICAgYXV0byogbm9kZSA9IG1fc2Nyb2xs
aW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChub2RlSUQpOwogICAgIGlmICghbm9kZSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgc3dpdGNoIChjb25zdHJhaW50cy5jb25zdHJhaW50VHlwZSgp
KSB7CiAgICAgY2FzZSBWaWV3cG9ydENvbnN0cmFpbnRzOjpGaXhlZFBvc2l0aW9uQ29uc3RyYWlu
dDogewotICAgICAgICBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSYgZml4ZWROb2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU+KCpub2RlKTsKKyAgICAgICAgYXV0byYgZml4ZWRO
b2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU+KCpub2RlKTsKICAgICAgICAg
Zml4ZWROb2RlLnVwZGF0ZUNvbnN0cmFpbnRzKChjb25zdCBGaXhlZFBvc2l0aW9uVmlld3BvcnRD
b25zdHJhaW50cyYpY29uc3RyYWludHMpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2Fz
ZSBWaWV3cG9ydENvbnN0cmFpbnRzOjpTdGlja3lQb3NpdGlvbkNvbnN0cmFpbnQ6IHsKLSAgICAg
ICAgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlJiBzdGlja3lOb2RlID0gZG93bmNhc3Q8U2Nyb2xs
aW5nU3RhdGVTdGlja3lOb2RlPigqbm9kZSk7CisgICAgICAgIGF1dG8mIHN0aWNreU5vZGUgPSBk
b3duY2FzdDxTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU+KCpub2RlKTsKICAgICAgICAgc3RpY2t5
Tm9kZS51cGRhdGVDb25zdHJhaW50cygoY29uc3QgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0
cmFpbnRzJiljb25zdHJhaW50cyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTU5NCw3ICs1
OTQsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZU5vZGVWaWV3cG9y
dENvbnN0cmFpbnRzKFNjcm9sbGluZ05vZGVJRCBubwogCiB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNldFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhGcmFtZVZpZXcmIGZyYW1l
VmlldywgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIHJlYXNvbnMpCiB7Ci0gICAgU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIHNjcm9sbGluZ1N0YXRlTm9kZSA9IHN0YXRpY19j
YXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKj4obV9zY3JvbGxpbmdTdGF0ZVRy
ZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy5zY3JvbGxMYXllcklEKCkpKTsKKyAgICBhdXRv
KiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZSo+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZp
ZXcuc2Nyb2xsTGF5ZXJJRCgpKSk7CiAgICAgaWYgKCFzY3JvbGxpbmdTdGF0ZU5vZGUpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNjA5LDcgKzYwOSw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6c2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKEZyYW1lVmlldyYgZnJhbWVW
CiB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b24oRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBpZiAoR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIgPSBzY3JvbGxMYXllckZvckZyYW1l
VmlldyhmcmFtZVZpZXcpKQorICAgIGlmIChhdXRvKiBzY3JvbGxMYXllciA9IHNjcm9sbExheWVy
Rm9yRnJhbWVWaWV3KGZyYW1lVmlldykpCiAgICAgICAgIHNjcm9sbExheWVyLT5zZXRQb3NpdGlv
bigtZnJhbWVWaWV3LnNjcm9sbFBvc2l0aW9uKCkpOwogfQogCkBAIC02NDcsNyArNjQ3LDcgQEAg
dm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNl
cyhTY3JvbGxpbmdOb2RlSUQgc2Nyb2wKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWVWaWV3Rm9yU2Nyb2xsaW5n
Tm9kZShzY3JvbGxpbmdOb2RlSUQpOworICAgIGF1dG8qIGZyYW1lVmlldyA9IGZyYW1lVmlld0Zv
clNjcm9sbGluZ05vZGUoc2Nyb2xsaW5nTm9kZUlEKTsKICAgICBpZiAoIWZyYW1lVmlldykKICAg
ICAgICAgcmV0dXJuOwogICAgIApAQCAtNjU4LDcgKzY1OCw3IEBAIHZvaWQgQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9kZUlE
IHNjcm9sCiAgICAgfQogICAgIAogICAgIC8vIE92ZXJmbG93LXNjcm9sbCBhcmVhLgotICAgIGlm
IChTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSBmcmFtZVZpZXctPnNjcm9sbGFibGVB
cmVhRm9yU2Nyb2xsTGF5ZXJJRChzY3JvbGxpbmdOb2RlSUQpKSB7CisgICAgaWYgKGF1dG8qIHNj
cm9sbGFibGVBcmVhID0gZnJhbWVWaWV3LT5zY3JvbGxhYmxlQXJlYUZvclNjcm9sbExheWVySUQo
c2Nyb2xsaW5nTm9kZUlEKSkgewogICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c2V0Q3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleChob3Jpem9udGFsSW5kZXgpOwogICAgICAgICBzY3JvbGxh
YmxlQXJlYS0+c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgodmVydGljYWxJbmRleCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGJjODU1ODBmZWFmN2ZjNzA3NWI4YTMyZDQ5NDZjMTFj
MDAzM2VkYWUuLjdiMjFjOTYyOTcyNmYzNDE3MTA2MmFiZTBhMWMyMGI3M2FmMzYxYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29v
cmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JiBmcmEKICAgICAp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBm
cmFtZVZpZXcuZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKTsKKyAgICBhdXRvKiByZW5kZXJWaWV3
ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJW
aWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHJlbmRlclZpZXctPnVzZXND
b21wb3NpdGluZygpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIEV2ZW50VHJhY2tpbmdSZWdpb25zIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjphYnNvbHV0ZUV2ZW50VHJhY2tpbmdSZWdpb25zRm9yRnJhbWUo
CiAgICAgRXZlbnRUcmFja2luZ1JlZ2lvbnMgZXZlbnRUcmFja2luZ1JlZ2lvbnM7CiAKICAgICAv
LyBGSVhNRTogaWYgd2UndmUgYWxyZWFkeSBhY2NvdW50ZWQgZm9yIHRoaXMgc3ViZnJhbWUgYXMg
YSBzY3JvbGxhYmxlIGFyZWEsIHdlIGNhbiBhdm9pZCByZWN1cnNpbmcgaW50byBpdCBoZXJlLgot
ICAgIGZvciAoRnJhbWUqIHN1YmZyYW1lID0gZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgc3Vi
ZnJhbWU7IHN1YmZyYW1lID0gc3ViZnJhbWUtPnRyZWUoKS5uZXh0U2libGluZygpKSB7CisgICAg
Zm9yIChhdXRvKiBzdWJmcmFtZSA9IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IHN1YmZyYW1l
OyBzdWJmcmFtZSA9IHN1YmZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewogICAgICAgICBh
dXRvKiBzdWJmcmFtZVZpZXcgPSBzdWJmcmFtZS0+dmlldygpOwogICAgICAgICBpZiAoIXN1YmZy
YW1lVmlldykKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjEyLDcgKzIxMiw3IEBAIEdyYXBo
aWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvclNjcm9sbGFibGVB
cmVhKFNjcm9sbGFibGVBcmVhCiAKIEdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpzY3JvbGxMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKLSAgICBp
ZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5k
ZXJlcigpKQorICAgIGlmIChhdXRvKiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29u
dGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCku
c2Nyb2xsTGF5ZXIoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTIyMCw3ICsyMjAsNyBA
QCBHcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsTGF5ZXJGb3JGcmFt
ZVZpZXcoRnJhbWVWaWV3JiBmcmFtZVZpZQogR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmhlYWRlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewog
I2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKLSAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmll
dyA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQorICAgIGlmIChhdXRvKiBy
ZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCiAgICAgICAg
IHJldHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkuaGVhZGVyTGF5ZXIoKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKICNlbHNlCkBAIC0yMzIsNyArMjMyLDcgQEAgR3JhcGhpY3NMYXllciogU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmhlYWRlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJh
bWVWaWUKIEdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmb290ZXJMYXllckZv
ckZyYW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKICNpZiBFTkFCTEUoUlVCQkVSX0JB
TkRJTkcpCi0gICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXcuZnJhbWUo
KS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICBpZiAoYXV0byogcmVuZGVyVmlldyA9IGZyYW1lVmll
dy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+
Y29tcG9zaXRvcigpLmZvb3RlckxheWVyKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZWxzZQpA
QCAtMjQzLDE0ICsyNDMsMTQgQEAgR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OmZvb3RlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWUKIAogR3JhcGhpY3NM
YXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvdW50ZXJTY3JvbGxpbmdMYXllckZvckZyYW1l
VmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKLSAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVy
VmlldyA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQorICAgIGlmIChhdXRv
KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkuZml4ZWRSb290QmFja2dyb3VuZExh
eWVyKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEdyYXBoaWNzTGF5ZXIqIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjppbnNldENsaXBMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmIGZyYW1l
VmlldykKIHsKLSAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy5mcmFt
ZSgpLmNvbnRlbnRSZW5kZXJlcigpKQorICAgIGlmIChhdXRvKiByZW5kZXJWaWV3ID0gZnJhbWVW
aWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJWaWV3
LT5jb21wb3NpdG9yKCkuY2xpcExheWVyKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0y
NTgsNyArMjU4LDcgQEAgR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omluc2V0
Q2xpcExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWUKIEdyYXBoaWNzTGF5ZXIqIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpjb250ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVW
aWV3JiBmcmFtZVZpZXcpCiB7CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotICAgIGlmIChS
ZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVy
KCkpCisgICAgaWYgKGF1dG8qIHJlbmRlclZpZXcgPSBmcmFtZVZpZXcuZnJhbWUoKS5jb250ZW50
UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS5sYXll
ckZvckNvbnRlbnRTaGFkb3coKTsKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3MCw3
ICsyNzAsNyBAQCBHcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29udGVudFNo
YWRvd0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZgogCiBHcmFwaGljc0xheWVyKiBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6cm9vdENvbnRlbnRMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcm
IGZyYW1lVmlldykKIHsKLSAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmll
dy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQorICAgIGlmIChhdXRvKiByZW5kZXJWaWV3ID0g
ZnJhbWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5k
ZXJWaWV3LT5jb21wb3NpdG9yKCkucm9vdENvbnRlbnRMYXllcigpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhh
bmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZSkKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKTsKKyAgICBhdXRvKiBmcmFtZVZpZXcgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0
dXJuOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFz
VmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoY29uc3QKICAgICBm
b3IgKGF1dG8mIHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QgOiAqdmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHMpIHsKICAgICAgICAgaWYgKCFpczxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKnZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3QpIHx8ICF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0LT5oYXNM
YXllcigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIFJlbmRlckxheWVyJiBs
YXllciA9ICpkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKnZpZXdwb3J0Q29uc3RyYWlu
ZWRPYmplY3QpLmxheWVyKCk7CisgICAgICAgIGF1dG8mIGxheWVyID0gKmRvd25jYXN0PFJlbmRl
ckJveE1vZGVsT2JqZWN0Pigqdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCkubGF5ZXIoKTsKICAg
ICAgICAgLy8gQW55IGV4cGxpY2l0IHJlYXNvbiB0aGF0IGEgZml4ZWQgcG9zaXRpb24gZWxlbWVu
dCBpcyBub3QgY29tcG9zaXRlZCBzaG91bGRuJ3QgY2F1c2Ugc2xvdyBzY3JvbGxpbmcuCiAgICAg
ICAgIGlmICghbGF5ZXIuaXNDb21wb3NpdGVkKCkgJiYgbGF5ZXIudmlld3BvcnRDb25zdHJhaW5l
ZE5vdENvbXBvc2l0ZWRSZWFzb24oKSA9PSBSZW5kZXJMYXllcjo6Tm9Ob3RDb21wb3NpdGVkUmVh
c29uKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKEZy
YW1lVmlldyYgZnJhbWVWaWUKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVN5bmNo
cm9ub3VzU2Nyb2xsaW5nUmVhc29uc0ZvckFsbEZyYW1lcygpCiB7CiAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBm
cmFtZS0+dmlldygpKSB7CisgICAgICAgIGlmIChhdXRvKiBmcmFtZVZpZXcgPSBmcmFtZS0+dmll
dygpKSB7CiAgICAgICAgICAgICBpZiAoY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXco
KmZyYW1lVmlldykpCiAgICAgICAgICAgICAgICAgdXBkYXRlU3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zKCpmcmFtZVZpZXcpOwogICAgICAgICB9CkBAIC00MDIsNyArNDAyLDcgQEAgU3RyaW5n
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQo
U3luY2hyb25vdXNTY3JvbGwKIAogU3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzeW5jaHJv
bm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25zdAogewotICAgIGlmIChGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpKQorICAgIGlmIChhdXRvKiBm
cmFtZVZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSkKICAgICAgICAgcmV0dXJuIHN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNv
bnMoKmZyYW1lVmlldykpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuY3Bw
CmluZGV4IGFlNmRhODJiM2MxMWI0ZDhlNWI4NDM5Yzg0YWZhYmMyMjU3Nzc3OGIuLjc2YmM3ZThh
NDgzN2M3ODg0NDEzNmE4NmI2MmM0Yzk5ZDM1ZTY3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRml4ZWROb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5jcHAKQEAg
LTc1LDcgKzc1LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZTo6cmVjb25jaWxlTGF5
ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdChjb25zdCBMYXlvdXQKIHsKICAgICBGbG9hdFBvaW50
IHBvc2l0aW9uID0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uRm9yVmlld3BvcnRSZWN0KHZp
ZXdwb3J0UmVjdCk7CiAgICAgaWYgKGxheWVyKCkucmVwcmVzZW50c0dyYXBoaWNzTGF5ZXIoKSkg
ewotICAgICAgICBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyID0gc3RhdGljX2Nhc3Q8R3Jh
cGhpY3NMYXllcio+KGxheWVyKCkpOworICAgICAgICBhdXRvKiBncmFwaGljc0xheWVyID0gc3Rh
dGljX2Nhc3Q8R3JhcGhpY3NMYXllcio+KGxheWVyKCkpOwogCiAgICAgICAgIExPR19XSVRIX1NU
UkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUgIiA8PCBz
Y3JvbGxpbmdOb2RlSUQoKSA8PCIgcmVjb25jaWxlTGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVj
dCAiIDw8IGFjdGlvbiA8PCAiIHBvc2l0aW9uIG9mIGxheWVyICIgPDwgZ3JhcGhpY3NMYXllci0+
cHJpbWFyeUxheWVySUQoKSA8PCAiIHRvICIgPDwgcG9zaXRpb24pOwogICAgICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU3RpY2t5
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVN0
aWNreU5vZGUuY3BwCmluZGV4IDg2NzA2YTU3NGNhYjI4NWExNGFhZDNiMzBlZDVkYWNkYzNjMTk0
OTQuLjViYmE5MjMyYTdmZDU3MWY0NGYwYzQ2NWUxZDkzMjJjNmMxN2E2MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTdGlj
a3lOb2RlLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9k
ZTo6cmVjb25jaWxlTGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdChjb25zdCBMYXlvdQogewog
ICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JD
b25zdHJhaW5pbmdSZWN0KHZpZXdwb3J0UmVjdCk7CiAgICAgaWYgKGxheWVyKCkucmVwcmVzZW50
c0dyYXBoaWNzTGF5ZXIoKSkgewotICAgICAgICBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVy
ID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcio+KGxheWVyKCkpOworICAgICAgICBhdXRvKiBn
cmFwaGljc0xheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcio+KGxheWVyKCkpOwogCiAg
ICAgICAgIExPR19XSVRIX1NUUkVBTShDb21wb3NpdGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdT
dGF0ZVN0aWNreU5vZGUgIiA8PCBzY3JvbGxpbmdOb2RlSUQoKSA8PCAiIHJlY29uY2lsZUxheWVy
UG9zaXRpb25Gb3JWaWV3cG9ydFJlY3QgIiA8PCBhY3Rpb24gPDwgIiBwb3NpdGlvbiBvZiBsYXll
ciAiIDw8IGdyYXBoaWNzTGF5ZXItPnByaW1hcnlMYXllcklEKCkgPDwgIiB0byAiIDw8IHBvc2l0
aW9uIDw8ICIgc3RpY2t5IG9mZnNldCAiIDw8IG1fY29uc3RyYWludHMuc3RpY2t5T2Zmc2V0QXRM
YXN0TGF5b3V0KCkpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCmluZGV4IGMwNWM1MWQxNGYwNGY0YTdmMWI5
MmI2ZGRmMzM1ZTVjY2NlMmNjMjkuLjg5NzIwNTk5NjAxYjI4NmY0NmNiNzMzMTMyZWIxNWVmZjE3
Y2Y2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVUcmVlLmNwcApAQCAtODgsNyArODgsNyBAQCBib29sIFNjcm9sbGluZ1N0YXRlVHJl
ZTo6bm9kZVR5cGVBbmRQYXJlbnRNYXRjaChTY3JvbGxpbmdTdGF0ZU5vZGUmIG5vZGUsIFNjcm9s
bAogICAgIGlmIChub2RlLm5vZGVUeXBlKCkgIT0gbm9kZVR5cGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIFNjcm9sbGluZ1N0YXRlTm9kZSogcGFyZW50ID0gc3RhdGVOb2RlRm9ySUQo
cGFyZW50SUQpOworICAgIGF1dG8qIHBhcmVudCA9IHN0YXRlTm9kZUZvcklEKHBhcmVudElEKTsK
ICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTk5LDcgKzk5LDcg
QEAgU2Nyb2xsaW5nTm9kZUlEIFNjcm9sbGluZ1N0YXRlVHJlZTo6YXR0YWNoTm9kZShTY3JvbGxp
bmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2wKIHsKICAgICBBU1NFUlQobmV3Tm9kZUlEKTsKIAot
ICAgIGlmIChTY3JvbGxpbmdTdGF0ZU5vZGUqIG5vZGUgPSBzdGF0ZU5vZGVGb3JJRChuZXdOb2Rl
SUQpKSB7CisgICAgaWYgKGF1dG8qIG5vZGUgPSBzdGF0ZU5vZGVGb3JJRChuZXdOb2RlSUQpKSB7
CiAgICAgICAgIGlmIChub2RlVHlwZUFuZFBhcmVudE1hdGNoKCpub2RlLCBub2RlVHlwZSwgcGFy
ZW50SUQpKQogICAgICAgICAgICAgcmV0dXJuIG5ld05vZGVJRDsKIApAQCAtMTIyLDcgKzEyMiw3
IEBAIFNjcm9sbGluZ05vZGVJRCBTY3JvbGxpbmdTdGF0ZVRyZWU6OmF0dGFjaE5vZGUoU2Nyb2xs
aW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sCiAgICAgICAgIG5ld05vZGUgPSByb290U3RhdGVO
b2RlKCk7CiAgICAgICAgIG1faGFzTmV3Um9vdFN0YXRlTm9kZSA9IHRydWU7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgU2Nyb2xsaW5nU3RhdGVOb2RlKiBwYXJlbnQgPSBzdGF0ZU5vZGVGb3JJRChw
YXJlbnRJRCk7CisgICAgICAgIGF1dG8qIHBhcmVudCA9IHN0YXRlTm9kZUZvcklEKHBhcmVudElE
KTsKICAgICAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgICAgICByZXR1cm4gMDsKIApAQCAtMTUx
LDcgKzE1MSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVUcmVlOjpkZXRhY2hOb2RlKFNjcm9sbGlu
Z05vZGVJRCBub2RlSUQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZSBub2RlIG1heSBu
b3QgYmUgZm91bmQgaWYgY2xlYXJTdGF0ZVRyZWUoKSB3YXMgcmVjZW50bHkgY2FsbGVkLgotICAg
IFNjcm9sbGluZ1N0YXRlTm9kZSogbm9kZSA9IG1fc3RhdGVOb2RlTWFwLnRha2Uobm9kZUlEKTsK
KyAgICBhdXRvKiBub2RlID0gbV9zdGF0ZU5vZGVNYXAudGFrZShub2RlSUQpOwogICAgIGlmICgh
bm9kZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBTY3JvbGxp
bmdTdGF0ZVRyZWU6OmFkZE5vZGUoU2Nyb2xsaW5nU3RhdGVOb2RlKiBub2RlKQogCiB2b2lkIFNj
cm9sbGluZ1N0YXRlVHJlZTo6cmVtb3ZlTm9kZUFuZEFsbERlc2NlbmRhbnRzKFNjcm9sbGluZ1N0
YXRlTm9kZSogbm9kZSwgU3ViZnJhbWVOb2RlUmVtb3ZhbCBzdWJmcmFtZU5vZGVSZW1vdmFsKQog
ewotICAgIFNjcm9sbGluZ1N0YXRlTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50KCk7CisgICAg
YXV0byogcGFyZW50ID0gbm9kZS0+cGFyZW50KCk7CiAKICAgICByZWN1cnNpdmVOb2RlV2lsbEJl
UmVtb3ZlZChub2RlLCBzdWJmcmFtZU5vZGVSZW1vdmFsKTsKIApAQCAtMjUyLDExICsyNTIsMTEg
QEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVRyZWU6OnNldFJlbW92ZWROb2RlcyhIYXNoU2V0PFNjcm9s
bGluZ05vZGVJRD4gbm9kZXMpCiBTY3JvbGxpbmdTdGF0ZU5vZGUqIFNjcm9sbGluZ1N0YXRlVHJl
ZTo6c3RhdGVOb2RlRm9ySUQoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbExheWVySUQpIGNvbnN0CiB7
CiAgICAgaWYgKCFzY3JvbGxMYXllcklEKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGl0ID0gbV9zdGF0ZU5vZGVNYXAuZmluZChzY3JvbGxM
YXllcklEKTsKICAgICBpZiAoaXQgPT0gbV9zdGF0ZU5vZGVNYXAuZW5kKCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEFTU0VSVChpdC0+dmFsdWUt
PnNjcm9sbGluZ05vZGVJRCgpID09IHNjcm9sbExheWVySUQpOwogICAgIHJldHVybiBpdC0+dmFs
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3Bw
CmluZGV4IDZlNjhhMDA3MmJiMjU1ZmY5YjgyYzc4ZTAzNjVhNGE5ODFhYThlZWEuLjQzZGRmZWJl
OGMwYTM1MGIzNWRlOGY2MTc1Mzc4YjJmODMxZGI0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC02Miw3ICs2Miw3IEBAIGJvb2wg
U2Nyb2xsaW5nVHJlZTo6c2hvdWxkSGFuZGxlV2hlZWxFdmVudFN5bmNocm9ub3VzbHkoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50CiAgICAgICAgIG1fbGF0Y2hlZE5vZGUgPSAwOwogICAgIAogICAg
IGlmICghbV9ldmVudFRyYWNraW5nUmVnaW9ucy5pc0VtcHR5KCkgJiYgbV9yb290Tm9kZSkgewot
ICAgICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlJiBmcmFtZVNjcm9sbGluZ05v
ZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPigqbV9yb290Tm9k
ZSk7CisgICAgICAgIGF1dG8mIGZyYW1lU2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KCptX3Jvb3ROb2RlKTsKICAgICAgICAgRmxvYXRQb2lu
dCBwb3NpdGlvbiA9IHdoZWVsRXZlbnQucG9zaXRpb24oKTsKICAgICAgICAgcG9zaXRpb24ubW92
ZShmcmFtZVNjcm9sbGluZ05vZGUudmlld1RvQ29udGVudHNPZmZzZXQobV9tYWluRnJhbWVTY3Jv
bGxQb3NpdGlvbikpOwogCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZTo6aGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAKIHZv
aWQgU2Nyb2xsaW5nVHJlZTo6dmlld3BvcnRDaGFuZ2VkVmlhRGVsZWdhdGVkU2Nyb2xsaW5nKFNj
cm9sbGluZ05vZGVJRCBub2RlSUQsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3Qs
IGRvdWJsZSBzY2FsZSkKIHsKLSAgICBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZSA9IG5vZGVGb3JJ
RChub2RlSUQpOworICAgIGF1dG8qIG5vZGUgPSBub2RlRm9ySUQobm9kZUlEKTsKICAgICBpZiAo
IWlzPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPihub2RlKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjp2aWV3cG9ydENoYW5nZWRW
aWFEZWxlZ2F0ZWRTY3JvbGxpbmcoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwKIAogdm9pZCBTY3Jv
bGxpbmdUcmVlOjpzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFEZWxlZ2F0ZWRTY3JvbGxpbmcoU2Ny
b2xsaW5nTm9kZUlEIG5vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9z
aXRpb24sIGJvb2wgaW5Vc2VySW50ZXJhY3Rpb24pCiB7Ci0gICAgU2Nyb2xsaW5nVHJlZU5vZGUq
IG5vZGUgPSBub2RlRm9ySUQobm9kZUlEKTsKKyAgICBhdXRvKiBub2RlID0gbm9kZUZvcklEKG5v
ZGVJRCk7CiAgICAgaWYgKCFpczxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4obm9kZSkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZTo6
Y29tbWl0VHJlZVN0YXRlKHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHNjcm9s
bGluCiAgICAgCiAgICAgTE9HKFNjcm9sbGluZywgIlxuU2Nyb2xsaW5nVHJlZTo6Y29tbWl0VHJl
ZVN0YXRlIik7CiAgICAgCi0gICAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKiByb290Tm9k
ZSA9IHNjcm9sbGluZ1N0YXRlVHJlZS0+cm9vdFN0YXRlTm9kZSgpOworICAgIGF1dG8qIHJvb3RO
b2RlID0gc2Nyb2xsaW5nU3RhdGVUcmVlLT5yb290U3RhdGVOb2RlKCk7CiAgICAgaWYgKHJvb3RO
b2RlCiAgICAgICAgICYmIChyb290U3RhdGVOb2RlQ2hhbmdlZAogICAgICAgICAgICAgfHwgcm9v
dE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6RXZlbnRUcmFja2luZ1JlZ2lvbikKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFNjcm9sbGlu
Z1RyZWU6OnVwZGF0ZVRyZWVGcm9tU3RhdGVOb2RlKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSog
c3RhdGVOb2RlLAogICAgICAgICBhdXRvIHBhcmVudEl0ID0gbV9ub2RlTWFwLmZpbmQocGFyZW50
Tm9kZUlEKTsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocGFyZW50
SXQgIT0gbV9ub2RlTWFwLmVuZCgpKTsKICAgICAgICAgaWYgKHBhcmVudEl0ICE9IG1fbm9kZU1h
cC5lbmQoKSkgewotICAgICAgICAgICAgU2Nyb2xsaW5nVHJlZU5vZGUqIHBhcmVudCA9IHBhcmVu
dEl0LT52YWx1ZTsKKyAgICAgICAgICAgIGF1dG8qIHBhcmVudCA9IHBhcmVudEl0LT52YWx1ZTsK
ICAgICAgICAgICAgIG5vZGUtPnNldFBhcmVudChwYXJlbnQpOwogICAgICAgICAgICAgcGFyZW50
LT5hcHBlbmRDaGlsZCgqbm9kZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAppbmRleCBlNWNkNWFlNDFlZjcz
ZjdkMzNlZGY1ZTBiMzQ5YjI3ZmFkNWVlZDAxLi44NTNlZWI5N2NlYzRjOWE4MjkwM2Q0Mzc5NzRh
YTVhNTllNzA0MmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZU5vZGUuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZU5vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVB
c1RleHRCCiAKIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqIFNjcm9sbGluZ1RyZWVO
b2RlOjplbmNsb3NpbmdGcmFtZU5vZGUoKSBjb25zdAogewotICAgIFNjcm9sbGluZ1RyZWVOb2Rl
KiBub2RlID0gcGFyZW50KCk7CisgICAgYXV0byogbm9kZSA9IHBhcmVudCgpOwogICAgIHdoaWxl
IChub2RlICYmIG5vZGUtPm5vZGVUeXBlKCkgIT0gRnJhbWVTY3JvbGxpbmdOb2RlKQogICAgICAg
ICBub2RlID0gbm9kZS0+cGFyZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3Jk
aW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNw
cAppbmRleCA2NzY0NDAwMjg0Yzc5Zjk5NTQxMjAxZjY4ZTFiNjFlODI0NjIyNDljLi4xMzhkYWJl
Mzc0NTYwZDk3MThmZDYzYTAxZTUxNTQ5OGE4NTM3Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFNjcm9sbGluZ05vZGVJRCBTY3JvbGxpbmdD
b29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OmF0dGFjaFRvU3RhdGVUcmVlKFNjcm9sCiAK
IHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpkZXRhY2hGcm9t
U3RhdGVUcmVlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiB7Ci0gICAgU2Nyb2xsaW5nU3RhdGVO
b2RlKiBub2RlID0gbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKG5vZGVJRCk7
CisgICAgYXV0byogbm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChu
b2RlSUQpOwogICAgIGlmIChub2RlICYmIG5vZGUtPm5vZGVUeXBlKCkgPT0gRml4ZWROb2RlKQog
ICAgICAgICBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCpzdGF0aWNfY2FzdDxH
cmFwaGljc0xheWVyKj4obm9kZS0+bGF5ZXIoKSkpLnNldEZpeGVkVG9WaWV3cG9ydChmYWxzZSk7
CiAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVk
R3JhcGhpY3M6OmNsZWFyU3RhdGVUcmVlKCkKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNv
b3JkaW5hdGVkR3JhcGhpY3M6OnVwZGF0ZU5vZGVMYXllcihTY3JvbGxpbmdOb2RlSUQgbm9kZUlE
LCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewotICAgIFNjcm9sbGluZ1N0YXRlTm9k
ZSogbm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChub2RlSUQpOwor
ICAgIGF1dG8qIG5vZGUgPSBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQobm9k
ZUlEKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtODIsNyArODIsNyBA
QCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6dXBkYXRlTm9k
ZUxheWVyKFNjcm9sbGluZ05vZGVJRCBubwogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29v
cmRpbmF0ZWRHcmFwaGljczo6dXBkYXRlTm9kZVZpZXdwb3J0Q29uc3RyYWludHMoU2Nyb2xsaW5n
Tm9kZUlEIG5vZGVJRCwgY29uc3QgVmlld3BvcnRDb25zdHJhaW50cyYgY29uc3RyYWludHMpCiB7
Ci0gICAgU2Nyb2xsaW5nU3RhdGVOb2RlKiBub2RlID0gbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0
YXRlTm9kZUZvcklEKG5vZGVJRCk7CisgICAgYXV0byogbm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVU
cmVlLT5zdGF0ZU5vZGVGb3JJRChub2RlSUQpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3Jk
aW5hdGVkR3JhcGhpY3M6OnVwZGF0ZU5vZGVWaWV3cG9ydENvbnN0cmFpbnRzKFNjcm8KIAogdm9p
ZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnNjcm9sbGFibGVBcmVh
U2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewot
ICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogbGF5ZXIgPSBkb3duY2FzdDxDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI+KHNjcm9sbExheWVyRm9yU2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFy
ZWEpKTsKKyAgICBhdXRvKiBsYXllciA9IGRvd25jYXN0PENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cj4oc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkpOwogICAgIGlm
ICghbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpzY3JvbGxhYmxlQXJlYVNjcm9s
bExheWVyRGlkQ2hhbmdlCiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzOjp3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSkKIHsKLSAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gZG93bmNh
c3Q8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPihzY3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVh
KHNjcm9sbGFibGVBcmVhKSk7CisgICAgYXV0byogbGF5ZXIgPSBkb3duY2FzdDxDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI+KHNjcm9sbExheWVyRm9yU2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFy
ZWEpKTsKICAgICBpZiAoIWxheWVyKQogICAgICAgICByZXR1cm47CiAK
</data>
<flag name="review"
          id="343530"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="343531"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>