<?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>165742</bug_id>
          
          <creation_ts>2016-12-11 08:05:00 -0800</creation_ts>
          <short_desc>Make some refinements to HTMLPlugInImageElement</short_desc>
          <delta_ts>2016-12-11 16:56:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Plug-ins</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1258856</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-11 08:05:00 -0800</bug_when>
    <thetext>Make some refinements to HTMLPlugInImageElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258857</commentid>
    <comment_count>1</comment_count>
      <attachid>296863</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-11 08:15:54 -0800</bug_when>
    <thetext>Created attachment 296863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258878</commentid>
    <comment_count>2</comment_count>
      <attachid>296870</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-11 10:38:44 -0800</bug_when>
    <thetext>Created attachment 296870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258923</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-11 16:56:58 -0800</bug_when>
    <thetext>Committed r209688: &lt;http://trac.webkit.org/changeset/209688&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296863</attachid>
            <date>2016-12-11 08:15:54 -0800</date>
            <delta_ts>2016-12-11 10:38:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165742-20161211081508.patch</filename>
            <type>text/plain</type>
            <size>28829</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMzOTZjYzE4OTNkZmIy
ZTA0Mzg4MTJmMDIxNGY2YjczMjVkOWRkZC4uNWYyNTA1MDFjZTY5Nzg4MWNhMDM4YmIyMGQwZTBk
YjMxMGQ4MGQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTEyLTExICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHNvbWUgcmVmaW5lbWVu
dHMgdG8gSFRNTFBsdWdJbkltYWdlRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NzQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOiBS
ZW1vdmVkIG1hbnkgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjp0aXRsZVRl
eHQpOiBVc2UgSGFzaE1hcDo6ZW5zdXJlLCBjb3JyZWN0IGFyZ3VtZW50IHR5cGVzLgorICAgICAg
ICAoV2ViQ29yZTo6c3VidGl0bGVUZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KTogTW92ZWQKKyAgICAg
ICAgaW5pdGlhbGl6YXRpb24gb2YgbW9zdCBzY2FsYXJzIHRvIHRoZSBjbGFzcyBkZWZpbml0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6aXNJbWFnZVR5cGUp
OiBVc2UgYXV0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6Ondv
dWxkTG9hZEFzUGx1Z0luKTogUmVtb3ZlZAorICAgICAgICB1bm5lZWRlZCBsb2NhbCB2YXJpYWJs
ZSBhbmQgaWYgc3RhdGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6d2lsbERldGFjaFJlbmRlcmVycyk6IFVzZSBhdXRvLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3QpOiBEbyBub3QgY2FsbAorICAg
ICAgICByZW5kZXJlciB0d2ljZSB1bm5lY2Vzc2FyaWx5LgorICAgICAgICAoV2ViQ29yZTo6cGx1
Z0luSW1hZ2VFbGVtZW50SXNvbGF0ZWRXb3JsZCk6IFVzZSBhdXRvLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6IFVz
ZSBhdXRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFydE9m
U25hcHNob3RPdmVybGF5KTogVXNlIGF1dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpyZXN0YXJ0U2ltaWxhclBsdWdJbnMpOiBHb3QgcmlkIG9mCisgICAgICAg
IHVubmVjZXNzYXJ5IHR5cGVkZWYuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Ojp1c2VyRGlkQ2xpY2tTbmFwc2hvdCk6IFRha2UgYQorICAgICAgICByZWZlcmVuY2Ug
cmF0aGVyIHRoYW4gUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50SGFkUmVj
ZW50VXNlckdlc3R1cmUpOiBSZW1vdmVkIHVubmVlZGVkIGlmLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hlY2tTaXplQ2hhbmdlRm9yU25hcHNob3R0aW5nKTog
VXNlIGF1dG8uCisgICAgICAgIChXZWJDb3JlOjppc1NtYWxsZXJUaGFuVGlueVNpemluZ1RocmVz
aG9sZCk6IFVzZSBhdXRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6aXNUb3BMZXZlbEZ1bGxQYWdlUGx1Z2luKTogVXNlIGF1dG8uCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NuYXBzaG90U3RhdHVzKTogVXNlIGF1dG8u
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRl
cldpbGxDcmVhdGVQbHVnSW4pOiBHb3QgcmlkCisgICAgICAgIG9mIHVubmVjZXNzYXJ5IGxvY2Fs
IHZhcmlhYmxlLiBVc2UgYXV0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OnJlcXVlc3RPYmplY3QpOiBHb3QgcmlkIG9mIHVubmVjZXNzYXJ5CisgICAgICAgIGxv
Y2FsIHZhcmlhYmxlLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOiBV
cGRhdGVkIGZvciB0aGUgYWJvdmUuIFJlbW92ZWQgaW5jb3JyZWN0CisgICAgICAgIHVzZSBvZiBj
b25zdC4gSW5pdGlhbGl6ZWQgYWxsIHNjYWxhcnMuIE1hZGUgZnVuY3Rpb24gcHJpdmF0ZSBhbmQg
ZmluYWwuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmhhbmRsZUV2ZW50
KTogUGFzcyByZWZlcmVuY2UgaW5zdGVhZAorICAgICAgICBvZiBwb2ludGVyLgorCiAyMDE2LTEy
LTExICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBV
bnJldmlld2VkLCBhZGQgS0hSIGluY2x1ZGUgZGlyIHRvIGZpeCBBTkdMRSBidWlsZCBhZnRlciBy
MjA5NjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNw
cAppbmRleCBiOTZlM2NlMzEzZGY0OGQyOTJlMzcyODBmM2Y5OTk2N2ZjYjBhOTA4Li45MWEyM2Uy
ZDU1ZTliNDQxM2Y0ODJhMTI0ZDg5ZDgxMmQ4ZTI0ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDExLCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsMjUgKzI0LDE3IEBACiAj
aW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJF
dmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRnJhbWUu
aCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlTG9hZGVyLmgi
Ci0jaW5jbHVkZSAiSlNEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiSlNTaGFkb3dSb290
LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCi0jaW5jbHVk
ZSAiTm9kZUxpc3QuaCIKLSNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGx1Z0luQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jh
c2UuaCIKLSNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRl
ckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCIKICNpbmNsdWRl
ICJSZW5kZXJUcmVlVXBkYXRlci5oIgpAQCAtNTEsMjIgKzQzLDEyIEBACiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKLSNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3R5bGVUcmVlUmVz
b2x2ZXIuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIlR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNh
c3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotCi10eXBlZGVmIFZlY3Rv
cjxSZWY8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4+IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnRMaXN0
OwotdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBNaW1lVHlwZVRvTG9jYWxpemVkU3Ry
aW5nTWFwOwotCiBzdGF0aWMgY29uc3QgaW50IHNpemluZ1RpbnlEaW1lbnNpb25UaHJlc2hvbGQg
PSA0MDsKIHN0YXRpYyBjb25zdCBmbG9hdCBzaXppbmdGdWxsUGFnZUFyZWFSYXRpb1RocmVzaG9s
ZCA9IDAuOTY7CiBzdGF0aWMgY29uc3QgZmxvYXQgYXV0b3N0YXJ0U29vbkFmdGVyVXNlckdlc3R1
cmVUaHJlc2hvbGQgPSA1LjA7CkBAIC03OCw1MSArNjAsMzggQEAgc3RhdGljIGNvbnN0IGF1dG8g
c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRGVsYXkgPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
IHsgNzUKIHN0YXRpYyBjb25zdCBhdXRvIHJlbW92ZVNuYXBzaG90VGltZXJEZWxheSA9IHN0ZDo6
Y2hyb25vOjptaWxsaXNlY29uZHMgeyAxNTAwIH07CiAjZW5kaWYKIAotc3RhdGljIGNvbnN0IFN0
cmluZyB0aXRsZVRleHQoUGFnZSogcGFnZSwgU3RyaW5nIG1pbWVUeXBlKQotewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxNaW1lVHlwZVRvTG9jYWxpemVkU3RyaW5nTWFwPiBtaW1lVHlwZVRv
TGFiZWxUaXRsZU1hcDsKLSAgICBTdHJpbmcgdGl0bGVUZXh0ID0gbWltZVR5cGVUb0xhYmVsVGl0
bGVNYXAuZ2V0KCkuZ2V0KG1pbWVUeXBlKTsKLSAgICBpZiAoIXRpdGxlVGV4dC5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiB0aXRsZVRleHQ7Ci0KLSAgICB0aXRsZVRleHQgPSBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5wbHVnSW5TdGFydExhYmVsVGl0bGUobWltZVR5cGUpOwotICAgIGlmICh0
aXRsZVRleHQuaXNFbXB0eSgpKQotICAgICAgICB0aXRsZVRleHQgPSBzbmFwc2hvdHRlZFBsdWdJ
bkxhYmVsVGl0bGUoKTsKLSAgICBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcC5nZXQoKS5zZXQobWlt
ZVR5cGUsIHRpdGxlVGV4dCk7Ci0gICAgcmV0dXJuIHRpdGxlVGV4dDsKK3N0YXRpYyBjb25zdCBT
dHJpbmcgdGl0bGVUZXh0KFBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7Cisg
ICAgLy8gRklYTUU6IEl0J3Mgbm90IGNvbnNpc3RlbnQgdG8gZ2V0IGEgc3RyaW5nIGZyb20gdGhl
IHBhZ2UncyBjaHJvbWUgY2xpZW50LCBidXQgdGhlbiBjYWNoZSBpdCBnbG9iYWxseS4KKyAgICAv
LyBJZiBpdCdzIGdsb2JhbCwgaXQgc2hvdWxkIGNvbWUgZnJvbSBlbHNld2hlcmUuIElmIGl0J3Mg
cGVyLXBhZ2UgdGhlbiBpdCBzaG91bGQgYmUgY2FjaGVkIHBlciBwYWdlLgorICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4gbWltZVR5cGVUb0xhYmVsVGl0
bGVNYXA7CisgICAgcmV0dXJuIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLmdldCgpLmVuc3VyZSht
aW1lVHlwZSwgWyZdIHsKKyAgICAgICAgYXV0byB0aXRsZSA9IHBhZ2UuY2hyb21lKCkuY2xpZW50
KCkucGx1Z0luU3RhcnRMYWJlbFRpdGxlKG1pbWVUeXBlKTsKKyAgICAgICAgaWYgKCF0aXRsZS5p
c0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gdGl0bGU7CisgICAgICAgIHJldHVybiBzbmFw
c2hvdHRlZFBsdWdJbkxhYmVsVGl0bGUoKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9Owog
Ci1zdGF0aWMgY29uc3QgU3RyaW5nIHN1YnRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJpbmcgbWlt
ZVR5cGUpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1pbWVUeXBlVG9Mb2NhbGl6ZWRT
dHJpbmdNYXA+IG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwOwotICAgIFN0cmluZyBzdWJ0aXRs
ZVRleHQgPSBtaW1lVHlwZVRvTGFiZWxTdWJ0aXRsZU1hcC5nZXQoKS5nZXQobWltZVR5cGUpOwot
ICAgIGlmICghc3VidGl0bGVUZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN1YnRpdGxl
VGV4dDsKLQotICAgIHN1YnRpdGxlVGV4dCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnBsdWdJ
blN0YXJ0TGFiZWxTdWJ0aXRsZShtaW1lVHlwZSk7Ci0gICAgaWYgKHN1YnRpdGxlVGV4dC5pc0Vt
cHR5KCkpCi0gICAgICAgIHN1YnRpdGxlVGV4dCA9IHNuYXBzaG90dGVkUGx1Z0luTGFiZWxTdWJ0
aXRsZSgpOwotICAgIG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwLmdldCgpLnNldChtaW1lVHlw
ZSwgc3VidGl0bGVUZXh0KTsKLSAgICByZXR1cm4gc3VidGl0bGVUZXh0Oworc3RhdGljIGNvbnN0
IFN0cmluZyBzdWJ0aXRsZVRleHQoUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
K3sKKyAgICAvLyBGSVhNRTogSXQncyBub3QgY29uc2lzdGVudCB0byBnZXQgYSBzdHJpbmcgZnJv
bSB0aGUgcGFnZSdzIGNocm9tZSBjbGllbnQsIGJ1dCB0aGVuIGNhY2hlIGl0IGdsb2JhbGx5Lgor
ICAgIC8vIElmIGl0J3MgZ2xvYmFsLCBpdCBzaG91bGQgY29tZSBmcm9tIGVsc2V3aGVyZS4gSWYg
aXQncyBwZXItcGFnZSB0aGVuIGl0IHNob3VsZCBiZSBjYWNoZWQgcGVyIHBhZ2UuCisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBtaW1lVHlwZVRvTGFi
ZWxTdWJ0aXRsZU1hcDsKKyAgICByZXR1cm4gbWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuZ2V0
KCkuZW5zdXJlKG1pbWVUeXBlLCBbJl0geworICAgICAgICBhdXRvIHN1YnRpdGxlID0gcGFnZS5j
aHJvbWUoKS5jbGllbnQoKS5wbHVnSW5TdGFydExhYmVsU3VidGl0bGUobWltZVR5cGUpOworICAg
ICAgICBpZiAoIXN1YnRpdGxlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBzdWJ0aXRs
ZTsKKyAgICAgICAgcmV0dXJuIHNuYXBzaG90dGVkUGx1Z0luTGFiZWxTdWJ0aXRsZSgpOworICAg
IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH07CiAKIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxQbHVnSW5FbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQotICAgIC8vIG1fbmVlZHNXaWRnZXRVcGRhdGUoIWNyZWF0ZWRC
eVBhcnNlcikgYWxsb3dzIEhUTUxPYmplY3RFbGVtZW50IHRvIGRlbGF5Ci0gICAgLy8gd2lkZ2V0
IHVwZGF0ZXMgdW50aWwgYWZ0ZXIgYWxsIGNoaWxkcmVuIGFyZSBwYXJzZWQuICBGb3IgSFRNTEVt
YmVkRWxlbWVudAotICAgIC8vIHRoaXMgZGVsYXkgaXMgdW5uZWNlc3NhcnksIGJ1dCBpdCBpcyBz
aW1wbGVyIHRvIG1ha2UgYm90aCBjbGFzc2VzIHNoYXJlCi0gICAgLy8gdGhlIHNhbWUgY29kZXBh
dGggaW4gdGhpcyBjbGFzcy4KLSAgICAsIG1fbmVlZHNXaWRnZXRVcGRhdGUoIWNyZWF0ZWRCeVBh
cnNlcikKLSAgICAsIG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MoZmFsc2UpCisg
ICAgLCBtX25lZWRzV2lkZ2V0VXBkYXRlKCFjcmVhdGVkQnlQYXJzZXIpIC8vIFNldCB0cnVlIGlu
IGZpbmlzaFBhcnNpbmdDaGlsZHJlbi4KICAgICAsIG1fc2ltdWxhdGVkTW91c2VDbGlja1RpbWVy
KCp0aGlzLCAmSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2ltdWxhdGVkTW91c2VDbGlja1RpbWVy
RmlyZWQsIHNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckRlbGF5KQogICAgICwgbV9yZW1vdmVTbmFw
c2hvdFRpbWVyKCp0aGlzLCAmSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVtb3ZlU25hcHNob3RU
aW1lckZpcmVkKQogICAgICwgbV9jcmVhdGVkRHVyaW5nVXNlckdlc3R1cmUoU2NyaXB0Q29udHJv
bGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCi0gICAgLCBtX2lzUmVzdGFydGVkUGx1Z2lu
KGZhbHNlKQotICAgICwgbV9uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZShmYWxzZSkKLSAgICAsIG1f
cGx1Z0luV2FzQ3JlYXRlZChmYWxzZSkKLSAgICAsIG1fZGVmZXJyZWRQcm9tb3Rpb25Ub1ByaW1h
cnlQbHVnSW4oZmFsc2UpCi0gICAgLCBtX3NuYXBzaG90RGVjaXNpb24oU25hcHNob3ROb3RZZXRE
ZWNpZGVkKQotICAgICwgbV9wbHVnSW5EaW1lbnNpb25zU3BlY2lmaWVkKGZhbHNlKQogewogICAg
IHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogfQpAQCAtMTUwLDggKzExOSw3
IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2V0RGlzcGxheVN0YXRlKERpc3BsYXlT
dGF0ZSBzdGF0ZSkKIAogUmVuZGVyRW1iZWRkZWRPYmplY3QqIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OnJlbmRlckVtYmVkZGVkT2JqZWN0KCkgY29uc3QKIHsKLSAgICAvLyBIVE1MT2JqZWN0RWxl
bWVudCBhbmQgSFRNTEVtYmVkRWxlbWVudCBtYXkgcmV0dXJuIGFyYml0cmFyeSByZW5kZXJlcnMK
LSAgICAvLyB3aGVuIHVzaW5nIGZhbGxiYWNrIGNvbnRlbnQuCisgICAgLy8gSFRNTE9iamVjdEVs
ZW1lbnQgYW5kIEhUTUxFbWJlZEVsZW1lbnQgbWF5IHJldHVybiBhcmJpdHJhcnkgcmVuZGVyZXJz
IHdoZW4gdXNpbmcgZmFsbGJhY2sgY29udGVudC4KICAgICByZXR1cm4gaXM8UmVuZGVyRW1iZWRk
ZWRPYmplY3Q+KHJlbmRlcmVyKCkpID8gZG93bmNhc3Q8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJl
bmRlcmVyKCkpIDogbnVsbHB0cjsKIH0KIApAQCAtMTYwLDI0ICsxMjgsMTggQEAgYm9vbCBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50Ojppc0ltYWdlVHlwZSgpCiAgICAgaWYgKG1fc2VydmljZVR5cGUu
aXNFbXB0eSgpICYmIHByb3RvY29sSXMobV91cmwsICJkYXRhIikpCiAgICAgICAgIG1fc2Vydmlj
ZVR5cGUgPSBtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsKTsKIAotICAgIGlmIChGcmFtZSogZnJh
bWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpIHsKLSAgICAgICAgVVJMIGNvbXBsZXRlZFVSTCA9IGRv
Y3VtZW50KCkuY29tcGxldGVVUkwobV91cmwpOwotICAgICAgICByZXR1cm4gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLm9iamVjdENvbnRlbnRUeXBlKGNvbXBsZXRlZFVSTCwgbV9zZXJ2aWNlVHlw
ZSkgPT0gT2JqZWN0Q29udGVudFR5cGU6OkltYWdlOwotICAgIH0KKyAgICBpZiAoYXV0byogZnJh
bWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpCisgICAgICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkub2JqZWN0Q29udGVudFR5cGUoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChtX3VybCks
IG1fc2VydmljZVR5cGUpID09IE9iamVjdENvbnRlbnRUeXBlOjpJbWFnZTsKIAogICAgIHJldHVy
biBJbWFnZTo6c3VwcG9ydHNUeXBlKG1fc2VydmljZVR5cGUpOwogfQogCi0vLyBXZSBkb24ndCB1
c2UgbV91cmwsIGFzIGl0IG1heSBub3QgYmUgdGhlIGZpbmFsIFVSTCB0aGF0IHRoZSBvYmplY3Qg
bG9hZHMsCi0vLyBkZXBlbmRpbmcgb24gPHBhcmFtPiB2YWx1ZXMuCisvLyBXZSBkb24ndCB1c2Ug
bV91cmwsIGFzIGl0IG1heSBub3QgYmUgdGhlIGZpbmFsIFVSTCB0aGF0IHRoZSBvYmplY3QgbG9h
ZHMsIGRlcGVuZGluZyBvbiA8cGFyYW0+IHZhbHVlcy4KIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIFVS
TCBjb21wbGV0ZVVSTCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsKTsKLQotICAgIGlmIChj
b250ZW50RnJhbWUoKSAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZVVSTCkKLSAgICAg
ICAgJiYgIWRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKGNvbnRlbnREb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKKyAgICBpZiAoY29udGVudEZyYW1lKCkgJiYgcHJv
dG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwpICYmICFkb2N1bWVudCgpLnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2Vzcyhjb250ZW50RG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiBkb2N1bWVudCgpLmZyYW1lKCktPmlz
VVJMQWxsb3dlZChjb21wbGV0ZVVSTCk7CiB9CiAKQEAgLTE4OSwxMSArMTUxLDcgQEAgYm9vbCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3b3VsZExvYWRBc1BsdWdJbihjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJgogICAgIFVSTCBjb21wbGV0ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNF
bXB0eSgpKQogICAgICAgICBjb21wbGV0ZWRVUkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVy
bCk7Ci0KLSAgICBGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBkb2N1bWVudCgpLmZyYW1lKCkt
PmxvYWRlcigpOwotICAgIGlmIChmcmFtZUxvYWRlci5jbGllbnQoKS5vYmplY3RDb250ZW50VHlw
ZShjb21wbGV0ZWRVUkwsIHNlcnZpY2VUeXBlKSA9PSBPYmplY3RDb250ZW50VHlwZTo6UGx1Z0lu
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGRv
Y3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkub2JqZWN0Q29udGVudFR5cGUoY29t
cGxldGVkVVJMLCBzZXJ2aWNlVHlwZSkgPT0gT2JqZWN0Q29udGVudFR5cGU6OlBsdWdJbjsKIH0K
IAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mIGluc2VydGlvblBvc2l0aW9uKQpAQCAtMjAzLDcgKzE2MSw3IEBAIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5CiAgICAgaWYgKGRpc3BsYXlTdGF0ZSgpID49IFByZXBhcmluZ1BsdWdpblJl
cGxhY2VtZW50KQogICAgICAgICByZXR1cm4gSFRNTFBsdWdJbkVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogCi0gICAgLy8g
T25jZSBhIFBsdWdJbiBFbGVtZW50IGNyZWF0ZXMgaXRzIHJlbmRlcmVyLCBpdCBuZWVkcyB0byBi
ZSB0b2xkIHdoZW4gdGhlIERvY3VtZW50IGdvZXMKKyAgICAvLyBPbmNlIGEgcGx1Zy1pbiBlbGVt
ZW50IGNyZWF0ZXMgaXRzIHJlbmRlcmVyLCBpdCBuZWVkcyB0byBiZSB0b2xkIHdoZW4gdGhlIGRv
Y3VtZW50IGdvZXMKICAgICAvLyBpbmFjdGl2ZSBvciByZWFjdGl2YXRlcyBzbyBpdCBjYW4gY2xl
YXIgdGhlIHJlbmRlcmVyIGJlZm9yZSBnb2luZyBpbnRvIHRoZSBwYWdlIGNhY2hlLgogICAgIGlm
ICghbV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcykgewogICAgICAgICBtX25lZWRz
RG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzID0gdHJ1ZTsKQEAgLTIxNiw5ICsxNzQsNiBAQCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eQogICAgICAgICByZXR1cm4gV1RGTW92ZShyZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbik7CiAgICAgfQogCi0gICAgLy8gRmFsbGJhY2sgY29udGVudCBicmVha3Mg
dGhlIERPTS0+UmVuZGVyZXIgY2xhc3MgcmVsYXRpb25zaGlwIG9mIHRoaXMKLSAgICAvLyBjbGFz
cyBhbmQgYWxsIHN1cGVyY2xhc3NlcyBiZWNhdXNlIGNyZWF0ZU9iamVjdCB3b24ndCBuZWNlc3Nh
cmlseQotICAgIC8vIHJldHVybiBhIFJlbmRlckVtYmVkZGVkT2JqZWN0IG9yIFJlbmRlcldpZGdl
dC4KICAgICBpZiAodXNlRmFsbGJhY2tDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJF
bGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIApAQCAtMjc3LDcgKzIz
Miw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbERldGFjaFJlbmRlcmVycygp
CiAgICAgICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAgIH0KIAotICAgIFdpZGdl
dCogd2lkZ2V0ID0gcGx1Z2luV2lkZ2V0KFBsdWdpbkxvYWRpbmdQb2xpY3k6OkRvTm90TG9hZCk7
CisgICAgYXV0byogd2lkZ2V0ID0gcGx1Z2luV2lkZ2V0KFBsdWdpbkxvYWRpbmdQb2xpY3k6OkRv
Tm90TG9hZCk7CiAgICAgaWYgKGlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQpKQogICAgICAgICBk
b3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkud2lsbERldGF0Y2hSZW5kZXJlcigpOwog
CkBAIC0zMDMsNiArMjU4LDggQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpmaW5pc2hQ
YXJzaW5nQ2hpbGRyZW4oKQogICAgIGlmICh1c2VGYWxsYmFja0NvbnRlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgLy8gSFRNTE9iamVjdEVsZW1lbnQgbmVlZHMgdG8gZGVsYXkgd2lkZ2V0
IHVwZGF0ZXMgdW50aWwgYWZ0ZXIgYWxsIGNoaWxkcmVuIGFyZSBwYXJzZWQsCisgICAgLy8gRm9y
IEhUTUxFbWJlZEVsZW1lbnQgdGhpcyBkZWxheSBpcyB1bm5lY2Vzc2FyeSwgYnV0IHRoZXJlIGlz
IG5vIGhhcm0gaW4gZG9pbmcgdGhlIHNhbWUuCiAgICAgc2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1
ZSk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSkKICAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3Vi
dHJlZSgpOwpAQCAtMzUwLDIyICszMDcsMjIgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojp1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKIAogICAgIG1fc25hcHNo
b3RJbWFnZSA9IGltYWdlOwogCi0gICAgaWYgKCFyZW5kZXJlcigpKQorICAgIGF1dG8qIHJlbmRl
cmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1
cm47Ci0gICAgYXV0byYgcmVuZGVyZXIgPSAqdGhpcy0+cmVuZGVyZXIoKTsKIAotICAgIGlmIChp
czxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4ocmVuZGVyZXIpKSB7Ci0gICAgICAgIGRvd25jYXN0
PFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPihyZW5kZXJlcikudXBkYXRlU25hcHNob3QoaW1hZ2Up
OworICAgIGlmIChpczxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4oKnJlbmRlcmVyKSkgeworICAg
ICAgICBkb3duY2FzdDxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4oKnJlbmRlcmVyKS51cGRhdGVT
bmFwc2hvdChpbWFnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXM8UmVu
ZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKSkKLSAgICAgICAgcmVuZGVyZXIucmVwYWludCgp
OworICAgIGlmIChpczxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRlcmVyKSkKKyAgICAgICAg
cmVuZGVyZXItPnJlcGFpbnQoKTsKIH0KIAogc3RhdGljIERPTVdyYXBwZXJXb3JsZCYgcGx1Z0lu
SW1hZ2VFbGVtZW50SXNvbGF0ZWRXb3JsZCgpCiB7Ci0gICAgc3RhdGljIERPTVdyYXBwZXJXb3Js
ZCYgaXNvbGF0ZWRXb3JsZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKEpTRE9NV2luZG93Ojpj
b21tb25WTSgpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIGF1dG8mIGlzb2xhdGVkV29ybGQgPSBE
T01XcmFwcGVyV29ybGQ6OmNyZWF0ZShKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSkubGVha1JlZigp
OwogICAgIHJldHVybiBpc29sYXRlZFdvcmxkOwogfQogCkBAIC0zNzUsNyArMzMyLDcgQEAgdm9p
ZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRv
d1Jvb3QqIHJvb3QpCiAgICAgaWYgKGRpc3BsYXlTdGF0ZSgpID49IFByZXBhcmluZ1BsdWdpblJl
cGxhY2VtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQo
KS5wYWdlKCk7CisgICAgYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOwogICAgIGlmICgh
cGFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zODYsNDYgKzM0Myw0NiBAQCB2b2lkIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCog
cm9vdCkKICAgICAKICAgICBTdHJpbmcgbWltZVR5cGUgPSBsb2FkZWRNaW1lVHlwZSgpOwogCi0g
ICAgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdvcmxkID0gcGx1Z0luSW1hZ2VFbGVtZW50SXNv
bGF0ZWRXb3JsZCgpOworICAgIGF1dG8mIGlzb2xhdGVkV29ybGQgPSBwbHVnSW5JbWFnZUVsZW1l
bnRJc29sYXRlZFdvcmxkKCk7CiAgICAgZG9jdW1lbnQoKS5lbnN1cmVQbHVnSW5zSW5qZWN0ZWRT
Y3JpcHQoaXNvbGF0ZWRXb3JsZCk7CiAKLSAgICBTY3JpcHRDb250cm9sbGVyJiBzY3JpcHRDb250
cm9sbGVyID0gZG9jdW1lbnQoKS5mcmFtZSgpLT5zY3JpcHQoKTsKLSAgICBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3Jp
cHRDb250cm9sbGVyLmdsb2JhbE9iamVjdChpc29sYXRlZFdvcmxkKSk7CisgICAgYXV0byYgc2Ny
aXB0Q29udHJvbGxlciA9IGRvY3VtZW50KCkuZnJhbWUoKS0+c2NyaXB0KCk7CisgICAgYXV0byYg
Z2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0Q29u
dHJvbGxlci5nbG9iYWxPYmplY3QoaXNvbGF0ZWRXb3JsZCkpOwogCi0gICAgSlNDOjpWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsK
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxPYmplY3QuZ2xvYmFs
RXhlYygpOwogCiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwotICAgIGFy
Z0xpc3QuYXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCByb290KSk7Ci0gICAgYXJnTGlz
dC5hcHBlbmQoanNTdHJpbmcoZXhlYywgdGl0bGVUZXh0KHBhZ2UsIG1pbWVUeXBlKSkpOwotICAg
IGFyZ0xpc3QuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHN1YnRpdGxlVGV4dChwYWdlLCBtaW1lVHlw
ZSkpKTsKKyAgICBhcmdMaXN0LmFwcGVuZCh0b0pTKCZzdGF0ZSwgJmdsb2JhbE9iamVjdCwgcm9v
dCkpOworICAgIGFyZ0xpc3QuYXBwZW5kKGpzU3RyaW5nKCZzdGF0ZSwgdGl0bGVUZXh0KCpwYWdl
LCBtaW1lVHlwZSkpKTsKKyAgICBhcmdMaXN0LmFwcGVuZChqc1N0cmluZygmc3RhdGUsIHN1YnRp
dGxlVGV4dCgqcGFnZSwgbWltZVR5cGUpKSk7CiAgICAgCiAgICAgLy8gVGhpcyBwYXJhbWV0ZXIg
ZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgc25hcHNob3Qgb3ZlcmxheSBzaG91bGQgYWx3
YXlzIGJlIHZpc2libGUgb3ZlciB0aGUgcGx1Z2luIHNuYXBzaG90LgogICAgIC8vIElmIG5vIHNu
YXBzaG90IHdhcyBmb3VuZCB0aGVuIHdlIHdhbnQgdGhlIG92ZXJsYXkgdG8gYmUgdmlzaWJsZS4K
ICAgICBhcmdMaXN0LmFwcGVuZChKU0M6OmpzQm9vbGVhbighbV9zbmFwc2hvdEltYWdlKSk7CiAK
ICAgICAvLyBJdCBpcyBleHBlY3RlZCB0aGUgSlMgZmlsZSBwcm92aWRlcyBhIGNyZWF0ZU92ZXJs
YXkoc2hhZG93Um9vdCwgdGl0bGUsIHN1YnRpdGxlKSBmdW5jdGlvbi4KLSAgICBKU0M6OkpTT2Jq
ZWN0KiBvdmVybGF5ID0gZ2xvYmFsT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJjcmVhdGVPdmVybGF5IikpLnRvT2JqZWN0KGV4ZWMpOworICAgIGF1
dG8qIG92ZXJsYXkgPSBnbG9iYWxPYmplY3QuZ2V0KCZzdGF0ZSwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZzdGF0ZSwgImNyZWF0ZU92ZXJsYXkiKSkudG9PYmplY3QoJnN0YXRlKTsKICAg
ICBpZiAoIW92ZXJsYXkpIHsKICAgICAgICAgQVNTRVJUKHNjb3BlLmV4Y2VwdGlvbigpKTsKICAg
ICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOwotICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBv
dmVybGF5LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvdmVybGF5LCBjYWxsRGF0YSk7Cisg
ICAgYXV0byBjYWxsVHlwZSA9IG92ZXJsYXktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG92
ZXJsYXksIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9u
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSlNDOjpjYWxsKGV4ZWMsIG92ZXJsYXksIGNhbGxU
eXBlLCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0LCBhcmdMaXN0KTsKKyAgICBjYWxsKCZzdGF0ZSwg
b3ZlcmxheSwgY2FsbFR5cGUsIGNhbGxEYXRhLCAmZ2xvYmFsT2JqZWN0LCBhcmdMaXN0KTsKICAg
ICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogfQogCiBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OnBhcnRPZlNuYXBzaG90T3ZlcmxheShjb25zdCBOb2RlKiBub2RlKSBjb25zdAogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNlbGVjdG9yKCIuc25hcHNob3Qt
b3ZlcmxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIFNoYWRv
d1Jvb3QqIHNoYWRvdyA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKKyAgICBhdXRvKiBzaGFkb3cg
PSB1c2VyQWdlbnRTaGFkb3dSb290KCk7CiAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIW5vZGUpCkBAIC00NTMsNyArNDEwLDcgQEAgdm9pZCBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpyZXN0YXJ0U2ltaWxhclBsdWdJbnMoKQogCiAgICAgU3RyaW5nIHBs
dWdJbk9yaWdpbiA9IG1fbG9hZGVkVXJsLmhvc3QoKTsKICAgICBTdHJpbmcgbWltZVR5cGUgPSBs
b2FkZWRNaW1lVHlwZSgpOwotICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnRMaXN0IHNpbWlsYXJQ
bHVnaW5zOworICAgIFZlY3RvcjxSZWY8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4+IHNpbWlsYXJQ
bHVnaW5zOwogCiAgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNDgwLDEwICs0MzcsMTAgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZXN0YXJ0
U2ltaWxhclBsdWdJbnMoKQogICAgIH0KIH0KIAotdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojp1c2VyRGlkQ2xpY2tTbmFwc2hvdChQYXNzUmVmUHRyPE1vdXNlRXZlbnQ+IGV2ZW50LCBib29s
IGZvcndhcmRFdmVudCkKK3ZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXNlckRpZENsaWNr
U25hcHNob3QoTW91c2VFdmVudCYgZXZlbnQsIGJvb2wgZm9yd2FyZEV2ZW50KQogewogICAgIGlm
IChmb3J3YXJkRXZlbnQpCi0gICAgICAgIG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3Qg
PSBldmVudDsKKyAgICAgICAgbV9wZW5kaW5nQ2xpY2tFdmVudEZyb21TbmFwc2hvdCA9ICZldmVu
dDsKIAogICAgIFN0cmluZyBwbHVnSW5PcmlnaW4gPSBtX2xvYWRlZFVybC5ob3N0KCk7CiAgICAg
aWYgKGRvY3VtZW50KCkucGFnZSgpICYmICFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxT
Y2hlbWVBc0xvY2FsKGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5i
YXNlVVJMKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpICYmIGRvY3VtZW50
KCkucGFnZSgpLT5zZXR0aW5ncygpLmF1dG9zdGFydE9yaWdpblBsdWdJblNuYXBzaG90dGluZ0Vu
YWJsZWQoKSkKQEAgLTU0MiwxNCArNDk5LDEwIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRmlyZWQoKQogc3RhdGljIGJvb2wgZG9jdW1lbnRI
YWRSZWNlbnRVc2VyR2VzdHVyZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgZG91YmxlIGxh
c3RLbm93blVzZXJHZXN0dXJlVGltZXN0YW1wID0gZG9jdW1lbnQubGFzdEhhbmRsZWRVc2VyR2Vz
dHVyZVRpbWVzdGFtcCgpOwotCiAgICAgaWYgKGRvY3VtZW50LmZyYW1lKCkgIT0gJmRvY3VtZW50
LnBhZ2UoKS0+bWFpbkZyYW1lKCkgJiYgZG9jdW1lbnQucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1
bWVudCgpKQogICAgICAgICBsYXN0S25vd25Vc2VyR2VzdHVyZVRpbWVzdGFtcCA9IHN0ZDo6bWF4
KGxhc3RLbm93blVzZXJHZXN0dXJlVGltZXN0YW1wLCBkb2N1bWVudC5wYWdlKCktPm1haW5GcmFt
ZSgpLmRvY3VtZW50KCktPmxhc3RIYW5kbGVkVXNlckdlc3R1cmVUaW1lc3RhbXAoKSk7CiAKLSAg
ICBpZiAobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBsYXN0S25vd25Vc2VyR2VzdHVy
ZVRpbWVzdGFtcCA8IGF1dG9zdGFydFNvb25BZnRlclVzZXJHZXN0dXJlVGhyZXNob2xkKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBsYXN0S25vd25Vc2VyR2VzdHVyZVRpbWVzdGFtcCA8
IGF1dG9zdGFydFNvb25BZnRlclVzZXJHZXN0dXJlVGhyZXNob2xkOwogfQogCiB2b2lkIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNrU2l6ZUNoYW5nZUZvclNuYXBzaG90dGluZygpCkBAIC01
NTgsNyArNTExLDggQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NpemVDaGFu
Z2VGb3JTbmFwc2hvdHRpbmcoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX25lZWRzQ2hlY2tG
b3JTaXplQ2hhbmdlID0gZmFsc2U7Ci0gICAgTGF5b3V0UmVjdCBjb250ZW50Qm94UmVjdCA9IGRv
d25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKCkpLmNvbnRlbnRCb3hSZWN0KCk7CisKKyAgICBh
dXRvIGNvbnRlbnRCb3hSZWN0ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIoKSkuY29u
dGVudEJveFJlY3QoKTsKICAgICBpbnQgY29udGVudFdpZHRoID0gY29udGVudEJveFJlY3Qud2lk
dGgoKTsKICAgICBpbnQgY29udGVudEhlaWdodCA9IGNvbnRlbnRCb3hSZWN0LmhlaWdodCgpOwog
CkBAIC01NjgsNyArNTIyLDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1Np
emVDaGFuZ2VGb3JTbmFwc2hvdHRpbmcoKQogICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBv
cmlnaW5hbGx5IGF2b2lkZWQgc25hcHNob3R0aW5nIGJlY2F1c2UgaXQgd2FzIHNpemVkICVkeCVk
LiBOb3cgaXQgaXMgJWR4JWQuIFRlbGwgaXQgdG8gc25hcHNob3QuXG4iLCB0aGlzLCBtX3NpemVX
aGVuU25hcHNob3R0ZWQud2lkdGgoKSwgbV9zaXplV2hlblNuYXBzaG90dGVkLmhlaWdodCgpLCBj
b250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOwogICAgIHNldERpc3BsYXlTdGF0ZShXYWl0aW5n
Rm9yU25hcHNob3QpOwogICAgIG1fc25hcHNob3REZWNpc2lvbiA9IFNuYXBzaG90dGVkOwotICAg
IFdpZGdldCogd2lkZ2V0ID0gcGx1Z2luV2lkZ2V0KCk7CisgICAgYXV0byogd2lkZ2V0ID0gcGx1
Z2luV2lkZ2V0KCk7CiAgICAgaWYgKGlzPFBsdWdpblZpZXdCYXNlPih3aWRnZXQpKQogICAgICAg
ICBkb3duY2FzdDxQbHVnaW5WaWV3QmFzZT4oKndpZGdldCkuYmVnaW5TbmFwc2hvdHRpbmdSdW5u
aW5nUGx1Z2luKCk7CiB9CkBAIC01ODAsMjQgKzUzNCwyNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXMxMDBQZXJjZW50KExlbmd0aCBsZW5ndGgpCiAgICAgCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNT
bWFsbGVyVGhhblRpbnlTaXppbmdUaHJlc2hvbGQoY29uc3QgUmVuZGVyRW1iZWRkZWRPYmplY3Qm
IHJlbmRlcmVyKQogewotICAgIExheW91dFJlY3QgY29udGVudFJlY3QgPSByZW5kZXJlci5jb250
ZW50Qm94UmVjdCgpOworICAgIGF1dG8gY29udGVudFJlY3QgPSByZW5kZXJlci5jb250ZW50Qm94
UmVjdCgpOwogICAgIHJldHVybiBjb250ZW50UmVjdC53aWR0aCgpIDw9IHNpemluZ1RpbnlEaW1l
bnNpb25UaHJlc2hvbGQgfHwgY29udGVudFJlY3QuaGVpZ2h0KCkgPD0gc2l6aW5nVGlueURpbWVu
c2lvblRocmVzaG9sZDsKIH0KICAgICAKIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6aXNU
b3BMZXZlbEZ1bGxQYWdlUGx1Z2luKGNvbnN0IFJlbmRlckVtYmVkZGVkT2JqZWN0JiByZW5kZXJl
cikgY29uc3QKIHsKLSAgICBGcmFtZSYgZnJhbWUgPSAqZG9jdW1lbnQoKS5mcmFtZSgpOworICAg
IEFTU0VSVChkb2N1bWVudCgpLmZyYW1lKCkpOworICAgIGF1dG8mIGZyYW1lID0gKmRvY3VtZW50
KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7Ci0gICAg
SW50U2l6ZSB2aXNpYmxlU2l6ZSA9IGZyYW1lLnZpZXcoKS0+dmlzaWJsZVNpemUoKTsKLSAgICBM
YXlvdXRSZWN0IGNvbnRlbnRSZWN0ID0gcmVuZGVyZXIuY29udGVudEJveFJlY3QoKTsKKyAgICBh
dXRvIHZpc2libGVTaXplID0gZnJhbWUudmlldygpLT52aXNpYmxlU2l6ZSgpOworICAgIGF1dG8g
Y29udGVudFJlY3QgPSByZW5kZXJlci5jb250ZW50Qm94UmVjdCgpOwogICAgIGZsb2F0IGNvbnRl
bnRXaWR0aCA9IGNvbnRlbnRSZWN0LndpZHRoKCk7CiAgICAgZmxvYXQgY29udGVudEhlaWdodCA9
IGNvbnRlbnRSZWN0LmhlaWdodCgpOwogICAgIHJldHVybiBpczEwMFBlcmNlbnQoc3R5bGUud2lk
dGgoKSkgJiYgaXMxMDBQZXJjZW50KHN0eWxlLmhlaWdodCgpKSAmJiBjb250ZW50V2lkdGggKiBj
b250ZW50SGVpZ2h0ID4gdmlzaWJsZVNpemUuYXJlYSgpLnVuc2FmZUdldCgpICogc2l6aW5nRnVs
bFBhZ2VBcmVhUmF0aW9UaHJlc2hvbGQ7CiB9Ci0gICAgCisKIHZvaWQgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6Y2hlY2tTbmFwc2hvdFN0YXR1cygpCiB7CiAgICAgaWYgKCFpczxSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbj4oKnJlbmRlcmVyKCkpKSB7CkBAIC02MDgsNyArNTYzLDcgQEAgdm9pZCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NuYXBzaG90U3RhdHVzKCkKICAgICAKICAgICAv
LyBJZiB3aWR0aCBhbmQgaGVpZ2h0IHN0eWxlcyB3ZXJlIHByZXZpb3VzbHkgbm90IHNldCBhbmQg
d2UndmUgc25hcHNob3R0ZWQgdGhlIHBsdWdpbiB3ZSBtYXkgbmVlZCB0byByZXN0YXJ0IHRoZSBw
bHVnaW4gc28gdGhhdCBpdHMgc3RhdGUgY2FuIGJlIHVwZGF0ZWQgYXBwcm9wcmlhdGVseS4KICAg
ICBpZiAoIWRvY3VtZW50KCkucGFnZSgpLT5zZXR0aW5ncygpLnNuYXBzaG90QWxsUGx1Z0lucygp
ICYmIGRpc3BsYXlTdGF0ZSgpIDw9IERpc3BsYXlpbmdTbmFwc2hvdCAmJiAhbV9wbHVnSW5EaW1l
bnNpb25zU3BlY2lmaWVkKSB7Ci0gICAgICAgIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luJiByZW5k
ZXJlciA9IGRvd25jYXN0PFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPigqdGhpcy0+cmVuZGVyZXIo
KSk7CisgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4+KCp0aGlzLT5yZW5kZXJlcigpKTsKICAgICAgICAgaWYgKCFyZW5kZXJlci5zdHlsZSgp
LmxvZ2ljYWxXaWR0aCgpLmlzU3BlY2lmaWVkKCkgJiYgIXJlbmRlcmVyLnN0eWxlKCkubG9naWNh
bEhlaWdodCgpLmlzU3BlY2lmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIApA
QCAtNzEyLDcgKzY2Nyw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVM
b2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IFVSTCYgdXJsKQogICAgIH0KICAgICAKICAgICBh
dXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PigqdGhpcy0+cmVu
ZGVyZXIoKSk7Ci0gICAgTGF5b3V0UmVjdCBjb250ZW50UmVjdCA9IHJlbmRlcmVyLmNvbnRlbnRC
b3hSZWN0KCk7CisgICAgYXV0byBjb250ZW50UmVjdCA9IHJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0
KCk7CiAgICAgaW50IGNvbnRlbnRXaWR0aCA9IGNvbnRlbnRSZWN0LndpZHRoKCk7CiAgICAgaW50
IGNvbnRlbnRIZWlnaHQgPSBjb250ZW50UmVjdC5oZWlnaHQoKTsKICAgICAKQEAgLTc2MywxNSAr
NzE4LDEyIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJEaWRD
cmVhdGVQbHVnSW4oY29uc3QgV2lkZ2V0JiB3aWRnZXQpCiAKIHZvaWQgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiB7Ci0gICAgUmVuZGVy
RWxlbWVudCogciA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKHIgJiYgci0+aXNFbWJlZGRlZE9iamVj
dCgpKSB7Ci0gICAgICAgIGlmIChkaXNwbGF5U3RhdGUoKSA9PSBXYWl0aW5nRm9yU25hcHNob3Qg
JiYgaXM8TW91c2VFdmVudD4oZXZlbnQpICYmIGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCku
Y2xpY2tFdmVudCkgewotICAgICAgICAgICAgTW91c2VFdmVudCYgbW91c2VFdmVudCA9IGRvd25j
YXN0PE1vdXNlRXZlbnQ+KGV2ZW50KTsKLSAgICAgICAgICAgIGlmIChtb3VzZUV2ZW50LmJ1dHRv
bigpID09IExlZnRCdXR0b24pIHsKLSAgICAgICAgICAgICAgICB1c2VyRGlkQ2xpY2tTbmFwc2hv
dCgmbW91c2VFdmVudCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgbW91c2VFdmVudC5zZXREZWZh
dWx0SGFuZGxlZCgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAg
ICBpZiAoaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KHJlbmRlcmVyKCkpICYmIGRpc3BsYXlTdGF0
ZSgpID09IFdhaXRpbmdGb3JTbmFwc2hvdCAmJiBpczxNb3VzZUV2ZW50PihldmVudCkgJiYgZXZl
bnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CisgICAgICAgIGF1dG8mIG1v
dXNlRXZlbnQgPSBkb3duY2FzdDxNb3VzZUV2ZW50PihldmVudCk7CisgICAgICAgIGlmIChtb3Vz
ZUV2ZW50LmJ1dHRvbigpID09IExlZnRCdXR0b24pIHsKKyAgICAgICAgICAgIHVzZXJEaWRDbGlj
a1NuYXBzaG90KG1vdXNlRXZlbnQsIHRydWUpOworICAgICAgICAgICAgbW91c2VFdmVudC5zZXRE
ZWZhdWx0SGFuZGxlZCgpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQog
ICAgIEhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKQEAgLTgw
Miw2ICs3NTQsOCBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFsbG93ZWRUb0xvYWRQ
bHVnaW5Db250ZW50KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdAogCiBib29sIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OnJlcXVlc3RPYmplY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7CisgICAgQVNTRVJUKGRvY3VtZW50KCkuZnJhbWUo
KSk7CisKICAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiBtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtODEzLDggKzc2Nyw3IEBAIGJvb2wgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6cmVxdWVzdE9iamVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lCiAgICAgaWYgKEhUTUxQbHVnSW5FbGVtZW50OjpyZXF1ZXN0T2JqZWN0KHVybCwgbWlt
ZVR5cGUsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgCi0gICAgU3ViZnJhbWVMb2FkZXImIGxvYWRlciA9IGRvY3VtZW50KCkuZnJhbWUoKS0+bG9h
ZGVyKCkuc3ViZnJhbWVMb2FkZXIoKTsKLSAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RPYmplY3Qo
KnRoaXMsIHVybCwgZ2V0TmFtZUF0dHJpYnV0ZSgpLCBtaW1lVHlwZSwgcGFyYW1OYW1lcywgcGFy
YW1WYWx1ZXMpOworICAgIHJldHVybiBkb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLnN1YmZy
YW1lTG9hZGVyKCkucmVxdWVzdE9iamVjdCgqdGhpcywgdXJsLCBnZXROYW1lQXR0cmlidXRlKCks
IG1pbWVUeXBlLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgK
aW5kZXggOTJhZTYxMGQ1MDEwNjgxY2IxMDg5YzliNGU0ZTkzMDJmNDYzYWQ0ZC4uYTNmN2UxMDhj
ZjkyZTA1YTliYjhkYTRkYTY5MmFmNDAwZmQwNmE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5LCAyMDExLCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsMzQgKzI1LDI1IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKLWNsYXNzIEZyYW1l
TG9hZGVyOwotY2xhc3MgSW1hZ2U7CiBjbGFzcyBNb3VzZUV2ZW50OwotY2xhc3MgUmVuZGVyU3R5
bGU7Ci1jbGFzcyBXaWRnZXQ7CiAKLWVudW0gY2xhc3MgQ3JlYXRlUGx1Z2lucyB7Ci0gICAgTm8s
Ci0gICAgWWVzLAotfTsKK2VudW0gY2xhc3MgQ3JlYXRlUGx1Z2lucyB7IE5vLCBZZXMgfTsKIAog
Ly8gQmFzZSBjbGFzcyBmb3IgSFRNTEFwcGxldEVsZW1lbnQsIEhUTUxFbWJlZEVsZW1lbnQsIGFu
ZCBIVE1MT2JqZWN0RWxlbWVudC4KLS8vIEZJWE1FOiBTaG91bGQgSFRNTEFwcGxldEVsZW1lbnQg
aW5oZXJpdCBmcm9tIEhUTUxQbHVnSW5FbGVtZW50IGRpcmVjdGx5IGluc3RlYWQ/CisvLyBGSVhN
RTogUGVyaGFwcyBIVE1MQXBwbGV0RWxlbWVudCBzaG91bGQgaW5oZXJpdCBmcm9tIEhUTUxQbHVn
SW5FbGVtZW50IGRpcmVjdGx5IGluc3RlYWQuCiBjbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
IDogcHVibGljIEhUTUxQbHVnSW5FbGVtZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50KCk7CiAKICAgICBSZW5kZXJFbWJlZGRlZE9iamVjdCogcmVuZGVy
RW1iZWRkZWRPYmplY3QoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0RGlzcGxheVN0YXRlKERpc3Bs
YXlTdGF0ZSkgb3ZlcnJpZGU7Ci0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlV2lkZ2V0KENyZWF0
ZVBsdWdpbnMpID0gMDsKIAogICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3NlcnZpY2VUeXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7
IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFVSTCYgbG9hZGVkVXJsKCkgY29uc3QgeyByZXR1
cm4gbV9sb2FkZWRVcmw7IH0KIAotICAgIGNvbnN0IFN0cmluZyBsb2FkZWRNaW1lVHlwZSgpIGNv
bnN0CisgICAgU3RyaW5nIGxvYWRlZE1pbWVUeXBlKCkgY29uc3QKICAgICB7CiAgICAgICAgIFN0
cmluZyBtaW1lVHlwZSA9IHNlcnZpY2VUeXBlKCk7CiAgICAgICAgIGlmIChtaW1lVHlwZS5pc0Vt
cHR5KCkpCkBAIC02NCw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzV2lkZ2V0VXBk
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1dpZGdldFVwZGF0ZTsgfQogICAgIHZvaWQgc2V0
TmVlZHNXaWRnZXRVcGRhdGUoYm9vbCBuZWVkc1dpZGdldFVwZGF0ZSkgeyBtX25lZWRzV2lkZ2V0
VXBkYXRlID0gbmVlZHNXaWRnZXRVcGRhdGU7IH0KICAgICAKLSAgICB2b2lkIHVzZXJEaWRDbGlj
a1NuYXBzaG90KFBhc3NSZWZQdHI8TW91c2VFdmVudD4sIGJvb2wgZm9yd2FyZEV2ZW50KTsKKyAg
ICB2b2lkIHVzZXJEaWRDbGlja1NuYXBzaG90KE1vdXNlRXZlbnQmLCBib29sIGZvcndhcmRFdmVu
dCk7CiAgICAgdm9pZCBjaGVja1NuYXBzaG90U3RhdHVzKCk7CiAgICAgSW1hZ2UqIHNuYXBzaG90
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3NuYXBzaG90SW1hZ2UuZ2V0KCk7IH0KICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOwpAQCAtMTM4LDIxICsx
MjksMjMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVNuYXBzaG90VGltZXJGaXJlZCgpOwog
ICAgIGJvb2wgaXNUb3BMZXZlbEZ1bGxQYWdlUGx1Z2luKGNvbnN0IFJlbmRlckVtYmVkZGVkT2Jq
ZWN0JikgY29uc3Q7CiAKKyAgICB2b2lkIHNldERpc3BsYXlTdGF0ZShEaXNwbGF5U3RhdGUpIGZp
bmFsOworCiAgICAgVVJMIG1fbG9hZGVkVXJsOwotICAgIGJvb2wgbV9uZWVkc1dpZGdldFVwZGF0
ZTsKLSAgICBib29sIG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3M7CisgICAgYm9v
bCBtX25lZWRzV2lkZ2V0VXBkYXRlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbmVlZHNEb2N1bWVu
dEFjdGl2YXRpb25DYWxsYmFja3MgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBt
X3BlbmRpbmdDbGlja0V2ZW50RnJvbVNuYXBzaG90OwogICAgIERlZmVycmFibGVPbmVTaG90VGlt
ZXIgbV9zaW11bGF0ZWRNb3VzZUNsaWNrVGltZXI7CiAgICAgVGltZXIgbV9yZW1vdmVTbmFwc2hv
dFRpbWVyOwogICAgIFJlZlB0cjxJbWFnZT4gbV9zbmFwc2hvdEltYWdlOwotICAgIGJvb2wgbV9j
cmVhdGVkRHVyaW5nVXNlckdlc3R1cmU7Ci0gICAgYm9vbCBtX2lzUmVzdGFydGVkUGx1Z2luOwot
ICAgIGJvb2wgbV9uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZTsKLSAgICBib29sIG1fcGx1Z0luV2Fz
Q3JlYXRlZDsKLSAgICBib29sIG1fZGVmZXJyZWRQcm9tb3Rpb25Ub1ByaW1hcnlQbHVnSW47Cisg
ICAgYm9vbCBtX2NyZWF0ZWREdXJpbmdVc2VyR2VzdHVyZSB7IGZhbHNlIH07CisgICAgYm9vbCBt
X2lzUmVzdGFydGVkUGx1Z2luIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbmVlZHNDaGVja0ZvclNp
emVDaGFuZ2UgeyBmYWxzZSB9OworICAgIGJvb2wgbV9wbHVnSW5XYXNDcmVhdGVkIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1fZGVmZXJyZWRQcm9tb3Rpb25Ub1ByaW1hcnlQbHVnSW4geyBmYWxzZSB9
OwogICAgIEludFNpemUgbV9zaXplV2hlblNuYXBzaG90dGVkOwotICAgIFNuYXBzaG90RGVjaXNp
b24gbV9zbmFwc2hvdERlY2lzaW9uOwotICAgIGJvb2wgbV9wbHVnSW5EaW1lbnNpb25zU3BlY2lm
aWVkOworICAgIFNuYXBzaG90RGVjaXNpb24gbV9zbmFwc2hvdERlY2lzaW9uIHsgU25hcHNob3RO
b3RZZXREZWNpZGVkIH07CisgICAgYm9vbCBtX3BsdWdJbkRpbWVuc2lvbnNTcGVjaWZpZWQgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggZGI4NDFl
MzY0ZjFmZTNkZjk0OTI3Zjk1MzM0YzE3YzJlMjFhZDkzOS4uMzNmZTQzOTYwMmNjZDA3NTBhZTNj
M2NiMGM0ZDc4MGNmNzFiZWM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBS
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQogICAgIGlm
IChtb3VzZUV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCB8fCAobV9pc1Bv
dGVudGlhbE1vdXNlQWN0aXZhdGlvbiAmJiBtb3VzZUV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVz
KCkubW91c2V1cEV2ZW50KSkgewogICAgICAgICBtX2lzUG90ZW50aWFsTW91c2VBY3RpdmF0aW9u
ID0gZmFsc2U7CiAgICAgICAgIGJvb2wgY2xpY2tXYXNPbk92ZXJsYXkgPSBwbHVnSW5JbWFnZUVs
ZW1lbnQoKS5wYXJ0T2ZTbmFwc2hvdE92ZXJsYXkobW91c2VFdmVudC50YXJnZXQoKS0+dG9Ob2Rl
KCkpOwotICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS51c2VyRGlkQ2xpY2tTbmFwc2hvdCgm
bW91c2VFdmVudCwgIWNsaWNrV2FzT25PdmVybGF5KTsKKyAgICAgICAgcGx1Z0luSW1hZ2VFbGVt
ZW50KCkudXNlckRpZENsaWNrU25hcHNob3QobW91c2VFdmVudCwgIWNsaWNrV2FzT25PdmVybGF5
KTsKICAgICAgICAgbW91c2VFdmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0gZWxzZSBp
ZiAobW91c2VFdmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB7CiAg
ICAgICAgIG1faXNQb3RlbnRpYWxNb3VzZUFjdGl2YXRpb24gPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296870</attachid>
            <date>2016-12-11 10:38:44 -0800</date>
            <delta_ts>2016-12-11 11:31:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165742-20161211103758.patch</filename>
            <type>text/plain</type>
            <size>28795</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M4MDY2YTFmZGQyNTg0
ZDJhYzZkOGY2YjhkOTc5NzA2NDRmNTVlNy4uY2EyNjM5OWE1ZWIwNjgzYTIzMjI5MTc3NmU1M2Fk
YmE5ZjE0MWI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTEyLTExICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHNvbWUgcmVmaW5lbWVu
dHMgdG8gSFRNTFBsdWdJbkltYWdlRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NzQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOiBS
ZW1vdmVkIG1hbnkgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjp0aXRsZVRl
eHQpOiBVc2UgSGFzaE1hcDo6ZW5zdXJlLCBjb3JyZWN0IGFyZ3VtZW50IHR5cGVzLgorICAgICAg
ICAoV2ViQ29yZTo6c3VidGl0bGVUZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KTogTW92ZWQKKyAgICAg
ICAgaW5pdGlhbGl6YXRpb24gb2YgbW9zdCBzY2FsYXJzIHRvIHRoZSBjbGFzcyBkZWZpbml0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6aXNJbWFnZVR5cGUp
OiBVc2UgYXV0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6Ondv
dWxkTG9hZEFzUGx1Z0luKTogUmVtb3ZlZAorICAgICAgICB1bm5lZWRlZCBsb2NhbCB2YXJpYWJs
ZSBhbmQgaWYgc3RhdGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6d2lsbERldGFjaFJlbmRlcmVycyk6IFVzZSBhdXRvLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3QpOiBEbyBub3QgY2FsbAorICAg
ICAgICByZW5kZXJlciB0d2ljZSB1bm5lY2Vzc2FyaWx5LgorICAgICAgICAoV2ViQ29yZTo6cGx1
Z0luSW1hZ2VFbGVtZW50SXNvbGF0ZWRXb3JsZCk6IFVzZSBhdXRvLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6IFVz
ZSBhdXRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFydE9m
U25hcHNob3RPdmVybGF5KTogVXNlIGF1dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpyZXN0YXJ0U2ltaWxhclBsdWdJbnMpOiBHb3QgcmlkIG9mCisgICAgICAg
IHVubmVjZXNzYXJ5IHR5cGVkZWYuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Ojp1c2VyRGlkQ2xpY2tTbmFwc2hvdCk6IFRha2UgYQorICAgICAgICByZWZlcmVuY2Ug
cmF0aGVyIHRoYW4gUGFzc1JlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50SGFkUmVj
ZW50VXNlckdlc3R1cmUpOiBSZW1vdmVkIHVubmVlZGVkIGlmLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hlY2tTaXplQ2hhbmdlRm9yU25hcHNob3R0aW5nKTog
VXNlIGF1dG8uCisgICAgICAgIChXZWJDb3JlOjppc1NtYWxsZXJUaGFuVGlueVNpemluZ1RocmVz
aG9sZCk6IFVzZSBhdXRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6aXNUb3BMZXZlbEZ1bGxQYWdlUGx1Z2luKTogVXNlIGF1dG8uCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NuYXBzaG90U3RhdHVzKTogVXNlIGF1dG8u
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRl
cldpbGxDcmVhdGVQbHVnSW4pOiBHb3QgcmlkCisgICAgICAgIG9mIHVubmVjZXNzYXJ5IGxvY2Fs
IHZhcmlhYmxlLiBVc2UgYXV0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OnJlcXVlc3RPYmplY3QpOiBHb3QgcmlkIG9mIHVubmVjZXNzYXJ5CisgICAgICAgIGxv
Y2FsIHZhcmlhYmxlLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOiBV
cGRhdGVkIGZvciB0aGUgYWJvdmUuIFJlbW92ZWQgaW5jb3JyZWN0CisgICAgICAgIHVzZSBvZiBj
b25zdC4gSW5pdGlhbGl6ZWQgYWxsIHNjYWxhcnMuIE1hZGUgZnVuY3Rpb24gcHJpdmF0ZSBhbmQg
ZmluYWwuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmhhbmRsZUV2ZW50
KTogUGFzcyByZWZlcmVuY2UgaW5zdGVhZAorICAgICAgICBvZiBwb2ludGVyLgorCiAyMDE2LTEy
LTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIERPTSBz
aG91bGQgaGF2ZSBhbiBhZHZhbmNpbmcgd2F2ZWZyb250IG9wYXF1ZSByb290IGJhcnJpZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGE1
NjY3ZTgzOWNkZGFlYmVkNTcxM2I3MDExZGJlNjU3MTY3NWEzZDguLmZhMjM0N2I2MGE5NjJiNjA1
ZTNlNzk4NjUwYzEzMWE4YjJiMjVhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNSwyNSArMjUsMTcgQEAKICNpbmNsdWRlICJD
aHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkNvbnRlbnRT
ZWN1cml0eVBvbGljeS5oIgotI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiRXZlbnRIYW5k
bGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgotI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUxvYWRlci5oIgotI2luY2x1
ZGUgIkpTRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkpTU2hhZG93Um9vdC5oIgogI2lu
Y2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIk5vZGVM
aXN0LmgiCi0jaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlBsdWdJbkNsaWVudC5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCi0j
aW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5o
IgogI2luY2x1ZGUgIlJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VHJlZVVwZGF0ZXIuaCIKQEAgLTUyLDIyICs0NCwxMiBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0j
aW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlVHJlZVJlc29sdmVyLmgi
CiAjaW5jbHVkZSAiU3ViZnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+Ci0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQotdHlwZWRlZiBWZWN0b3I8UmVmPEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ+PiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50TGlzdDsKLXR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gTWltZVR5cGVUb0xvY2FsaXplZFN0cmluZ01hcDsK
LQogc3RhdGljIGNvbnN0IGludCBzaXppbmdUaW55RGltZW5zaW9uVGhyZXNob2xkID0gNDA7CiBz
dGF0aWMgY29uc3QgZmxvYXQgc2l6aW5nRnVsbFBhZ2VBcmVhUmF0aW9UaHJlc2hvbGQgPSAwLjk2
Owogc3RhdGljIGNvbnN0IGZsb2F0IGF1dG9zdGFydFNvb25BZnRlclVzZXJHZXN0dXJlVGhyZXNo
b2xkID0gNS4wOwpAQCAtNzksNTEgKzYxLDM4IEBAIHN0YXRpYyBjb25zdCBhdXRvIHNpbXVsYXRl
ZE1vdXNlQ2xpY2tUaW1lckRlbGF5ID0gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB7IDc1CiBz
dGF0aWMgY29uc3QgYXV0byByZW1vdmVTbmFwc2hvdFRpbWVyRGVsYXkgPSBzdGQ6OmNocm9ubzo6
bWlsbGlzZWNvbmRzIHsgMTUwMCB9OwogI2VuZGlmCiAKLXN0YXRpYyBjb25zdCBTdHJpbmcgdGl0
bGVUZXh0KFBhZ2UqIHBhZ2UsIFN0cmluZyBtaW1lVHlwZSkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TWltZVR5cGVUb0xvY2FsaXplZFN0cmluZ01hcD4gbWltZVR5cGVUb0xhYmVsVGl0
bGVNYXA7Ci0gICAgU3RyaW5nIHRpdGxlVGV4dCA9IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLmdl
dCgpLmdldChtaW1lVHlwZSk7Ci0gICAgaWYgKCF0aXRsZVRleHQuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gdGl0bGVUZXh0OwotCi0gICAgdGl0bGVUZXh0ID0gcGFnZS0+Y2hyb21lKCkuY2xp
ZW50KCkucGx1Z0luU3RhcnRMYWJlbFRpdGxlKG1pbWVUeXBlKTsKLSAgICBpZiAodGl0bGVUZXh0
LmlzRW1wdHkoKSkKLSAgICAgICAgdGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFRp
dGxlKCk7Ci0gICAgbWltZVR5cGVUb0xhYmVsVGl0bGVNYXAuZ2V0KCkuc2V0KG1pbWVUeXBlLCB0
aXRsZVRleHQpOwotICAgIHJldHVybiB0aXRsZVRleHQ7CitzdGF0aWMgY29uc3QgU3RyaW5nIHRp
dGxlVGV4dChQYWdlJiBwYWdlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIC8vIEZJ
WE1FOiBJdCdzIG5vdCBjb25zaXN0ZW50IHRvIGdldCBhIHN0cmluZyBmcm9tIHRoZSBwYWdlJ3Mg
Y2hyb21lIGNsaWVudCwgYnV0IHRoZW4gY2FjaGUgaXQgZ2xvYmFsbHkuCisgICAgLy8gSWYgaXQn
cyBnbG9iYWwsIGl0IHNob3VsZCBjb21lIGZyb20gZWxzZXdoZXJlLiBJZiBpdCdzIHBlci1wYWdl
IHRoZW4gaXQgc2hvdWxkIGJlIGNhY2hlZCBwZXIgcGFnZS4KKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwOwor
ICAgIHJldHVybiBtaW1lVHlwZVRvTGFiZWxUaXRsZU1hcC5nZXQoKS5lbnN1cmUobWltZVR5cGUs
IFsmXSB7CisgICAgICAgIGF1dG8gdGl0bGUgPSBwYWdlLmNocm9tZSgpLmNsaWVudCgpLnBsdWdJ
blN0YXJ0TGFiZWxUaXRsZShtaW1lVHlwZSk7CisgICAgICAgIGlmICghdGl0bGUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIHRpdGxlOworICAgICAgICByZXR1cm4gc25hcHNob3R0ZWRQ
bHVnSW5MYWJlbFRpdGxlKCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfTsKIAotc3RhdGlj
IGNvbnN0IFN0cmluZyBzdWJ0aXRsZVRleHQoUGFnZSogcGFnZSwgU3RyaW5nIG1pbWVUeXBlKQot
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNaW1lVHlwZVRvTG9jYWxpemVkU3RyaW5nTWFw
PiBtaW1lVHlwZVRvTGFiZWxTdWJ0aXRsZU1hcDsKLSAgICBTdHJpbmcgc3VidGl0bGVUZXh0ID0g
bWltZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuZ2V0KCkuZ2V0KG1pbWVUeXBlKTsKLSAgICBpZiAo
IXN1YnRpdGxlVGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzdWJ0aXRsZVRleHQ7Ci0K
LSAgICBzdWJ0aXRsZVRleHQgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5wbHVnSW5TdGFydExh
YmVsU3VidGl0bGUobWltZVR5cGUpOwotICAgIGlmIChzdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQot
ICAgICAgICBzdWJ0aXRsZVRleHQgPSBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsU3VidGl0bGUoKTsK
LSAgICBtaW1lVHlwZVRvTGFiZWxTdWJ0aXRsZU1hcC5nZXQoKS5zZXQobWltZVR5cGUsIHN1YnRp
dGxlVGV4dCk7Ci0gICAgcmV0dXJuIHN1YnRpdGxlVGV4dDsKK3N0YXRpYyBjb25zdCBTdHJpbmcg
c3VidGl0bGVUZXh0KFBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAg
Ly8gRklYTUU6IEl0J3Mgbm90IGNvbnNpc3RlbnQgdG8gZ2V0IGEgc3RyaW5nIGZyb20gdGhlIHBh
Z2UncyBjaHJvbWUgY2xpZW50LCBidXQgdGhlbiBjYWNoZSBpdCBnbG9iYWxseS4KKyAgICAvLyBJ
ZiBpdCdzIGdsb2JhbCwgaXQgc2hvdWxkIGNvbWUgZnJvbSBlbHNld2hlcmUuIElmIGl0J3MgcGVy
LXBhZ2UgdGhlbiBpdCBzaG91bGQgYmUgY2FjaGVkIHBlciBwYWdlLgorICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4gbWltZVR5cGVUb0xhYmVsU3VidGl0
bGVNYXA7CisgICAgcmV0dXJuIG1pbWVUeXBlVG9MYWJlbFN1YnRpdGxlTWFwLmdldCgpLmVuc3Vy
ZShtaW1lVHlwZSwgWyZdIHsKKyAgICAgICAgYXV0byBzdWJ0aXRsZSA9IHBhZ2UuY2hyb21lKCku
Y2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKG1pbWVUeXBlKTsKKyAgICAgICAgaWYg
KCFzdWJ0aXRsZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gc3VidGl0bGU7CisgICAg
ICAgIHJldHVybiBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsU3VidGl0bGUoKTsKKyAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CiB9OwogCiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgOiBIVE1MUGx1Z0luRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKLSAgICAvLyBtX25lZWRzV2lkZ2V0VXBkYXRlKCFjcmVhdGVkQnlQYXJzZXIp
IGFsbG93cyBIVE1MT2JqZWN0RWxlbWVudCB0byBkZWxheQotICAgIC8vIHdpZGdldCB1cGRhdGVz
IHVudGlsIGFmdGVyIGFsbCBjaGlsZHJlbiBhcmUgcGFyc2VkLiAgRm9yIEhUTUxFbWJlZEVsZW1l
bnQKLSAgICAvLyB0aGlzIGRlbGF5IGlzIHVubmVjZXNzYXJ5LCBidXQgaXQgaXMgc2ltcGxlciB0
byBtYWtlIGJvdGggY2xhc3NlcyBzaGFyZQotICAgIC8vIHRoZSBzYW1lIGNvZGVwYXRoIGluIHRo
aXMgY2xhc3MuCi0gICAgLCBtX25lZWRzV2lkZ2V0VXBkYXRlKCFjcmVhdGVkQnlQYXJzZXIpCi0g
ICAgLCBtX25lZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKGZhbHNlKQorICAgICwgbV9u
ZWVkc1dpZGdldFVwZGF0ZSghY3JlYXRlZEJ5UGFyc2VyKSAvLyBTZXQgdHJ1ZSBpbiBmaW5pc2hQ
YXJzaW5nQ2hpbGRyZW4uCiAgICAgLCBtX3NpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lcigqdGhpcywg
JkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckZpcmVkLCBz
aW11bGF0ZWRNb3VzZUNsaWNrVGltZXJEZWxheSkKICAgICAsIG1fcmVtb3ZlU25hcHNob3RUaW1l
cigqdGhpcywgJkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbW92ZVNuYXBzaG90VGltZXJGaXJl
ZCkKICAgICAsIG1fY3JlYXRlZER1cmluZ1VzZXJHZXN0dXJlKFNjcmlwdENvbnRyb2xsZXI6OnBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQotICAgICwgbV9pc1Jlc3RhcnRlZFBsdWdpbihmYWxzZSkK
LSAgICAsIG1fbmVlZHNDaGVja0ZvclNpemVDaGFuZ2UoZmFsc2UpCi0gICAgLCBtX3BsdWdJbldh
c0NyZWF0ZWQoZmFsc2UpCi0gICAgLCBtX2RlZmVycmVkUHJvbW90aW9uVG9QcmltYXJ5UGx1Z0lu
KGZhbHNlKQotICAgICwgbV9zbmFwc2hvdERlY2lzaW9uKFNuYXBzaG90Tm90WWV0RGVjaWRlZCkK
LSAgICAsIG1fcGx1Z0luRGltZW5zaW9uc1NwZWNpZmllZChmYWxzZSkKIHsKICAgICBzZXRIYXND
dXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsKIH0KQEAgLTE1MSw4ICsxMjAsNyBAQCB2b2lk
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnNldERpc3BsYXlTdGF0ZShEaXNwbGF5U3RhdGUgc3Rh
dGUpCiAKIFJlbmRlckVtYmVkZGVkT2JqZWN0KiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5k
ZXJFbWJlZGRlZE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgLy8gSFRNTE9iamVjdEVsZW1lbnQgYW5k
IEhUTUxFbWJlZEVsZW1lbnQgbWF5IHJldHVybiBhcmJpdHJhcnkgcmVuZGVyZXJzCi0gICAgLy8g
d2hlbiB1c2luZyBmYWxsYmFjayBjb250ZW50LgorICAgIC8vIEhUTUxPYmplY3RFbGVtZW50IGFu
ZCBIVE1MRW1iZWRFbGVtZW50IG1heSByZXR1cm4gYXJiaXRyYXJ5IHJlbmRlcmVycyB3aGVuIHVz
aW5nIGZhbGxiYWNrIGNvbnRlbnQuCiAgICAgcmV0dXJuIGlzPFJlbmRlckVtYmVkZGVkT2JqZWN0
PihyZW5kZXJlcigpKSA/IGRvd25jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PihyZW5kZXJlcigp
KSA6IG51bGxwdHI7CiB9CiAKQEAgLTE2MSwyNCArMTI5LDE4IEBAIGJvb2wgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6aXNJbWFnZVR5cGUoKQogICAgIGlmIChtX3NlcnZpY2VUeXBlLmlzRW1wdHko
KSAmJiBwcm90b2NvbElzKG1fdXJsLCAiZGF0YSIpKQogICAgICAgICBtX3NlcnZpY2VUeXBlID0g
bWltZVR5cGVGcm9tRGF0YVVSTChtX3VybCk7CiAKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9j
dW1lbnQoKS5mcmFtZSgpKSB7Ci0gICAgICAgIFVSTCBjb21wbGV0ZWRVUkwgPSBkb2N1bWVudCgp
LmNvbXBsZXRlVVJMKG1fdXJsKTsKLSAgICAgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS5jbGll
bnQoKS5vYmplY3RDb250ZW50VHlwZShjb21wbGV0ZWRVUkwsIG1fc2VydmljZVR5cGUpID09IE9i
amVjdENvbnRlbnRUeXBlOjpJbWFnZTsKLSAgICB9CisgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9j
dW1lbnQoKS5mcmFtZSgpKQorICAgICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgp
Lm9iamVjdENvbnRlbnRUeXBlKGRvY3VtZW50KCkuY29tcGxldGVVUkwobV91cmwpLCBtX3NlcnZp
Y2VUeXBlKSA9PSBPYmplY3RDb250ZW50VHlwZTo6SW1hZ2U7CiAKICAgICByZXR1cm4gSW1hZ2U6
OnN1cHBvcnRzVHlwZShtX3NlcnZpY2VUeXBlKTsKIH0KIAotLy8gV2UgZG9uJ3QgdXNlIG1fdXJs
LCBhcyBpdCBtYXkgbm90IGJlIHRoZSBmaW5hbCBVUkwgdGhhdCB0aGUgb2JqZWN0IGxvYWRzLAot
Ly8gZGVwZW5kaW5nIG9uIDxwYXJhbT4gdmFsdWVzLgorLy8gV2UgZG9uJ3QgdXNlIG1fdXJsLCBh
cyBpdCBtYXkgbm90IGJlIHRoZSBmaW5hbCBVUkwgdGhhdCB0aGUgb2JqZWN0IGxvYWRzLCBkZXBl
bmRpbmcgb24gPHBhcmFtPiB2YWx1ZXMuCiBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFs
bG93ZWRUb0xvYWRGcmFtZVVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVUkwgY29tcGxl
dGVVUkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7Ci0KLSAgICBpZiAoY29udGVudEZy
YW1lKCkgJiYgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwpCi0gICAgICAgICYmICFk
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzcyhjb250ZW50RG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIHByb3RvY29sSXNK
YXZhU2NyaXB0KGNvbXBsZXRlVVJMKSAmJiAhZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5j
YW5BY2Nlc3MoY29udGVudERvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gZG9jdW1lbnQoKS5mcmFtZSgpLT5pc1VSTEFsbG93
ZWQoY29tcGxldGVVUkwpOwogfQogCkBAIC0xOTAsMTEgKzE1Miw3IEBAIGJvb2wgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6d291bGRMb2FkQXNQbHVnSW4oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYKICAgICBVUkwgY29tcGxldGVkVVJMOwogICAgIGlmICghdXJsLmlzRW1wdHkoKSkK
ICAgICAgICAgY29tcGxldGVkVVJMID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpOwotCi0g
ICAgRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIo
KTsKLSAgICBpZiAoZnJhbWVMb2FkZXIuY2xpZW50KCkub2JqZWN0Q29udGVudFR5cGUoY29tcGxl
dGVkVVJMLCBzZXJ2aWNlVHlwZSkgPT0gT2JqZWN0Q29udGVudFR5cGU6OlBsdWdJbikKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBkb2N1bWVudCgp
LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLm9iamVjdENvbnRlbnRUeXBlKGNvbXBsZXRlZFVS
TCwgc2VydmljZVR5cGUpID09IE9iamVjdENvbnRlbnRUeXBlOjpQbHVnSW47CiB9CiAKIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBp
bnNlcnRpb25Qb3NpdGlvbikKQEAgLTIwNCw3ICsxNjIsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eQogICAgIGlmIChkaXNwbGF5U3RhdGUoKSA+PSBQcmVwYXJpbmdQbHVnaW5SZXBsYWNlbWVu
dCkKICAgICAgICAgcmV0dXJuIEhUTUxQbHVnSW5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0aW9uKTsKIAotICAgIC8vIE9uY2UgYSBQ
bHVnSW4gRWxlbWVudCBjcmVhdGVzIGl0cyByZW5kZXJlciwgaXQgbmVlZHMgdG8gYmUgdG9sZCB3
aGVuIHRoZSBEb2N1bWVudCBnb2VzCisgICAgLy8gT25jZSBhIHBsdWctaW4gZWxlbWVudCBjcmVh
dGVzIGl0cyByZW5kZXJlciwgaXQgbmVlZHMgdG8gYmUgdG9sZCB3aGVuIHRoZSBkb2N1bWVudCBn
b2VzCiAgICAgLy8gaW5hY3RpdmUgb3IgcmVhY3RpdmF0ZXMgc28gaXQgY2FuIGNsZWFyIHRoZSBy
ZW5kZXJlciBiZWZvcmUgZ29pbmcgaW50byB0aGUgcGFnZSBjYWNoZS4KICAgICBpZiAoIW1fbmVl
ZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MpIHsKICAgICAgICAgbV9uZWVkc0RvY3VtZW50
QWN0aXZhdGlvbkNhbGxiYWNrcyA9IHRydWU7CkBAIC0yMTcsOSArMTc1LDYgQEAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHkKICAgICAgICAgcmV0dXJuIFdURk1vdmUocmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4pOwogICAgIH0KIAotICAgIC8vIEZhbGxiYWNrIGNvbnRlbnQgYnJlYWtzIHRoZSBET00t
PlJlbmRlcmVyIGNsYXNzIHJlbGF0aW9uc2hpcCBvZiB0aGlzCi0gICAgLy8gY2xhc3MgYW5kIGFs
bCBzdXBlcmNsYXNzZXMgYmVjYXVzZSBjcmVhdGVPYmplY3Qgd29uJ3QgbmVjZXNzYXJpbHkKLSAg
ICAvLyByZXR1cm4gYSBSZW5kZXJFbWJlZGRlZE9iamVjdCBvciBSZW5kZXJXaWRnZXQuCiAgICAg
aWYgKHVzZUZhbGxiYWNrQ29udGVudCgpKQogICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6
Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAKQEAgLTI3OCw3ICsyMzMsNyBAQCB2
b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndpbGxEZXRhY2hSZW5kZXJlcnMoKQogICAgICAg
ICBzZXROZWVkc1dpZGdldFVwZGF0ZSh0cnVlKTsKICAgICB9CiAKLSAgICBXaWRnZXQqIHdpZGdl
dCA9IHBsdWdpbldpZGdldChQbHVnaW5Mb2FkaW5nUG9saWN5OjpEb05vdExvYWQpOworICAgIGF1
dG8qIHdpZGdldCA9IHBsdWdpbldpZGdldChQbHVnaW5Mb2FkaW5nUG9saWN5OjpEb05vdExvYWQp
OwogICAgIGlmIChpczxQbHVnaW5WaWV3QmFzZT4od2lkZ2V0KSkKICAgICAgICAgZG93bmNhc3Q8
UGx1Z2luVmlld0Jhc2U+KCp3aWRnZXQpLndpbGxEZXRhdGNoUmVuZGVyZXIoKTsKIApAQCAtMzA0
LDYgKzI1OSw4IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZmluaXNoUGFyc2luZ0No
aWxkcmVuKCkKICAgICBpZiAodXNlRmFsbGJhY2tDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIC8vIEhUTUxPYmplY3RFbGVtZW50IG5lZWRzIHRvIGRlbGF5IHdpZGdldCB1cGRhdGVz
IHVudGlsIGFmdGVyIGFsbCBjaGlsZHJlbiBhcmUgcGFyc2VkLAorICAgIC8vIEZvciBIVE1MRW1i
ZWRFbGVtZW50IHRoaXMgZGVsYXkgaXMgdW5uZWNlc3NhcnksIGJ1dCB0aGVyZSBpcyBubyBoYXJt
IGluIGRvaW5nIHRoZSBzYW1lLgogICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAg
IGlmIChpbkRvY3VtZW50KCkpCiAgICAgICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsK
QEAgLTM1MSwyMiArMzA4LDIyIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRl
U25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCiAKICAgICBtX3NuYXBzaG90SW1hZ2Ug
PSBpbWFnZTsKIAotICAgIGlmICghcmVuZGVyZXIoKSkKKyAgICBhdXRvKiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwotICAg
IGF1dG8mIHJlbmRlcmVyID0gKnRoaXMtPnJlbmRlcmVyKCk7CiAKLSAgICBpZiAoaXM8UmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4+KHJlbmRlcmVyKSkgewotICAgICAgICBkb3duY2FzdDxSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbj4ocmVuZGVyZXIpLnVwZGF0ZVNuYXBzaG90KGltYWdlKTsKKyAgICBp
ZiAoaXM8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgZG93
bmNhc3Q8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJlcikudXBkYXRlU25hcHNob3Qo
aW1hZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzPFJlbmRlckVtYmVk
ZGVkT2JqZWN0PihyZW5kZXJlcikpCi0gICAgICAgIHJlbmRlcmVyLnJlcGFpbnQoKTsKKyAgICBp
ZiAoaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KCpyZW5kZXJlcikpCisgICAgICAgIHJlbmRlcmVy
LT5yZXBhaW50KCk7CiB9CiAKIHN0YXRpYyBET01XcmFwcGVyV29ybGQmIHBsdWdJbkltYWdlRWxl
bWVudElzb2xhdGVkV29ybGQoKQogewotICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQmIGlzb2xh
dGVkV29ybGQgPSBET01XcmFwcGVyV29ybGQ6OmNyZWF0ZShjb21tb25WTSgpKS5sZWFrUmVmKCk7
CisgICAgc3RhdGljIGF1dG8mIGlzb2xhdGVkV29ybGQgPSBET01XcmFwcGVyV29ybGQ6OmNyZWF0
ZShjb21tb25WTSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIGlzb2xhdGVkV29ybGQ7CiB9CiAK
QEAgLTM3Niw3ICszMzMsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZEFkZFVz
ZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKICAgICBpZiAoZGlzcGxheVN0YXRl
KCkgPj0gUHJlcGFyaW5nUGx1Z2luUmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKKyAgICBhdXRvKiBwYWdlID0gZG9jdW1l
bnQoKS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTM4Nyw0
NiArMzQ0LDQ2IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50
U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQogICAgIAogICAgIFN0cmluZyBtaW1lVHlwZSA9
IGxvYWRlZE1pbWVUeXBlKCk7CiAKLSAgICBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQg
PSBwbHVnSW5JbWFnZUVsZW1lbnRJc29sYXRlZFdvcmxkKCk7CisgICAgYXV0byYgaXNvbGF0ZWRX
b3JsZCA9IHBsdWdJbkltYWdlRWxlbWVudElzb2xhdGVkV29ybGQoKTsKICAgICBkb2N1bWVudCgp
LmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChpc29sYXRlZFdvcmxkKTsKIAotICAgIFNjcmlw
dENvbnRyb2xsZXImIHNjcmlwdENvbnRyb2xsZXIgPSBkb2N1bWVudCgpLmZyYW1lKCktPnNjcmlw
dCgpOwotICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0M6OmpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdENvbnRyb2xsZXIuZ2xvYmFsT2JqZWN0KGlzb2xhdGVk
V29ybGQpKTsKKyAgICBhdXRvJiBzY3JpcHRDb250cm9sbGVyID0gZG9jdW1lbnQoKS5mcmFtZSgp
LT5zY3JpcHQoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzY3JpcHRDb250cm9sbGVyLmdsb2JhbE9iamVjdChpc29sYXRlZFdvcmxk
KSk7CiAKLSAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvJiB2
bSA9IGdsb2JhbE9iamVjdC52bSgpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICBKU0M6OkV4ZWNT
dGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIGF1dG8mIHN0YXRl
ID0gKmdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCk7CiAKICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ0xpc3Q7Ci0gICAgYXJnTGlzdC5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QsIHJvb3QpKTsKLSAgICBhcmdMaXN0LmFwcGVuZChqc1N0cmluZyhleGVjLCB0aXRsZVRleHQo
cGFnZSwgbWltZVR5cGUpKSk7Ci0gICAgYXJnTGlzdC5hcHBlbmQoanNTdHJpbmcoZXhlYywgc3Vi
dGl0bGVUZXh0KHBhZ2UsIG1pbWVUeXBlKSkpOworICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMoJnN0
YXRlLCAmZ2xvYmFsT2JqZWN0LCByb290KSk7CisgICAgYXJnTGlzdC5hcHBlbmQoanNTdHJpbmco
JnN0YXRlLCB0aXRsZVRleHQoKnBhZ2UsIG1pbWVUeXBlKSkpOworICAgIGFyZ0xpc3QuYXBwZW5k
KGpzU3RyaW5nKCZzdGF0ZSwgc3VidGl0bGVUZXh0KCpwYWdlLCBtaW1lVHlwZSkpKTsKICAgICAK
ICAgICAvLyBUaGlzIHBhcmFtZXRlciBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBzbmFw
c2hvdCBvdmVybGF5IHNob3VsZCBhbHdheXMgYmUgdmlzaWJsZSBvdmVyIHRoZSBwbHVnaW4gc25h
cHNob3QuCiAgICAgLy8gSWYgbm8gc25hcHNob3Qgd2FzIGZvdW5kIHRoZW4gd2Ugd2FudCB0aGUg
b3ZlcmxheSB0byBiZSB2aXNpYmxlLgogICAgIGFyZ0xpc3QuYXBwZW5kKEpTQzo6anNCb29sZWFu
KCFtX3NuYXBzaG90SW1hZ2UpKTsKIAogICAgIC8vIEl0IGlzIGV4cGVjdGVkIHRoZSBKUyBmaWxl
IHByb3ZpZGVzIGEgY3JlYXRlT3ZlcmxheShzaGFkb3dSb290LCB0aXRsZSwgc3VidGl0bGUpIGZ1
bmN0aW9uLgotICAgIEpTQzo6SlNPYmplY3QqIG92ZXJsYXkgPSBnbG9iYWxPYmplY3QtPmdldChl
eGVjLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNyZWF0ZU92ZXJsYXkiKSku
dG9PYmplY3QoZXhlYyk7CisgICAgYXV0byogb3ZlcmxheSA9IGdsb2JhbE9iamVjdC5nZXQoJnN0
YXRlLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiY3JlYXRlT3ZlcmxheSIp
KS50b09iamVjdCgmc3RhdGUpOwogICAgIGlmICghb3ZlcmxheSkgewogICAgICAgICBBU1NFUlQo
c2NvcGUuZXhjZXB0aW9uKCkpOwogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlND
OjpDYWxsVHlwZSBjYWxsVHlwZSA9IG92ZXJsYXktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRh
KG92ZXJsYXksIGNhbGxEYXRhKTsKKyAgICBhdXRvIGNhbGxUeXBlID0gb3ZlcmxheS0+bWV0aG9k
VGFibGUoKS0+Z2V0Q2FsbERhdGEob3ZlcmxheSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlw
ZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU0M6OmNh
bGwoZXhlYywgb3ZlcmxheSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3QsIGFyZ0xp
c3QpOworICAgIGNhbGwoJnN0YXRlLCBvdmVybGF5LCBjYWxsVHlwZSwgY2FsbERhdGEsICZnbG9i
YWxPYmplY3QsIGFyZ0xpc3QpOwogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiB9CiAKIGJv
b2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFydE9mU25hcHNob3RPdmVybGF5KGNvbnN0IE5v
ZGUqIG5vZGUpIGNvbnN0CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gc2VsZWN0b3IoIi5zbmFwc2hvdC1vdmVybGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7Ci0gICAgU2hhZG93Um9vdCogc2hhZG93ID0gdXNlckFnZW50U2hhZG93Um9v
dCgpOworICAgIGF1dG8qIHNoYWRvdyA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKICAgICBpZiAo
IXNoYWRvdykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghbm9kZSkKQEAgLTQ1NCw3
ICs0MTEsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlc3RhcnRTaW1pbGFyUGx1
Z0lucygpCiAKICAgICBTdHJpbmcgcGx1Z0luT3JpZ2luID0gbV9sb2FkZWRVcmwuaG9zdCgpOwog
ICAgIFN0cmluZyBtaW1lVHlwZSA9IGxvYWRlZE1pbWVUeXBlKCk7Ci0gICAgSFRNTFBsdWdJbklt
YWdlRWxlbWVudExpc3Qgc2ltaWxhclBsdWdpbnM7CisgICAgVmVjdG9yPFJlZjxIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50Pj4gc2ltaWxhclBsdWdpbnM7CiAKICAgICBpZiAoIWRvY3VtZW50KCkucGFn
ZSgpKQogICAgICAgICByZXR1cm47CkBAIC00ODEsMTAgKzQzOCwxMCBAQCB2b2lkIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OnJlc3RhcnRTaW1pbGFyUGx1Z0lucygpCiAgICAgfQogfQogCi12b2lk
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KFBhc3NSZWZQdHI8
TW91c2VFdmVudD4gZXZlbnQsIGJvb2wgZm9yd2FyZEV2ZW50KQordm9pZCBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50Ojp1c2VyRGlkQ2xpY2tTbmFwc2hvdChNb3VzZUV2ZW50JiBldmVudCwgYm9vbCBm
b3J3YXJkRXZlbnQpCiB7CiAgICAgaWYgKGZvcndhcmRFdmVudCkKLSAgICAgICAgbV9wZW5kaW5n
Q2xpY2tFdmVudEZyb21TbmFwc2hvdCA9IGV2ZW50OworICAgICAgICBtX3BlbmRpbmdDbGlja0V2
ZW50RnJvbVNuYXBzaG90ID0gJmV2ZW50OwogCiAgICAgU3RyaW5nIHBsdWdJbk9yaWdpbiA9IG1f
bG9hZGVkVXJsLmhvc3QoKTsKICAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkgJiYgIVNjaGVtZVJl
Z2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoZG9jdW1lbnQoKS5wYWdlKCktPm1h
aW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91
dENvcHlpbmcoKSkgJiYgZG9jdW1lbnQoKS5wYWdlKCktPnNldHRpbmdzKCkuYXV0b3N0YXJ0T3Jp
Z2luUGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCgpKQpAQCAtNTQzLDE0ICs1MDAsMTAgQEAgdm9p
ZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJGaXJlZCgp
CiBzdGF0aWMgYm9vbCBkb2N1bWVudEhhZFJlY2VudFVzZXJHZXN0dXJlKERvY3VtZW50JiBkb2N1
bWVudCkKIHsKICAgICBkb3VibGUgbGFzdEtub3duVXNlckdlc3R1cmVUaW1lc3RhbXAgPSBkb2N1
bWVudC5sYXN0SGFuZGxlZFVzZXJHZXN0dXJlVGltZXN0YW1wKCk7Ci0KICAgICBpZiAoZG9jdW1l
bnQuZnJhbWUoKSAhPSAmZG9jdW1lbnQucGFnZSgpLT5tYWluRnJhbWUoKSAmJiBkb2N1bWVudC5w
YWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCiAgICAgICAgIGxhc3RLbm93blVzZXJHZXN0
dXJlVGltZXN0YW1wID0gc3RkOjptYXgobGFzdEtub3duVXNlckdlc3R1cmVUaW1lc3RhbXAsIGRv
Y3VtZW50LnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+bGFzdEhhbmRsZWRVc2VyR2Vz
dHVyZVRpbWVzdGFtcCgpKTsKIAotICAgIGlmIChtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSAtIGxhc3RLbm93blVzZXJHZXN0dXJlVGltZXN0YW1wIDwgYXV0b3N0YXJ0U29vbkFmdGVyVXNl
ckdlc3R1cmVUaHJlc2hvbGQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIGxhc3RLbm93
blVzZXJHZXN0dXJlVGltZXN0YW1wIDwgYXV0b3N0YXJ0U29vbkFmdGVyVXNlckdlc3R1cmVUaHJl
c2hvbGQ7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hlY2tTaXplQ2hhbmdl
Rm9yU25hcHNob3R0aW5nKCkKQEAgLTU1OSw3ICs1MTIsOCBAQCB2b2lkIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OmNoZWNrU2l6ZUNoYW5nZUZvclNuYXBzaG90dGluZygpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fbmVlZHNDaGVja0ZvclNpemVDaGFuZ2UgPSBmYWxzZTsKLSAgICBMYXlvdXRS
ZWN0IGNvbnRlbnRCb3hSZWN0ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIoKSkuY29u
dGVudEJveFJlY3QoKTsKKworICAgIGF1dG8gY29udGVudEJveFJlY3QgPSBkb3duY2FzdDxSZW5k
ZXJCb3g+KCpyZW5kZXJlcigpKS5jb250ZW50Qm94UmVjdCgpOwogICAgIGludCBjb250ZW50V2lk
dGggPSBjb250ZW50Qm94UmVjdC53aWR0aCgpOwogICAgIGludCBjb250ZW50SGVpZ2h0ID0gY29u
dGVudEJveFJlY3QuaGVpZ2h0KCk7CiAKQEAgLTU2OSw3ICs1MjMsNyBAQCB2b2lkIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OmNoZWNrU2l6ZUNoYW5nZUZvclNuYXBzaG90dGluZygpCiAgICAgTE9H
KFBsdWdpbnMsICIlcCBQbHVnLWluIG9yaWdpbmFsbHkgYXZvaWRlZCBzbmFwc2hvdHRpbmcgYmVj
YXVzZSBpdCB3YXMgc2l6ZWQgJWR4JWQuIE5vdyBpdCBpcyAlZHglZC4gVGVsbCBpdCB0byBzbmFw
c2hvdC5cbiIsIHRoaXMsIG1fc2l6ZVdoZW5TbmFwc2hvdHRlZC53aWR0aCgpLCBtX3NpemVXaGVu
U25hcHNob3R0ZWQuaGVpZ2h0KCksIGNvbnRlbnRXaWR0aCwgY29udGVudEhlaWdodCk7CiAgICAg
c2V0RGlzcGxheVN0YXRlKFdhaXRpbmdGb3JTbmFwc2hvdCk7CiAgICAgbV9zbmFwc2hvdERlY2lz
aW9uID0gU25hcHNob3R0ZWQ7Ci0gICAgV2lkZ2V0KiB3aWRnZXQgPSBwbHVnaW5XaWRnZXQoKTsK
KyAgICBhdXRvKiB3aWRnZXQgPSBwbHVnaW5XaWRnZXQoKTsKICAgICBpZiAoaXM8UGx1Z2luVmll
d0Jhc2U+KHdpZGdldCkpCiAgICAgICAgIGRvd25jYXN0PFBsdWdpblZpZXdCYXNlPigqd2lkZ2V0
KS5iZWdpblNuYXBzaG90dGluZ1J1bm5pbmdQbHVnaW4oKTsKIH0KQEAgLTU4MSwyNCArNTM1LDI1
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpczEwMFBlcmNlbnQoTGVuZ3RoIGxlbmd0aCkKICAgICAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NtYWxsZXJUaGFuVGlueVNpemluZ1RocmVzaG9sZChjb25z
dCBSZW5kZXJFbWJlZGRlZE9iamVjdCYgcmVuZGVyZXIpCiB7Ci0gICAgTGF5b3V0UmVjdCBjb250
ZW50UmVjdCA9IHJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCk7CisgICAgYXV0byBjb250ZW50UmVj
dCA9IHJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCk7CiAgICAgcmV0dXJuIGNvbnRlbnRSZWN0Lndp
ZHRoKCkgPD0gc2l6aW5nVGlueURpbWVuc2lvblRocmVzaG9sZCB8fCBjb250ZW50UmVjdC5oZWln
aHQoKSA8PSBzaXppbmdUaW55RGltZW5zaW9uVGhyZXNob2xkOwogfQogICAgIAogYm9vbCBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50Ojppc1RvcExldmVsRnVsbFBhZ2VQbHVnaW4oY29uc3QgUmVuZGVy
RW1iZWRkZWRPYmplY3QmIHJlbmRlcmVyKSBjb25zdAogewotICAgIEZyYW1lJiBmcmFtZSA9ICpk
b2N1bWVudCgpLmZyYW1lKCk7CisgICAgQVNTRVJUKGRvY3VtZW50KCkuZnJhbWUoKSk7CisgICAg
YXV0byYgZnJhbWUgPSAqZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUuaXNNYWlu
RnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGF1dG8mIHN0eWxlID0g
cmVuZGVyZXIuc3R5bGUoKTsKLSAgICBJbnRTaXplIHZpc2libGVTaXplID0gZnJhbWUudmlldygp
LT52aXNpYmxlU2l6ZSgpOwotICAgIExheW91dFJlY3QgY29udGVudFJlY3QgPSByZW5kZXJlci5j
b250ZW50Qm94UmVjdCgpOworICAgIGF1dG8gdmlzaWJsZVNpemUgPSBmcmFtZS52aWV3KCktPnZp
c2libGVTaXplKCk7CisgICAgYXV0byBjb250ZW50UmVjdCA9IHJlbmRlcmVyLmNvbnRlbnRCb3hS
ZWN0KCk7CiAgICAgZmxvYXQgY29udGVudFdpZHRoID0gY29udGVudFJlY3Qud2lkdGgoKTsKICAg
ICBmbG9hdCBjb250ZW50SGVpZ2h0ID0gY29udGVudFJlY3QuaGVpZ2h0KCk7CiAgICAgcmV0dXJu
IGlzMTAwUGVyY2VudChzdHlsZS53aWR0aCgpKSAmJiBpczEwMFBlcmNlbnQoc3R5bGUuaGVpZ2h0
KCkpICYmIGNvbnRlbnRXaWR0aCAqIGNvbnRlbnRIZWlnaHQgPiB2aXNpYmxlU2l6ZS5hcmVhKCku
dW5zYWZlR2V0KCkgKiBzaXppbmdGdWxsUGFnZUFyZWFSYXRpb1RocmVzaG9sZDsKIH0KLSAgICAK
Kwogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NuYXBzaG90U3RhdHVzKCkKIHsK
ICAgICBpZiAoIWlzPFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPigqcmVuZGVyZXIoKSkpIHsKQEAg
LTYwOSw3ICs1NjQsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNrU25hcHNo
b3RTdGF0dXMoKQogICAgIAogICAgIC8vIElmIHdpZHRoIGFuZCBoZWlnaHQgc3R5bGVzIHdlcmUg
cHJldmlvdXNseSBub3Qgc2V0IGFuZCB3ZSd2ZSBzbmFwc2hvdHRlZCB0aGUgcGx1Z2luIHdlIG1h
eSBuZWVkIHRvIHJlc3RhcnQgdGhlIHBsdWdpbiBzbyB0aGF0IGl0cyBzdGF0ZSBjYW4gYmUgdXBk
YXRlZCBhcHByb3ByaWF0ZWx5LgogICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCktPnNldHRpbmdz
KCkuc25hcHNob3RBbGxQbHVnSW5zKCkgJiYgZGlzcGxheVN0YXRlKCkgPD0gRGlzcGxheWluZ1Nu
YXBzaG90ICYmICFtX3BsdWdJbkRpbWVuc2lvbnNTcGVjaWZpZWQpIHsKLSAgICAgICAgUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4+KCp0aGlzLT5yZW5kZXJlcigpKTsKKyAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3du
Y2FzdDxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4oKnRoaXMtPnJlbmRlcmVyKCkpOwogICAgICAg
ICBpZiAoIXJlbmRlcmVyLnN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNTcGVjaWZpZWQoKSAmJiAh
cmVuZGVyZXIuc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCkBAIC03MTMsNyArNjY4LDcgQEAgdm9pZCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4oY29uc3QgVVJMJiB1
cmwpCiAgICAgfQogICAgIAogICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyRW1i
ZWRkZWRPYmplY3Q+KCp0aGlzLT5yZW5kZXJlcigpKTsKLSAgICBMYXlvdXRSZWN0IGNvbnRlbnRS
ZWN0ID0gcmVuZGVyZXIuY29udGVudEJveFJlY3QoKTsKKyAgICBhdXRvIGNvbnRlbnRSZWN0ID0g
cmVuZGVyZXIuY29udGVudEJveFJlY3QoKTsKICAgICBpbnQgY29udGVudFdpZHRoID0gY29udGVu
dFJlY3Qud2lkdGgoKTsKICAgICBpbnQgY29udGVudEhlaWdodCA9IGNvbnRlbnRSZWN0LmhlaWdo
dCgpOwogICAgIApAQCAtNzY0LDE1ICs3MTksMTIgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbihjb25zdCBXaWRnZXQmIHdpZGdldCkK
IAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
JiBldmVudCkKIHsKLSAgICBSZW5kZXJFbGVtZW50KiByID0gcmVuZGVyZXIoKTsKLSAgICBpZiAo
ciAmJiByLT5pc0VtYmVkZGVkT2JqZWN0KCkpIHsKLSAgICAgICAgaWYgKGRpc3BsYXlTdGF0ZSgp
ID09IFdhaXRpbmdGb3JTbmFwc2hvdCAmJiBpczxNb3VzZUV2ZW50PihldmVudCkgJiYgZXZlbnQu
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgICAgICBNb3VzZUV2
ZW50JiBtb3VzZUV2ZW50ID0gZG93bmNhc3Q8TW91c2VFdmVudD4oZXZlbnQpOwotICAgICAgICAg
ICAgaWYgKG1vdXNlRXZlbnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewotICAgICAgICAgICAg
ICAgIHVzZXJEaWRDbGlja1NuYXBzaG90KCZtb3VzZUV2ZW50LCB0cnVlKTsKLSAgICAgICAgICAg
ICAgICBtb3VzZUV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQorICAgIGlmIChpczxSZW5kZXJFbWJlZGRlZE9iamVjdD4ocmVu
ZGVyZXIoKSkgJiYgZGlzcGxheVN0YXRlKCkgPT0gV2FpdGluZ0ZvclNuYXBzaG90ICYmIGlzPE1v
dXNlRXZlbnQ+KGV2ZW50KSAmJiBldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQpIHsKKyAgICAgICAgYXV0byYgbW91c2VFdmVudCA9IGRvd25jYXN0PE1vdXNlRXZlbnQ+KGV2
ZW50KTsKKyAgICAgICAgaWYgKG1vdXNlRXZlbnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewor
ICAgICAgICAgICAgdXNlckRpZENsaWNrU25hcHNob3QobW91c2VFdmVudCwgdHJ1ZSk7CisgICAg
ICAgICAgICBtb3VzZUV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgSFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoZXZlbnQpOwpAQCAtODAzLDYgKzc1NSw4IEBAIGJvb2wgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6YWxsb3dlZFRvTG9hZFBsdWdpbkNvbnRlbnQoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0CiAKIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVxdWVzdE9iamVjdChjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKKyAgICBB
U1NFUlQoZG9jdW1lbnQoKS5mcmFtZSgpKTsKKwogICAgIGlmICh1cmwuaXNFbXB0eSgpICYmIG1p
bWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04MTQsOCArNzY4
LDcgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZXF1ZXN0T2JqZWN0KGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWUKICAgICBpZiAoSFRNTFBsdWdJbkVsZW1lbnQ6
OnJlcXVlc3RPYmplY3QodXJsLCBtaW1lVHlwZSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICBTdWJmcmFtZUxvYWRlciYgbG9hZGVyID0g
ZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpOwotICAgIHJldHVy
biBsb2FkZXIucmVxdWVzdE9iamVjdCgqdGhpcywgdXJsLCBnZXROYW1lQXR0cmlidXRlKCksIG1p
bWVUeXBlLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7CisgICAgcmV0dXJuIGRvY3VtZW50KCku
ZnJhbWUoKS0+bG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIoKS5yZXF1ZXN0T2JqZWN0KCp0aGlzLCB1
cmwsIGdldE5hbWVBdHRyaWJ1dGUoKSwgbWltZVR5cGUsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVz
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuaAppbmRleCA5MmFlNjEwZDUwMTA2ODFjYjEwODljOWI0ZTRl
OTMwMmY0NjNhZDRkLi5hM2Y3ZTEwOGNmOTJlMDVhOWJiOGRhNGRhNjkyYWY0MDBmZDA2YTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0yNSwzNCArMjUsMjUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTElt
YWdlTG9hZGVyOwotY2xhc3MgRnJhbWVMb2FkZXI7Ci1jbGFzcyBJbWFnZTsKIGNsYXNzIE1vdXNl
RXZlbnQ7Ci1jbGFzcyBSZW5kZXJTdHlsZTsKLWNsYXNzIFdpZGdldDsKIAotZW51bSBjbGFzcyBD
cmVhdGVQbHVnaW5zIHsKLSAgICBObywKLSAgICBZZXMsCi19OworZW51bSBjbGFzcyBDcmVhdGVQ
bHVnaW5zIHsgTm8sIFllcyB9OwogCiAvLyBCYXNlIGNsYXNzIGZvciBIVE1MQXBwbGV0RWxlbWVu
dCwgSFRNTEVtYmVkRWxlbWVudCwgYW5kIEhUTUxPYmplY3RFbGVtZW50LgotLy8gRklYTUU6IFNo
b3VsZCBIVE1MQXBwbGV0RWxlbWVudCBpbmhlcml0IGZyb20gSFRNTFBsdWdJbkVsZW1lbnQgZGly
ZWN0bHkgaW5zdGVhZD8KKy8vIEZJWE1FOiBQZXJoYXBzIEhUTUxBcHBsZXRFbGVtZW50IHNob3Vs
ZCBpbmhlcml0IGZyb20gSFRNTFBsdWdJbkVsZW1lbnQgZGlyZWN0bHkgaW5zdGVhZC4KIGNsYXNz
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQgOiBwdWJsaWMgSFRNTFBsdWdJbkVsZW1lbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgfkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQoKTsKIAogICAgIFJlbmRl
ckVtYmVkZGVkT2JqZWN0KiByZW5kZXJFbWJlZGRlZE9iamVjdCgpIGNvbnN0OwogCi0gICAgdm9p
ZCBzZXREaXNwbGF5U3RhdGUoRGlzcGxheVN0YXRlKSBvdmVycmlkZTsKLQogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVXaWRnZXQoQ3JlYXRlUGx1Z2lucykgPSAwOwogCiAgICAgY29uc3QgU3RyaW5n
JiBzZXJ2aWNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVR5cGU7IH0KICAgICBjb25z
dCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgVVJMJiBs
b2FkZWRVcmwoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlZFVybDsgfQogCi0gICAgY29uc3QgU3Ry
aW5nIGxvYWRlZE1pbWVUeXBlKCkgY29uc3QKKyAgICBTdHJpbmcgbG9hZGVkTWltZVR5cGUoKSBj
b25zdAogICAgIHsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gc2VydmljZVR5cGUoKTsKICAg
ICAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKQEAgLTY0LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgbmVlZHNXaWRnZXRVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX25lZWRzV2lkZ2V0
VXBkYXRlOyB9CiAgICAgdm9pZCBzZXROZWVkc1dpZGdldFVwZGF0ZShib29sIG5lZWRzV2lkZ2V0
VXBkYXRlKSB7IG1fbmVlZHNXaWRnZXRVcGRhdGUgPSBuZWVkc1dpZGdldFVwZGF0ZTsgfQogICAg
IAotICAgIHZvaWQgdXNlckRpZENsaWNrU25hcHNob3QoUGFzc1JlZlB0cjxNb3VzZUV2ZW50Piwg
Ym9vbCBmb3J3YXJkRXZlbnQpOworICAgIHZvaWQgdXNlckRpZENsaWNrU25hcHNob3QoTW91c2VF
dmVudCYsIGJvb2wgZm9yd2FyZEV2ZW50KTsKICAgICB2b2lkIGNoZWNrU25hcHNob3RTdGF0dXMo
KTsKICAgICBJbWFnZSogc25hcHNob3RJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc25hcHNob3RJ
bWFnZS5nZXQoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdGFydFNuYXBzaG90dGVk
UGx1Z0luKCk7CkBAIC0xMzgsMjEgKzEyOSwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3Zl
U25hcHNob3RUaW1lckZpcmVkKCk7CiAgICAgYm9vbCBpc1RvcExldmVsRnVsbFBhZ2VQbHVnaW4o
Y29uc3QgUmVuZGVyRW1iZWRkZWRPYmplY3QmKSBjb25zdDsKIAorICAgIHZvaWQgc2V0RGlzcGxh
eVN0YXRlKERpc3BsYXlTdGF0ZSkgZmluYWw7CisKICAgICBVUkwgbV9sb2FkZWRVcmw7Ci0gICAg
Ym9vbCBtX25lZWRzV2lkZ2V0VXBkYXRlOwotICAgIGJvb2wgbV9uZWVkc0RvY3VtZW50QWN0aXZh
dGlvbkNhbGxiYWNrczsKKyAgICBib29sIG1fbmVlZHNXaWRnZXRVcGRhdGUgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyB7IGZhbHNlIH07CiAg
ICAgUmVmUHRyPE1vdXNlRXZlbnQ+IG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3Q7CiAg
ICAgRGVmZXJyYWJsZU9uZVNob3RUaW1lciBtX3NpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lcjsKICAg
ICBUaW1lciBtX3JlbW92ZVNuYXBzaG90VGltZXI7CiAgICAgUmVmUHRyPEltYWdlPiBtX3NuYXBz
aG90SW1hZ2U7Ci0gICAgYm9vbCBtX2NyZWF0ZWREdXJpbmdVc2VyR2VzdHVyZTsKLSAgICBib29s
IG1faXNSZXN0YXJ0ZWRQbHVnaW47Ci0gICAgYm9vbCBtX25lZWRzQ2hlY2tGb3JTaXplQ2hhbmdl
OwotICAgIGJvb2wgbV9wbHVnSW5XYXNDcmVhdGVkOwotICAgIGJvb2wgbV9kZWZlcnJlZFByb21v
dGlvblRvUHJpbWFyeVBsdWdJbjsKKyAgICBib29sIG1fY3JlYXRlZER1cmluZ1VzZXJHZXN0dXJl
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNSZXN0YXJ0ZWRQbHVnaW4geyBmYWxzZSB9OworICAg
IGJvb2wgbV9uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Bs
dWdJbldhc0NyZWF0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kZWZlcnJlZFByb21vdGlvblRv
UHJpbWFyeVBsdWdJbiB7IGZhbHNlIH07CiAgICAgSW50U2l6ZSBtX3NpemVXaGVuU25hcHNob3R0
ZWQ7Ci0gICAgU25hcHNob3REZWNpc2lvbiBtX3NuYXBzaG90RGVjaXNpb247Ci0gICAgYm9vbCBt
X3BsdWdJbkRpbWVuc2lvbnNTcGVjaWZpZWQ7CisgICAgU25hcHNob3REZWNpc2lvbiBtX3NuYXBz
aG90RGVjaXNpb24geyBTbmFwc2hvdE5vdFlldERlY2lkZWQgfTsKKyAgICBib29sIG1fcGx1Z0lu
RGltZW5zaW9uc1NwZWNpZmllZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmNwcAppbmRleCBkYjg0MWUzNjRmMWZlM2RmOTQ5MjdmOTUzMzRjMTdjMmUyMWFkOTM5
Li4zM2ZlNDM5NjAyY2NkMDc1MGFlM2MzY2IwYzRkNzgwY2Y3MWJlYzgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAg
LTE3NCw3ICsxNzQsNyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVu
dChFdmVudCogZXZlbnQpCiAgICAgaWYgKG1vdXNlRXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMo
KS5jbGlja0V2ZW50IHx8IChtX2lzUG90ZW50aWFsTW91c2VBY3RpdmF0aW9uICYmIG1vdXNlRXZl
bnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpKSB7CiAgICAgICAgIG1faXNQ
b3RlbnRpYWxNb3VzZUFjdGl2YXRpb24gPSBmYWxzZTsKICAgICAgICAgYm9vbCBjbGlja1dhc09u
T3ZlcmxheSA9IHBsdWdJbkltYWdlRWxlbWVudCgpLnBhcnRPZlNuYXBzaG90T3ZlcmxheShtb3Vz
ZUV2ZW50LnRhcmdldCgpLT50b05vZGUoKSk7Ci0gICAgICAgIHBsdWdJbkltYWdlRWxlbWVudCgp
LnVzZXJEaWRDbGlja1NuYXBzaG90KCZtb3VzZUV2ZW50LCAhY2xpY2tXYXNPbk92ZXJsYXkpOwor
ICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS51c2VyRGlkQ2xpY2tTbmFwc2hvdChtb3VzZUV2
ZW50LCAhY2xpY2tXYXNPbk92ZXJsYXkpOwogICAgICAgICBtb3VzZUV2ZW50LnNldERlZmF1bHRI
YW5kbGVkKCk7CiAgICAgfSBlbHNlIGlmIChtb3VzZUV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVz
KCkubW91c2Vkb3duRXZlbnQpIHsKICAgICAgICAgbV9pc1BvdGVudGlhbE1vdXNlQWN0aXZhdGlv
biA9IHRydWU7Cg==
</data>
<flag name="review"
          id="319248"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>