<?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>226962</bug_id>
          
          <creation_ts>2021-06-14 02:15:40 -0700</creation_ts>
          <short_desc>FilterEffectRendererCoreImage could be simpler and more memory efficient</short_desc>
          <delta_ts>2022-05-31 12:23:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</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>
          <dependson>226917</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1769339</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-06-14 02:15:40 -0700</bug_when>
    <thetext>FilterEffectRendererCoreImage could be simpler and more memory efficient
- functions applyEffects and renderToImageBuffer are simple functions that cannot function realistically without each other but work and mutate the object state
- holds the bitmaps while allocating new bitmaps</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769342</commentid>
    <comment_count>1</comment_count>
      <attachid>431308</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-06-14 03:14:23 -0700</bug_when>
    <thetext>Created attachment 431308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770946</commentid>
    <comment_count>2</comment_count>
      <attachid>431759</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-06-17 23:55:44 -0700</bug_when>
    <thetext>Created attachment 431759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771239</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-21 02:16:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/79553333&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771335</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-06-21 10:31:15 -0700</bug_when>
    <thetext>This code is off by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843852</commentid>
    <comment_count>5</comment_count>
      <attachid>431759</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-19 08:22:42 -0800</bug_when>
    <thetext>Comment on attachment 431759
Patch

r=me although I would not be surprised if this patch no longer applies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1873070</commentid>
    <comment_count>6</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-05-31 12:22:57 -0700</bug_when>
    <thetext>FilterEffectRendererCoreImage was removed in r286193.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431308</attachid>
            <date>2021-06-14 03:14:23 -0700</date>
            <delta_ts>2021-06-17 23:55:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226962-20210614131421.patch</filename>
            <type>text/plain</type>
            <size>17748</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNhYWUzYmZlMWM5Y2E0
NjEzOTQxMTVmZjRjMmZmOWIzZjA2YWIyMy4uZDU0Mjk5NTRhMWQxOGNiZTdiYThkODhkOGY1MjUy
MDlmZDg2NDhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTA2LTE0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UgY291bGQgYmUgc2ltcGxlciBhbmQgbW9yZSBtZW1vcnkgZWZmaWNp
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMsIHJlZmFjdG9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWlt
YWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmg6CisgICAgICAgIFJlbW92ZSB0aGUg
YENJSW1hZ2UgbV9vdXRwdXRJbWAgcmVzdWx0IG9iamVjdC4gVGhlIGZpbHRlciBvdXRwdXQgaXMg
dGhlCisgICAgICAgIGBJbWFnZUJ1ZmZlcmAgb2JqZWN0LCBhbmQgdGhlIGBDSUltYWdlYCBvYmpl
Y3QgaXMgbmV2ZXIgdXNlZCBhZnRlcgorICAgICAgICB0aGUgYEltYWdlQnVmZmVyYCBvYmplY3Qg
aGFzIGJlZW4gY3JlYXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFn
ZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNo
YXJlZENJQ29udGV4dCk6CisgICAgICAgIE1vdmUgYXMgc3RhdGljIGxvY2FsIGZ1bmN0aW9uLgor
ICAgICAgICBDaGFuZ2UgcmV0dXJuIHR5cGUgZnJvbSBgUmV0YWluUHRyYCB0byBwbGFpbiBgQ0lD
b250ZXh0UmVmYC4KKyAgICAgICAgVGhlIHN0YXRpYyBpbnN0YW5jZSBvd25zIGEgcmVmZXJlbmNl
IGZvcmV2ZXIsIHNvIHRoZSBvYmplY3Qgc2hvdWxkIG5vdCBiZQorICAgICAgICByZXRhaW5lZCBh
bmQgcmVsZWFzZWQgdXBvbiB1c2UuCisKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRzQ29yZUlt
YWdlUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbm5lY3RDSUZpbHRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKFdlYkNvcmU6
OmltYWdlRm9yRkVDb2xvck1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjppbWFnZUZvckZFQ29t
cG9uZW50VHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuUmVuZGVyVXNpbmdDSUZpbHRl
cnMpOgorICAgICAgICBNb3ZlIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIGFzIHN0YXRpYyBsb2Nh
bCBmdW5jdGlvbnMuCisKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlOjp0cnlDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVy
ZXJDb3JlSW1hZ2U6OmFwcGx5RWZmZWN0cyk6CisgICAgICAgIFdoZW4gY3JlYXRpbmcgdGhlIHJl
c3VsdCBpbWFnZSwgZmlyc3QgY2xlYXIgdGhlIHByZXZpb3VzIHJlc3VsdAorICAgICAgICBhbmQg
dGhlbiB0cnkgdG8gY3JlYXRlIHRoZSBuZXcgb25lLiBUaGlzIHJlZHVjZXMgdGhlIG1lbW9yeQor
ICAgICAgICB1c2UuIFRoaXMgaGVscHMgY2xhcml0eSwgYXMgdGhlIGZ1bmN0aW9uIGlzIGFscmVh
ZHkgc3VjaCB0aGF0IGl0IHNob3VsZAorICAgICAgICBsZWF2ZSB0aGUgb2JqZWN0IGFzIGlmIGBj
bGVhclJlc3VsdHMoKWAgd2FzIGNhbGxlZCB1cG9uIGVycm9yLgorCisgICAgICAgIFdoZW4gY3Jl
YXRpbmcgdGhlIHJlc3VsdCBpbWFnZSwgc3RvcmUgaW50ZXJtZWRpYXRlCisgICAgICAgIGNvbXB1
dGF0aW9uIGluIGxvY2FsIHZhcmlhYmxlcy4gVGhpcyBzaW1wbGlmaWVzIHRoZSBlcnJvciBjYXNl
cywKKyAgICAgICAgZS5nLiBlYXJseSBvdXRzIGNhbiByZXR1cm4gYW5kIHJlYWRlciBjYW4gdW5k
ZXJzdGFuZCB0aGF0IG9iamVjdAorICAgICAgICBzdGF0ZSB3YXMgbm90IG11dGF0ZWQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpvdXRwdXQgY29u
c3QpOgorICAgICAgICBObyBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZTo6Y2xlYXJSZXN1bHQpOgorICAgICAgICBSZW1vdmUgbV9vdXRwdXRJ
bWFnZSBDSUltYWdlIHJlc2V0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAgICAgICBSZW1vdmUgcmVkdW5kYW50IGJhc2Ug
Y2xhc3MgZnVuY3Rpb24gcmVuZGVyVG9JbWFnZUJ1ZmZlci4KKyAgICAgICAgVGhpcyB3YXMgb25s
eSB1c2VkIGFzIHByaXZhdGUgY2FsbCBmcm9tIGBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZTo6YXBwbHlFZmZlY3RzKClgLgorICAgICAgICBUaGlzIHdhcyBjb21wbGljYXRpbmcgYGFwcGx5
RWZmZWN0cygpYCBzaW5jZQorICAgICAgICBib3RoIG9mIHRoZSBmdW5jdGlvbnMgbXV0YXRlZCBh
bmQgb3BlcmF0ZWQgb24gdGhlIHNhbWUgc3RhdGUuCisKIDIwMjEtMDYtMTEgIEtpbW1vIEtpbm51
bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBY2NlbGVyYXRlZEltYWdlQnVm
ZmVyIG5vdCBpbnN0YW50aWF0ZWQgYnV0IG9iamVjdHMgYXJlIHB1bm5lZCB0byB0aGUgdHlwZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0Zp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaAppbmRleCBl
NmM4ZGY0ZDU1YjQ1NjEzNTQ5ZTNhZjQ5MTkyYTI2ZTJjMDQ0YWY3Li43ZDIyMjQ4NzQxNTNmYTMw
MjEyMjdmOTc1MWUzMzAzOTI2MjJjYjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaApAQCAtMjksNDMgKzI5LDIxIEBACiAKICNpbXBvcnQgIkZp
bHRlckVmZmVjdFJlbmRlcmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgiCi0j
aW1wb3J0IDx3dGYvVmVjdG9yLmg+Ci0KLU9CSkNfQ0xBU1MgQ0lJbWFnZTsKLU9CSkNfQ0xBU1Mg
Q0lGaWx0ZXI7Ci1PQkpDX0NMQVNTIENJQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBGRUNvbG9yTWF0cml4OwotY2xhc3MgRkVDb21wb25lbnRUcmFuc2ZlcjsKLWNsYXNz
IFNvdXJjZUdyYXBoaWM7Ci0KLWNsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlIDog
cHVibGljIEZpbHRlckVmZmVjdFJlbmRlcmVyIHsKK2NsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlIGZpbmFsIDogcHVibGljIEZpbHRlckVmZmVjdFJlbmRlcmVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlPiB0cnlDcmVhdGUoRmlsdGVyRWZm
ZWN0Jik7Ci0gICAgUmV0YWluUHRyPENJQ29udGV4dD4gc2hhcmVkQ0lDb250ZXh0KCk7CiAgICAg
dm9pZCBhcHBseUVmZmVjdHMoRmlsdGVyRWZmZWN0JikgZmluYWw7Ci0gICAgYm9vbCBoYXNSZXN1
bHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX291dHB1dEltYWdlOyB9CisgICAgYm9vbCBoYXNS
ZXN1bHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX291dHB1dEltYWdlQnVmZmVyOyB9CiAgICAg
SW1hZ2VCdWZmZXIqIG91dHB1dCgpIGNvbnN0IGZpbmFsOwogICAgIEZsb2F0UmVjdCBkZXN0UmVj
dChjb25zdCBGaWx0ZXJFZmZlY3QmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGNsZWFyUmVzdWx0
KCkgZmluYWw7Ci0gICAgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UoKTsKLSAgICAKKyAg
ICBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZSgpID0gZGVmYXVsdDsKIHByaXZhdGU6Ci0g
ICAgUmV0YWluUHRyPENJSW1hZ2U+IGNvbm5lY3RDSUZpbHRlcnMoRmlsdGVyRWZmZWN0Jik7Ci0g
ICAgdm9pZCByZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYpIGZpbmFsOwotICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKEZpbHRlckVmZmVjdCYpOwotICAg
IHN0YXRpYyBib29sIGNhblJlbmRlclVzaW5nQ0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYpOwotICAg
IAotICAgIFJldGFpblB0cjxDSUltYWdlPiBpbWFnZUZvclNvdXJjZUdyYXBoaWMoU291cmNlR3Jh
cGhpYyYpOwotICAgIFJldGFpblB0cjxDSUltYWdlPiBpbWFnZUZvckZFQ29sb3JNYXRyaXgoY29u
c3QgRkVDb2xvck1hdHJpeCYsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8Q0lJbWFnZT4+Jik7Ci0g
ICAgUmV0YWluUHRyPENJSW1hZ2U+IGltYWdlRm9yRkVDb21wb25lbnRUcmFuc2Zlcihjb25zdCBG
RUNvbXBvbmVudFRyYW5zZmVyJiwgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mKTsKLSAgICAK
ICAgICBSZWZQdHI8SU9TdXJmYWNlSW1hZ2VCdWZmZXI+IG1fb3V0cHV0SW1hZ2VCdWZmZXI7Ci0g
ICAgUmV0YWluUHRyPENJSW1hZ2U+IG1fb3V0cHV0SW1hZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1h
Z2UubW0KaW5kZXggNWM4NmZjNGMyM2FmOTU0NTU1N2E1NThjOGM0NTFlMTlhOGEzOGZiNC4uZjQw
NjBjNjljOWY0OGFhY2IwYjE3MjI3MjJjN2MwMDBmYjI3NWI0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVp
bWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtNDIsMTkgKzQyLDEzIEBA
CiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lGaWx0ZXIuaD4KICNpbXBvcnQgPENvcmVJbWFnZS9Db3Jl
SW1hZ2UuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnRy
eUNyZWF0ZShGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpCitzdGF0aWMgQ0lDb250ZXh0KiBzaGFy
ZWRDSUNvbnRleHQoKQogewotICAgIGlmIChjYW5SZW5kZXJVc2luZ0NJRmlsdGVycyhsYXN0RWZm
ZWN0KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2U+KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLVJldGFpblB0cjxDSUNvbnRleHQ+
IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpzaGFyZWRDSUNvbnRleHQoKQotewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0lDb250ZXh0Pj4gY2lDb250ZXh0ID0g
W0NJQ29udGV4dCBjb250ZXh0V2l0aE9wdGlvbnM6IEB7IGtDSUNvbnRleHRXb3JraW5nQ29sb3JT
cGFjZTogKF9fYnJpZGdlIGlkKUNHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3Bh
Y2VTUkdCKX1dOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDSUNvbnRleHQqPiBjaUNvbnRl
eHQgPSBbQ0lDb250ZXh0IGNvbnRleHRXaXRoT3B0aW9uczogQHsga0NJQ29udGV4dFdvcmtpbmdD
b2xvclNwYWNlOiAoX19icmlkZ2UgaWQpQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29s
b3JTcGFjZVNSR0IpfV07CiAgICAgcmV0dXJuIGNpQ29udGV4dDsKIH0KIApAQCAtNjgsMTMgKzYy
LDEzIEBAIHN0YXRpYyBib29sIGlzTnVsbE9yTGluZWFyQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bihjb25zdCBGRUNvbXBvbmVudFRyYW5zZmVyJiBlCiAgICAgICAgICYmIGlzTnVsbE9yTGluZWFy
KGVmZmVjdC5ibHVlRnVuY3Rpb24oKSkgJiYgaXNOdWxsT3JMaW5lYXIoZWZmZWN0LmFscGhhRnVu
Y3Rpb24oKSk7CiB9CiAKLWJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnN1cHBv
cnRzQ29yZUltYWdlUmVuZGVyaW5nKEZpbHRlckVmZmVjdCYgZWZmZWN0KQorc3RhdGljIGJvb2wg
c3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoRmlsdGVyRWZmZWN0JiBlZmZlY3QpCiB7CiAgICAg
Ly8gRklYTUU6IGNoYW5nZSByZXR1cm4gdmFsdWUgdG8gdHJ1ZSBvbmNlIHRoZXkgYXJlIGltcGxl
bWVudGVkCiAgICAgc3dpdGNoIChlZmZlY3QuZmlsdGVyRWZmZWN0Q2xhc3NUeXBlKCkpIHsKICAg
ICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlR3JhcGhpYzoKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgICAgICAKKwogICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpDb2xv
ck1hdHJpeDogewogICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PEZFQ29sb3JNYXRyaXg+KGVmZmVj
dCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV046CkBA
IC0xMTIsMTAxICsxMDYsNDUgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6
c3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoRmlsdGVyRWZmZWN0JiBlZmYKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmFwcGx5RWZm
ZWN0cyhGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpCi17Ci0gICAgbV9vdXRwdXRJbWFnZSA9IGNv
bm5lY3RDSUZpbHRlcnMobGFzdEVmZmVjdCk7Ci0gICAgaWYgKCFtX291dHB1dEltYWdlKQotICAg
ICAgICByZXR1cm47Ci0gICAgcmVuZGVyVG9JbWFnZUJ1ZmZlcihsYXN0RWZmZWN0KTsKLX0KLQot
UmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpjb25uZWN0
Q0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYgZWZmZWN0KQotewotICAgIFZlY3RvcjxSZXRhaW5QdHI8
Q0lJbWFnZT4+IGlucHV0SW1hZ2VzOwotICAgIAotICAgIGZvciAoYXV0byBpbiA6IGVmZmVjdC5p
bnB1dEVmZmVjdHMoKSkgewotICAgICAgICBhdXRvIGlucHV0SW1hZ2UgPSBjb25uZWN0Q0lGaWx0
ZXJzKCppbik7Ci0gICAgICAgIGlmICghaW5wdXRJbWFnZSkKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICBpbnB1dEltYWdlcy5hcHBlbmQoaW5wdXRJbWFnZSk7Ci0gICAgfQot
ICAgIGVmZmVjdC5kZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpOwotICAgIGVmZmVjdC5zZXRS
ZXN1bHRDb2xvclNwYWNlKGVmZmVjdC5vcGVyYXRpbmdDb2xvclNwYWNlKCkpOwotICAgIAotICAg
IGlmIChlZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5pc0VtcHR5KCkgfHwgSW1hZ2VCdWZmZXI6
OnNpemVOZWVkc0NsYW1waW5nKGVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIHN3aXRjaCAoZWZmZWN0LmZpbHRlckVm
ZmVjdENsYXNzVHlwZSgpKSB7Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUdy
YXBoaWM6Ci0gICAgICAgIHJldHVybiBpbWFnZUZvclNvdXJjZUdyYXBoaWMoZG93bmNhc3Q8U291
cmNlR3JhcGhpYz4oZWZmZWN0KSk7Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkNvbG9y
TWF0cml4OgotICAgICAgICByZXR1cm4gaW1hZ2VGb3JGRUNvbG9yTWF0cml4KGRvd25jYXN0PEZF
Q29sb3JNYXRyaXg+KGVmZmVjdCksIGlucHV0SW1hZ2VzKTsKLSAgICBjYXNlIEZpbHRlckVmZmVj
dDo6VHlwZTo6Q29tcG9uZW50VHJhbnNmZXI6Ci0gICAgICAgIHJldHVybiBpbWFnZUZvckZFQ29t
cG9uZW50VHJhbnNmZXIoZG93bmNhc3Q8RkVDb21wb25lbnRUcmFuc2Zlcj4oZWZmZWN0KSwgaW5w
dXRJbWFnZXMpOwotCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aG9zZSBmaWx0ZXJzIHVzaW5n
IENJRmlsdGVyIHNvIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSB2YWxpZCBDSUltYWdlCi0g
ICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkJsZW5kOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0
OjpUeXBlOjpDb21wb3NpdGU6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkNvbnZvbHZl
TWF0cml4OgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpEaWZmdXNlTGlnaHRpbmc6Ci0g
ICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkRpc3BsYWNlbWVudE1hcDoKLSAgICBjYXNlIEZp
bHRlckVmZmVjdDo6VHlwZTo6RHJvcFNoYWRvdzoKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlw
ZTo6Rmxvb2Q6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkdhdXNzaWFuQmx1cjoKLSAg
ICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6SW1hZ2U6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6
OlR5cGU6OkxpZ2h0aW5nOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpNZXJnZToKLSAg
ICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6TW9ycGhvbG9neToKLSAgICBjYXNlIEZpbHRlckVm
ZmVjdDo6VHlwZTo6T2Zmc2V0OgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpTcGVjdWxh
ckxpZ2h0aW5nOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpUaWxlOgotICAgIGNhc2Ug
RmlsdGVyRWZmZWN0OjpUeXBlOjpUdXJidWxlbmNlOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpU
eXBlOjpTb3VyY2VBbHBoYToKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLVJldGFpblB0cjxDSUltYWdlPiBGaWx0
ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGljKFNvdXJjZUdy
YXBoaWMmIGVmZmVjdCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0lJbWFnZT4gaW1hZ2VGb3JTb3VyY2VH
cmFwaGljKFNvdXJjZUdyYXBoaWMmIGVmZmVjdCkKIHsKICAgICBJbWFnZUJ1ZmZlciogc291cmNl
SW1hZ2UgPSBlZmZlY3QuZmlsdGVyKCkuc291cmNlSW1hZ2UoKTsKICAgICBpZiAoIXNvdXJjZUlt
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIGlmIChpczxJT1N1cmZh
Y2VJbWFnZUJ1ZmZlcj4oKnNvdXJjZUltYWdlKSkKICAgICAgICAgcmV0dXJuIFtDSUltYWdlIGlt
YWdlV2l0aElPU3VyZmFjZTpkb3duY2FzdDxJT1N1cmZhY2VJbWFnZUJ1ZmZlcj4oKnNvdXJjZUlt
YWdlKS5zdXJmYWNlKCkuc3VyZmFjZSgpXTsKLSAgICAKKwogICAgIHJldHVybiBbQ0lJbWFnZSBp
bWFnZVdpdGhDR0ltYWdlOnNvdXJjZUltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1J
bWFnZSgpLmdldCgpXTsKIH0KIAotUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRl
cmVyQ29yZUltYWdlOjppbWFnZUZvckZFQ29sb3JNYXRyaXgoY29uc3QgRkVDb2xvck1hdHJpeCYg
ZWZmZWN0LCBjb25zdCBWZWN0b3I8UmV0YWluUHRyPENJSW1hZ2U+PiYgaW5wdXRJbWFnZXMpCitz
dGF0aWMgUmV0YWluUHRyPENJSW1hZ2U+IGltYWdlRm9yRkVDb2xvck1hdHJpeChjb25zdCBGRUNv
bG9yTWF0cml4JiBlZmZlY3QsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8Q0lJbWFnZT4+JiBpbnB1
dEltYWdlcykKIHsKICAgICBhdXRvIGlucHV0SW1hZ2UgPSBpbnB1dEltYWdlcy5hdCgwKTsKIAog
ICAgIGF1dG8gdmFsdWVzID0gRkVDb2xvck1hdHJpeDo6bm9ybWFsaXplZEZsb2F0cyhlZmZlY3Qu
dmFsdWVzKCkpOwogICAgIGZsb2F0IGNvbXBvbmVudHNbOV07Ci0gICAgCisKICAgICBzd2l0Y2gg
KGVmZmVjdC50eXBlKCkpIHsKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURToK
ICAgICAgICAgRkVDb2xvck1hdHJpeDo6Y2FsY3VsYXRlU2F0dXJhdGVDb21wb25lbnRzKGNvbXBv
bmVudHMsIHZhbHVlc1swXSk7CiAgICAgICAgIGJyZWFrOwotICAgIAorCiAgICAgY2FzZSBGRUNP
TE9STUFUUklYX1RZUEVfSFVFUk9UQVRFOgogICAgICAgICBGRUNvbG9yTWF0cml4OjpjYWxjdWxh
dGVIdWVSb3RhdGVDb21wb25lbnRzKGNvbXBvbmVudHMsIHZhbHVlc1swXSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIAorCiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYOgogICAgICAg
ICBicmVhazsKLSAgICAgICAgCisKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dO
OgogICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEE6IC8vIEZJWE1F
OiBBZGQgTHVtaW5hbmNlIHRvIEFscGhhIEltcGxlbWVudGF0aW9uCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gKmNvbG9yTWF0cml4RmlsdGVyID0gW0NJ
RmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lDb2xvck1hdHJpeCJdOwogICAgIFtjb2xvck1hdHJp
eEZpbHRlciBzZXRWYWx1ZTppbnB1dEltYWdlLmdldCgpIGZvcktleTprQ0lJbnB1dEltYWdlS2V5
XTsKLSAgICAKKwogICAgIHN3aXRjaCAoZWZmZWN0LnR5cGUoKSkgewogICAgIGNhc2UgRkVDT0xP
Uk1BVFJJWF9UWVBFX1NBVFVSQVRFOgogICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJP
VEFURTogewpAQCAtMjMyLDE2ICsxNzAsMTYgQEAgUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlOjppbWFnZUZvckZFQ29sb3JNYXRyaXgoY29uc3QgRkUKICAg
ICByZXR1cm4gY29sb3JNYXRyaXhGaWx0ZXIub3V0cHV0SW1hZ2U7CiB9CiAKLVJldGFpblB0cjxD
SUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JGRUNvbXBvbmVu
dFRyYW5zZmVyKGNvbnN0IEZFQ29tcG9uZW50VHJhbnNmZXImIGVmZmVjdCwgVmVjdG9yPFJldGFp
blB0cjxDSUltYWdlPj4mIGlucHV0SW1hZ2VzKQorc3RhdGljIFJldGFpblB0cjxDSUltYWdlPiBp
bWFnZUZvckZFQ29tcG9uZW50VHJhbnNmZXIoY29uc3QgRkVDb21wb25lbnRUcmFuc2ZlciYgZWZm
ZWN0LCBWZWN0b3I8UmV0YWluUHRyPENJSW1hZ2U+PiYgaW5wdXRJbWFnZXMpCiB7CiAgICAgLy8g
RklYTUU6IEltcGxlbWVudCB0aGUgcmVzdCBvZiBGRUNvbXBvbmVudFRyYW5zZmVyIGZ1bmN0aW9u
cwogICAgIEFTU0VSVChpc051bGxPckxpbmVhckNvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24oZWZm
ZWN0KSk7CiAKICAgICBhdXRvIGlucHV0SW1hZ2UgPSBpbnB1dEltYWdlcy5hdCgwKTsKICAgICBh
dXRvIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJQ29sb3JQb2x5bm9taWFs
Il07Ci0gICAgCisKICAgICBbZmlsdGVyIHNldFZhbHVlOmlucHV0SW1hZ2UuZ2V0KCkgZm9yS2V5
OmtDSUlucHV0SW1hZ2VLZXldOwotICAgIAorCiAgICAgYXV0byBzZXRDb2VmZmljaWVudHMgPSBb
Jl0gKE5TU3RyaW5nICprZXksIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmN0
aW9uKSB7CiAgICAgICAgIGlmIChmdW5jdGlvbi50eXBlID09IEZFQ09NUE9ORU5UVFJBTlNGRVJf
VFlQRV9MSU5FQVIpCiAgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0
b3JXaXRoWDpmdW5jdGlvbi5pbnRlcmNlcHQgWTpmdW5jdGlvbi5zbG9wZSBaOjAgVzowXSBmb3JL
ZXk6a2V5XTsKQEAgLTI1MCwxNSArMTg4LDYzIEBAIFJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JGRUNvbXBvbmVudFRyYW5zZmVyKGNvCiAg
ICAgc2V0Q29lZmZpY2llbnRzKEAiaW5wdXRHcmVlbkNvZWZmaWNpZW50cyIsIGVmZmVjdC5ncmVl
bkZ1bmN0aW9uKCkpOwogICAgIHNldENvZWZmaWNpZW50cyhAImlucHV0Qmx1ZUNvZWZmaWNpZW50
cyIsIGVmZmVjdC5ibHVlRnVuY3Rpb24oKSk7CiAgICAgc2V0Q29lZmZpY2llbnRzKEAiaW5wdXRB
bHBoYUNvZWZmaWNpZW50cyIsIGVmZmVjdC5hbHBoYUZ1bmN0aW9uKCkpOwotICAgIAorCiAgICAg
cmV0dXJuIGZpbHRlci5vdXRwdXRJbWFnZTsKIH0KIAotYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJl
ckNvcmVJbWFnZTo6Y2FuUmVuZGVyVXNpbmdDSUZpbHRlcnMoRmlsdGVyRWZmZWN0JiBlZmZlY3Qp
CitzdGF0aWMgUmV0YWluUHRyPENJSW1hZ2U+IGNvbm5lY3RDSUZpbHRlcnMoRmlsdGVyRWZmZWN0
JiBlZmZlY3QpCit7CisgICAgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4gaW5wdXRJbWFnZXM7
CisKKyAgICBmb3IgKGF1dG8gaW4gOiBlZmZlY3QuaW5wdXRFZmZlY3RzKCkpIHsKKyAgICAgICAg
YXV0byBpbnB1dEltYWdlID0gY29ubmVjdENJRmlsdGVycygqaW4pOworICAgICAgICBpZiAoIWlu
cHV0SW1hZ2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaW5wdXRJbWFn
ZXMuYXBwZW5kKGlucHV0SW1hZ2UpOworICAgIH0KKyAgICBlZmZlY3QuZGV0ZXJtaW5lQWJzb2x1
dGVQYWludFJlY3QoKTsKKyAgICBlZmZlY3Quc2V0UmVzdWx0Q29sb3JTcGFjZShlZmZlY3Qub3Bl
cmF0aW5nQ29sb3JTcGFjZSgpKTsKKworICAgIGlmIChlZmZlY3QuYWJzb2x1dGVQYWludFJlY3Qo
KS5pc0VtcHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGVmZmVjdC5hYnNv
bHV0ZVBhaW50UmVjdCgpLnNpemUoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
c3dpdGNoIChlZmZlY3QuZmlsdGVyRWZmZWN0Q2xhc3NUeXBlKCkpIHsKKyAgICBjYXNlIEZpbHRl
ckVmZmVjdDo6VHlwZTo6U291cmNlR3JhcGhpYzoKKyAgICAgICAgcmV0dXJuIGltYWdlRm9yU291
cmNlR3JhcGhpYyhkb3duY2FzdDxTb3VyY2VHcmFwaGljPihlZmZlY3QpKTsKKyAgICBjYXNlIEZp
bHRlckVmZmVjdDo6VHlwZTo6Q29sb3JNYXRyaXg6CisgICAgICAgIHJldHVybiBpbWFnZUZvckZF
Q29sb3JNYXRyaXgoZG93bmNhc3Q8RkVDb2xvck1hdHJpeD4oZWZmZWN0KSwgaW5wdXRJbWFnZXMp
OworICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpDb21wb25lbnRUcmFuc2ZlcjoKKyAgICAg
ICAgcmV0dXJuIGltYWdlRm9yRkVDb21wb25lbnRUcmFuc2Zlcihkb3duY2FzdDxGRUNvbXBvbmVu
dFRyYW5zZmVyPihlZmZlY3QpLCBpbnB1dEltYWdlcyk7CisKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHRob3NlIGZpbHRlcnMgdXNpbmcgQ0lGaWx0ZXIgc28gdGhhdCB0aGUgZnVuY3Rpb24gcmV0
dXJucyBhIHZhbGlkIENJSW1hZ2UKKyAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6QmxlbmQ6
CisgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkNvbXBvc2l0ZToKKyAgICBjYXNlIEZpbHRl
ckVmZmVjdDo6VHlwZTo6Q29udm9sdmVNYXRyaXg6CisgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5
cGU6OkRpZmZ1c2VMaWdodGluZzoKKyAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6RGlzcGxh
Y2VtZW50TWFwOgorICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpEcm9wU2hhZG93OgorICAg
IGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpGbG9vZDoKKyAgICBjYXNlIEZpbHRlckVmZmVjdDo6
VHlwZTo6R2F1c3NpYW5CbHVyOgorICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpJbWFnZToK
KyAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6TGlnaHRpbmc6CisgICAgY2FzZSBGaWx0ZXJF
ZmZlY3Q6OlR5cGU6Ok1lcmdlOgorICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpNb3JwaG9s
b2d5OgorICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpPZmZzZXQ6CisgICAgY2FzZSBGaWx0
ZXJFZmZlY3Q6OlR5cGU6OlNwZWN1bGFyTGlnaHRpbmc6CisgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6
OlR5cGU6OlRpbGU6CisgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlR1cmJ1bGVuY2U6Cisg
ICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUFscGhhOgorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
c3RhdGljIGJvb2wgY2FuUmVuZGVyVXNpbmdDSUZpbHRlcnMoRmlsdGVyRWZmZWN0JiBlZmZlY3Qp
CiB7CiAgICAgaWYgKCFzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZyhlZmZlY3QpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICBmb3IgKGF1dG8gaW4gOiBlZmZlY3QuaW5wdXRF
ZmZlY3RzKCkpIHsKICAgICAgICAgaWYgKCFzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZygqaW4p
IHx8ICFjYW5SZW5kZXJVc2luZ0NJRmlsdGVycygqaW4pKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjY2LDI0ICsyNTIsMzMgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6Y2FuUmVuZGVyVXNpbmdDSUZpbHRlcnMoRmlsdGVyRWZmZWN0JiBlZmZlY3QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlOjpvdXRwdXQoKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6dHJ5Q3JlYXRlKEZpbHRl
ckVmZmVjdCYgbGFzdEVmZmVjdCkKIHsKLSAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3Ry
ZWFtIDw8ICJSZW5kZXJpbmcgIiA8PCB0aGlzIDw8ICIgdXNpbmcgQ29yZUltYWdlXG4iKTsKLSAg
ICByZXR1cm4gbV9vdXRwdXRJbWFnZUJ1ZmZlci5nZXQoKTsKKyAgICBpZiAoY2FuUmVuZGVyVXNp
bmdDSUZpbHRlcnMobGFzdEVmZmVjdCkpCisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEZpbHRl
ckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlPigpOworICAgIHJldHVybiBudWxscHRyOwogfQotICAg
IAotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZl
cihGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpCisKK3ZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2U6OmFwcGx5RWZmZWN0cyhGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpCiB7CisgICAg
Y2xlYXJSZXN1bHQoKTsKKyAgICBhdXRvIG91dHB1dEltYWdlID0gY29ubmVjdENJRmlsdGVycyhs
YXN0RWZmZWN0KTsKKyAgICBpZiAoIW91dHB1dEltYWdlKQorICAgICAgICByZXR1cm47CiAgICAg
RmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKGxhc3RFZmZl
Y3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotICAgIG1fb3V0cHV0SW1hZ2VCdWZmZXIg
PSBJT1N1cmZhY2VJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBsYXN0RWZmZWN0LmZp
bHRlcigpLmZpbHRlclNjYWxlKCksIGxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwotICAgIGlmICghbV9vdXRwdXRJbWFnZUJ1ZmZlcikgewotICAgICAg
ICBjbGVhclJlc3VsdCgpOworICAgIGF1dG8gb3V0cHV0SW1hZ2VCdWZmZXIgPSBJT1N1cmZhY2VJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBsYXN0RWZmZWN0LmZpbHRlcigpLmZpbHRl
clNjYWxlKCksIGxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOworICAgIGlmICghb3V0cHV0SW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgW3NoYXJlZENJQ29udGV4dCgpIHJlbmRlcjogb3V0cHV0SW1hZ2UuZ2V0KCkgdG9JT1N1
cmZhY2U6IG91dHB1dEltYWdlQnVmZmVyLT5zdXJmYWNlKCkuc3VyZmFjZSgpIGJvdW5kczpkZXN0
UmVjdChsYXN0RWZmZWN0KSBjb2xvclNwYWNlOmxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgp
LnBsYXRmb3JtQ29sb3JTcGFjZSgpXTsKKyAgICBtX291dHB1dEltYWdlQnVmZmVyID0gV1RGTW92
ZShvdXRwdXRJbWFnZUJ1ZmZlcik7Cit9CiAKLSAgICBbc2hhcmVkQ0lDb250ZXh0KCkuZ2V0KCkg
cmVuZGVyOiBtX291dHB1dEltYWdlLmdldCgpIHRvSU9TdXJmYWNlOiBtX291dHB1dEltYWdlQnVm
ZmVyLT5zdXJmYWNlKCkuc3VyZmFjZSgpIGJvdW5kczpkZXN0UmVjdChsYXN0RWZmZWN0KSBjb2xv
clNwYWNlOmxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLnBsYXRmb3JtQ29sb3JTcGFjZSgp
XTsKK0ltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6b3V0cHV0KCkg
Y29uc3QKK3sKKyAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJSZW5kZXJp
bmcgIiA8PCB0aGlzIDw8ICIgdXNpbmcgQ29yZUltYWdlXG4iKTsKKyAgICByZXR1cm4gbV9vdXRw
dXRJbWFnZUJ1ZmZlci5nZXQoKTsKIH0KLSAgICAKKwogRmxvYXRSZWN0IEZpbHRlckVmZmVjdFJl
bmRlcmVyQ29yZUltYWdlOjpkZXN0UmVjdChjb25zdCBGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3Qp
IGNvbnN0CiB7CiAgICAgSW50U2l6ZSBkZXN0U2l6ZSA9IGxhc3RFZmZlY3QuYWJzb2x1dGVQYWlu
dFJlY3QoKS5zaXplKCk7CkBAIC0yOTUsMTQgKzI5MCw4IEBAIEZsb2F0UmVjdCBGaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QoY29uc3QgRmlsdGVyRWZmZWN0JiBsYXN0RWZm
ZWN0CiB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpjbGVhclJlc3VsdCgpCiB7
CiAgICAgbV9vdXRwdXRJbWFnZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgbV9vdXRwdXRJbWFnZSA9
IG51bGxwdHI7CiB9CiAKLUZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpGaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZSgpCi0gICAgOiBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpCi17Ci19
Ci0gICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3RSZW5kZXJlci5oCmluZGV4IDU2YmUyNDczNjFmNTNiM2MwOWVjYjU3MTMyMmI3NWE3NTczZTlj
YzQuLmE0YzA2MmZlZjNhN2U4YmVhMjk5Yzc1NGQwNzMyYWYyMjU2NmI2OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgcHVibGljOgogICAgIAogcHJv
dGVjdGVkOgogICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKCkgPSBkZWZhdWx0OwotICAgIHZpcnR1
YWwgdm9pZCByZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431759</attachid>
            <date>2021-06-17 23:55:44 -0700</date>
            <delta_ts>2022-05-31 12:23:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226962-20210618095541.patch</filename>
            <type>text/plain</type>
            <size>17761</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4OTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE3YjJjODlhNjE3YWMz
OWE5Y2YwZGZjYzBiOTlkYTU2ZGM0MmNkMS4uYzVlNWM5NWU2ZGZjZDMyYWFjYjQzZGVkNWYwZjQ4
NTI0ZDUwNmIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTA2LTE3ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UgY291bGQgYmUgc2ltcGxlciBhbmQgbW9yZSBtZW1vcnkgZWZmaWNp
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMsIHJlZmFjdG9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWlt
YWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmg6CisgICAgICAgIFJlbW92ZSB0aGUg
YENJSW1hZ2UgbV9vdXRwdXRJbWAgcmVzdWx0IG9iamVjdC4gVGhlIGZpbHRlciBvdXRwdXQgaXMg
dGhlCisgICAgICAgIGBJbWFnZUJ1ZmZlcmAgb2JqZWN0LCBhbmQgdGhlIGBDSUltYWdlYCBvYmpl
Y3QgaXMgbmV2ZXIgdXNlZCBhZnRlcgorICAgICAgICB0aGUgYEltYWdlQnVmZmVyYCBvYmplY3Qg
aGFzIGJlZW4gY3JlYXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFn
ZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNo
YXJlZENJQ29udGV4dCk6CisgICAgICAgIE1vdmUgYXMgc3RhdGljIGxvY2FsIGZ1bmN0aW9uLgor
ICAgICAgICBDaGFuZ2UgcmV0dXJuIHR5cGUgZnJvbSBgUmV0YWluUHRyYCB0byBwbGFpbiBgQ0lD
b250ZXh0UmVmYC4KKyAgICAgICAgVGhlIHN0YXRpYyBpbnN0YW5jZSBvd25zIGEgcmVmZXJlbmNl
IGZvcmV2ZXIsIHNvIHRoZSBvYmplY3Qgc2hvdWxkIG5vdCBiZQorICAgICAgICByZXRhaW5lZCBh
bmQgcmVsZWFzZWQgdXBvbiB1c2UuCisKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRzQ29yZUlt
YWdlUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbm5lY3RDSUZpbHRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKFdlYkNvcmU6
OmltYWdlRm9yRkVDb2xvck1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjppbWFnZUZvckZFQ29t
cG9uZW50VHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuUmVuZGVyVXNpbmdDSUZpbHRl
cnMpOgorICAgICAgICBNb3ZlIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIGFzIHN0YXRpYyBsb2Nh
bCBmdW5jdGlvbnMuCisKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlOjp0cnlDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVy
ZXJDb3JlSW1hZ2U6OmFwcGx5RWZmZWN0cyk6CisgICAgICAgIFdoZW4gY3JlYXRpbmcgdGhlIHJl
c3VsdCBpbWFnZSwgZmlyc3QgY2xlYXIgdGhlIHByZXZpb3VzIHJlc3VsdAorICAgICAgICBhbmQg
dGhlbiB0cnkgdG8gY3JlYXRlIHRoZSBuZXcgb25lLiBUaGlzIHJlZHVjZXMgdGhlIG1lbW9yeQor
ICAgICAgICB1c2UuIFRoaXMgaGVscHMgY2xhcml0eSwgYXMgdGhlIGZ1bmN0aW9uIGlzIGFscmVh
ZHkgc3VjaCB0aGF0IGl0IHNob3VsZAorICAgICAgICBsZWF2ZSB0aGUgb2JqZWN0IGFzIGlmIGBj
bGVhclJlc3VsdHMoKWAgd2FzIGNhbGxlZCB1cG9uIGVycm9yLgorCisgICAgICAgIFdoZW4gY3Jl
YXRpbmcgdGhlIHJlc3VsdCBpbWFnZSwgc3RvcmUgaW50ZXJtZWRpYXRlCisgICAgICAgIGNvbXB1
dGF0aW9uIGluIGxvY2FsIHZhcmlhYmxlcy4gVGhpcyBzaW1wbGlmaWVzIHRoZSBlcnJvciBjYXNl
cywKKyAgICAgICAgZS5nLiBlYXJseSBvdXRzIGNhbiByZXR1cm4gYW5kIHJlYWRlciBjYW4gdW5k
ZXJzdGFuZCB0aGF0IG9iamVjdAorICAgICAgICBzdGF0ZSB3YXMgbm90IG11dGF0ZWQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpvdXRwdXQgY29u
c3QpOgorICAgICAgICBObyBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZTo6Y2xlYXJSZXN1bHQpOgorICAgICAgICBSZW1vdmUgbV9vdXRwdXRJ
bWFnZSBDSUltYWdlIHJlc2V0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAgICAgICBSZW1vdmUgcmVkdW5kYW50IGJhc2Ug
Y2xhc3MgZnVuY3Rpb24gcmVuZGVyVG9JbWFnZUJ1ZmZlci4KKyAgICAgICAgVGhpcyB3YXMgb25s
eSB1c2VkIGFzIHByaXZhdGUgY2FsbCBmcm9tIGBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZTo6YXBwbHlFZmZlY3RzKClgLgorICAgICAgICBUaGlzIHdhcyBjb21wbGljYXRpbmcgYGFwcGx5
RWZmZWN0cygpYCBzaW5jZQorICAgICAgICBib3RoIG9mIHRoZSBmdW5jdGlvbnMgbXV0YXRlZCBh
bmQgb3BlcmF0ZWQgb24gdGhlIHNhbWUgc3RhdGUuCisKIDIwMjEtMDYtMTcgIE9yaW9sIEJydWZh
dSAgPG9icnVmYXVAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWxvZ2ljYWxdIEltcGxlbWVu
dCBsb2dpY2FsIHByb3BlcnR5IGdyb3VwcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UuaAppbmRleCBlNmM4ZGY0ZDU1YjQ1NjEzNTQ5ZTNhZjQ5MTkyYTI2
ZTJjMDQ0YWY3Li43ZDIyMjQ4NzQxNTNmYTMwMjEyMjdmOTc1MWUzMzAzOTI2MjJjYjIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaApAQCAtMjks
NDMgKzI5LDIxIEBACiAKICNpbXBvcnQgIkZpbHRlckVmZmVjdFJlbmRlcmVyLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgiCi0jaW1wb3J0IDx3dGYvVmVjdG9yLmg+Ci0KLU9CSkNf
Q0xBU1MgQ0lJbWFnZTsKLU9CSkNfQ0xBU1MgQ0lGaWx0ZXI7Ci1PQkpDX0NMQVNTIENJQ29udGV4
dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGRUNvbG9yTWF0cml4OwotY2xhc3Mg
RkVDb21wb25lbnRUcmFuc2ZlcjsKLWNsYXNzIFNvdXJjZUdyYXBoaWM7Ci0KLWNsYXNzIEZpbHRl
ckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlIDogcHVibGljIEZpbHRlckVmZmVjdFJlbmRlcmVyIHsK
K2NsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlIGZpbmFsIDogcHVibGljIEZpbHRl
ckVmZmVjdFJlbmRlcmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAKIHB1
YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlPiB0cnlDcmVhdGUoRmlsdGVyRWZmZWN0Jik7Ci0gICAgUmV0YWluUHRyPENJQ29udGV4
dD4gc2hhcmVkQ0lDb250ZXh0KCk7CiAgICAgdm9pZCBhcHBseUVmZmVjdHMoRmlsdGVyRWZmZWN0
JikgZmluYWw7Ci0gICAgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX291
dHB1dEltYWdlOyB9CisgICAgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X291dHB1dEltYWdlQnVmZmVyOyB9CiAgICAgSW1hZ2VCdWZmZXIqIG91dHB1dCgpIGNvbnN0IGZp
bmFsOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChjb25zdCBGaWx0ZXJFZmZlY3QmKSBjb25zdCBm
aW5hbDsKICAgICB2b2lkIGNsZWFyUmVzdWx0KCkgZmluYWw7Ci0gICAgRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2UoKTsKLSAgICAKKyAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZSgpID0gZGVmYXVsdDsKIHByaXZhdGU6Ci0gICAgUmV0YWluUHRyPENJSW1hZ2U+IGNvbm5lY3RD
SUZpbHRlcnMoRmlsdGVyRWZmZWN0Jik7Ci0gICAgdm9pZCByZW5kZXJUb0ltYWdlQnVmZmVyKEZp
bHRlckVmZmVjdCYpIGZpbmFsOwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQ29yZUltYWdlUmVu
ZGVyaW5nKEZpbHRlckVmZmVjdCYpOwotICAgIHN0YXRpYyBib29sIGNhblJlbmRlclVzaW5nQ0lG
aWx0ZXJzKEZpbHRlckVmZmVjdCYpOwotICAgIAotICAgIFJldGFpblB0cjxDSUltYWdlPiBpbWFn
ZUZvclNvdXJjZUdyYXBoaWMoU291cmNlR3JhcGhpYyYpOwotICAgIFJldGFpblB0cjxDSUltYWdl
PiBpbWFnZUZvckZFQ29sb3JNYXRyaXgoY29uc3QgRkVDb2xvck1hdHJpeCYsIGNvbnN0IFZlY3Rv
cjxSZXRhaW5QdHI8Q0lJbWFnZT4+Jik7Ci0gICAgUmV0YWluUHRyPENJSW1hZ2U+IGltYWdlRm9y
RkVDb21wb25lbnRUcmFuc2Zlcihjb25zdCBGRUNvbXBvbmVudFRyYW5zZmVyJiwgVmVjdG9yPFJl
dGFpblB0cjxDSUltYWdlPj4mKTsKLSAgICAKICAgICBSZWZQdHI8SU9TdXJmYWNlSW1hZ2VCdWZm
ZXI+IG1fb3V0cHV0SW1hZ2VCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENJSW1hZ2U+IG1fb3V0cHV0
SW1hZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2Uv
RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KaW5kZXggNWM4NmZjNGMyM2FmOTU0NTU1
N2E1NThjOGM0NTFlMTlhOGEzOGZiNC4uOTEwYzYzODVmODMzNDRjNDVhODIwNDhiMzhkNjI0NzYz
MWNlNWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZS5tbQpAQCAtNDIsMTkgKzQyLDE0IEBACiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lGaWx0ZXIu
aD4KICNpbXBvcnQgPENvcmVJbWFnZS9Db3JlSW1hZ2UuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZT4gRmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnRyeUNyZWF0ZShGaWx0ZXJFZmZlY3QmIGxhc3RFZmZl
Y3QpCitzdGF0aWMgQ0lDb250ZXh0KiBzaGFyZWRDSUNvbnRleHQoKQogewotICAgIGlmIChjYW5S
ZW5kZXJVc2luZ0NJRmlsdGVycyhsYXN0RWZmZWN0KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U+KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7
Ci19Ci0KLVJldGFpblB0cjxDSUNvbnRleHQ+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
OjpzaGFyZWRDSUNvbnRleHQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8Q0lDb250ZXh0Pj4gY2lDb250ZXh0ID0gW0NJQ29udGV4dCBjb250ZXh0V2l0aE9wdGlvbnM6
IEB7IGtDSUNvbnRleHRXb3JraW5nQ29sb3JTcGFjZTogKF9fYnJpZGdlIGlkKUNHQ29sb3JTcGFj
ZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKX1dOworICAgIHN0YXRpYyBDSUNvbnRl
eHQqIGNpQ29udGV4dCA9IFJldGFpblB0cjxDSUNvbnRleHQ+IHsgW0NJQ29udGV4dCBjb250ZXh0
V2l0aE9wdGlvbnM6IEB7IGtDSUNvbnRleHRXb3JraW5nQ29sb3JTcGFjZTogKF9fYnJpZGdlIGlk
KUNHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKX1dIH0ubGVha1Jl
ZigpOworICAgIEFTU0VSVChjaUNvbnRleHQpOwogICAgIHJldHVybiBjaUNvbnRleHQ7CiB9CiAK
QEAgLTY4LDEzICs2MywxMyBAQCBzdGF0aWMgYm9vbCBpc051bGxPckxpbmVhckNvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24oY29uc3QgRkVDb21wb25lbnRUcmFuc2ZlciYgZQogICAgICAgICAmJiBp
c051bGxPckxpbmVhcihlZmZlY3QuYmx1ZUZ1bmN0aW9uKCkpICYmIGlzTnVsbE9yTGluZWFyKGVm
ZmVjdC5hbHBoYUZ1bmN0aW9uKCkpOwogfQogCi1ib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlOjpzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZyhGaWx0ZXJFZmZlY3QmIGVmZmVjdCkK
K3N0YXRpYyBib29sIHN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKEZpbHRlckVmZmVjdCYgZWZm
ZWN0KQogewogICAgIC8vIEZJWE1FOiBjaGFuZ2UgcmV0dXJuIHZhbHVlIHRvIHRydWUgb25jZSB0
aGV5IGFyZSBpbXBsZW1lbnRlZAogICAgIHN3aXRjaCAoZWZmZWN0LmZpbHRlckVmZmVjdENsYXNz
VHlwZSgpKSB7CiAgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWM6CiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgCisKICAgICBjYXNlIEZpbHRlckVmZmVj
dDo6VHlwZTo6Q29sb3JNYXRyaXg6IHsKICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxGRUNvbG9y
TWF0cml4PihlZmZlY3QpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQ
RV9VTktOT1dOOgpAQCAtMTEyLDEwMSArMTA3LDQ1IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVy
ZXJDb3JlSW1hZ2U6OnN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKEZpbHRlckVmZmVjdCYgZWZm
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlOjphcHBseUVmZmVjdHMoRmlsdGVyRWZmZWN0JiBsYXN0RWZmZWN0KQotewotICAgIG1fb3V0
cHV0SW1hZ2UgPSBjb25uZWN0Q0lGaWx0ZXJzKGxhc3RFZmZlY3QpOwotICAgIGlmICghbV9vdXRw
dXRJbWFnZSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlbmRlclRvSW1hZ2VCdWZmZXIobGFzdEVm
ZmVjdCk7Ci19Ci0KLVJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6Y29ubmVjdENJRmlsdGVycyhGaWx0ZXJFZmZlY3QmIGVmZmVjdCkKLXsKLSAgICBWZWN0
b3I8UmV0YWluUHRyPENJSW1hZ2U+PiBpbnB1dEltYWdlczsKLSAgICAKLSAgICBmb3IgKGF1dG8g
aW4gOiBlZmZlY3QuaW5wdXRFZmZlY3RzKCkpIHsKLSAgICAgICAgYXV0byBpbnB1dEltYWdlID0g
Y29ubmVjdENJRmlsdGVycygqaW4pOwotICAgICAgICBpZiAoIWlucHV0SW1hZ2UpCi0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgaW5wdXRJbWFnZXMuYXBwZW5kKGlucHV0SW1h
Z2UpOwotICAgIH0KLSAgICBlZmZlY3QuZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKLSAg
ICBlZmZlY3Quc2V0UmVzdWx0Q29sb3JTcGFjZShlZmZlY3Qub3BlcmF0aW5nQ29sb3JTcGFjZSgp
KTsKLSAgICAKLSAgICBpZiAoZWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuaXNFbXB0eSgpIHx8
IEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhlZmZlY3QuYWJzb2x1dGVQYWludFJlY3Qo
KS5zaXplKCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBzd2l0Y2ggKGVm
ZmVjdC5maWx0ZXJFZmZlY3RDbGFzc1R5cGUoKSkgewotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpU
eXBlOjpTb3VyY2VHcmFwaGljOgotICAgICAgICByZXR1cm4gaW1hZ2VGb3JTb3VyY2VHcmFwaGlj
KGRvd25jYXN0PFNvdXJjZUdyYXBoaWM+KGVmZmVjdCkpOwotICAgIGNhc2UgRmlsdGVyRWZmZWN0
OjpUeXBlOjpDb2xvck1hdHJpeDoKLSAgICAgICAgcmV0dXJuIGltYWdlRm9yRkVDb2xvck1hdHJp
eChkb3duY2FzdDxGRUNvbG9yTWF0cml4PihlZmZlY3QpLCBpbnB1dEltYWdlcyk7Ci0gICAgY2Fz
ZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkNvbXBvbmVudFRyYW5zZmVyOgotICAgICAgICByZXR1cm4g
aW1hZ2VGb3JGRUNvbXBvbmVudFRyYW5zZmVyKGRvd25jYXN0PEZFQ29tcG9uZW50VHJhbnNmZXI+
KGVmZmVjdCksIGlucHV0SW1hZ2VzKTsKLQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhvc2Ug
ZmlsdGVycyB1c2luZyBDSUZpbHRlciBzbyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgdmFs
aWQgQ0lJbWFnZQotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpCbGVuZDoKLSAgICBjYXNl
IEZpbHRlckVmZmVjdDo6VHlwZTo6Q29tcG9zaXRlOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpU
eXBlOjpDb252b2x2ZU1hdHJpeDoKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6RGlmZnVz
ZUxpZ2h0aW5nOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpEaXNwbGFjZW1lbnRNYXA6
Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkRyb3BTaGFkb3c6Ci0gICAgY2FzZSBGaWx0
ZXJFZmZlY3Q6OlR5cGU6OkZsb29kOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpHYXVz
c2lhbkJsdXI6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkltYWdlOgotICAgIGNhc2Ug
RmlsdGVyRWZmZWN0OjpUeXBlOjpMaWdodGluZzoKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlw
ZTo6TWVyZ2U6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6Ok1vcnBob2xvZ3k6Ci0gICAg
Y2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6Ok9mZnNldDoKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6
VHlwZTo6U3BlY3VsYXJMaWdodGluZzoKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6VGls
ZToKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6VHVyYnVsZW5jZToKLSAgICBjYXNlIEZp
bHRlckVmZmVjdDo6VHlwZTo6U291cmNlQWxwaGE6Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1SZXRhaW5QdHI8
Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yU291cmNlR3Jh
cGhpYyhTb3VyY2VHcmFwaGljJiBlZmZlY3QpCitzdGF0aWMgUmV0YWluUHRyPENJSW1hZ2U+IGlt
YWdlRm9yU291cmNlR3JhcGhpYyhTb3VyY2VHcmFwaGljJiBlZmZlY3QpCiB7CiAgICAgSW1hZ2VC
dWZmZXIqIHNvdXJjZUltYWdlID0gZWZmZWN0LmZpbHRlcigpLnNvdXJjZUltYWdlKCk7CiAgICAg
aWYgKCFzb3VyY2VJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICBp
ZiAoaXM8SU9TdXJmYWNlSW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFnZSkpCiAgICAgICAgIHJldHVy
biBbQ0lJbWFnZSBpbWFnZVdpdGhJT1N1cmZhY2U6ZG93bmNhc3Q8SU9TdXJmYWNlSW1hZ2VCdWZm
ZXI+KCpzb3VyY2VJbWFnZSkuc3VyZmFjZSgpLnN1cmZhY2UoKV07Ci0gICAgCisKICAgICByZXR1
cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdl
KCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CiB9CiAKLVJldGFpblB0cjxDSUltYWdlPiBGaWx0
ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JGRUNvbG9yTWF0cml4KGNvbnN0IEZF
Q29sb3JNYXRyaXgmIGVmZmVjdCwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mIGlu
cHV0SW1hZ2VzKQorc3RhdGljIFJldGFpblB0cjxDSUltYWdlPiBpbWFnZUZvckZFQ29sb3JNYXRy
aXgoY29uc3QgRkVDb2xvck1hdHJpeCYgZWZmZWN0LCBjb25zdCBWZWN0b3I8UmV0YWluUHRyPENJ
SW1hZ2U+PiYgaW5wdXRJbWFnZXMpCiB7CiAgICAgYXV0byBpbnB1dEltYWdlID0gaW5wdXRJbWFn
ZXMuYXQoMCk7CiAKICAgICBhdXRvIHZhbHVlcyA9IEZFQ29sb3JNYXRyaXg6Om5vcm1hbGl6ZWRG
bG9hdHMoZWZmZWN0LnZhbHVlcygpKTsKICAgICBmbG9hdCBjb21wb25lbnRzWzldOwotICAgIAor
CiAgICAgc3dpdGNoIChlZmZlY3QudHlwZSgpKSB7CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZ
UEVfU0FUVVJBVEU6CiAgICAgICAgIEZFQ29sb3JNYXRyaXg6OmNhbGN1bGF0ZVNhdHVyYXRlQ29t
cG9uZW50cyhjb21wb25lbnRzLCB2YWx1ZXNbMF0pOwogICAgICAgICBicmVhazsKLSAgICAKKwog
ICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURToKICAgICAgICAgRkVDb2xvck1h
dHJpeDo6Y2FsY3VsYXRlSHVlUm90YXRlQ29tcG9uZW50cyhjb21wb25lbnRzLCB2YWx1ZXNbMF0p
OwogICAgICAgICBicmVhazsKLSAgICAKKwogICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX01B
VFJJWDoKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgY2FzZSBGRUNPTE9STUFUUklY
X1RZUEVfVU5LTk9XTjoKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FM
UEhBOiAvLyBGSVhNRTogQWRkIEx1bWluYW5jZSB0byBBbHBoYSBJbXBsZW1lbnRhdGlvbgogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvICpjb2xvck1hdHJp
eEZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJQ29sb3JNYXRyaXgiXTsKICAg
ICBbY29sb3JNYXRyaXhGaWx0ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZS5nZXQoKSBmb3JLZXk6a0NJ
SW5wdXRJbWFnZUtleV07Ci0gICAgCisKICAgICBzd2l0Y2ggKGVmZmVjdC50eXBlKCkpIHsKICAg
ICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURToKICAgICBjYXNlIEZFQ09MT1JNQVRS
SVhfVFlQRV9IVUVST1RBVEU6IHsKQEAgLTIzMiwxNiArMTcxLDE2IEBAIFJldGFpblB0cjxDSUlt
YWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JGRUNvbG9yTWF0cml4
KGNvbnN0IEZFCiAgICAgcmV0dXJuIGNvbG9yTWF0cml4RmlsdGVyLm91dHB1dEltYWdlOwogfQog
Ci1SZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdl
Rm9yRkVDb21wb25lbnRUcmFuc2Zlcihjb25zdCBGRUNvbXBvbmVudFRyYW5zZmVyJiBlZmZlY3Qs
IFZlY3RvcjxSZXRhaW5QdHI8Q0lJbWFnZT4+JiBpbnB1dEltYWdlcykKK3N0YXRpYyBSZXRhaW5Q
dHI8Q0lJbWFnZT4gaW1hZ2VGb3JGRUNvbXBvbmVudFRyYW5zZmVyKGNvbnN0IEZFQ29tcG9uZW50
VHJhbnNmZXImIGVmZmVjdCwgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mIGlucHV0SW1hZ2Vz
KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlIHJlc3Qgb2YgRkVDb21wb25lbnRUcmFu
c2ZlciBmdW5jdGlvbnMKICAgICBBU1NFUlQoaXNOdWxsT3JMaW5lYXJDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uKGVmZmVjdCkpOwogCiAgICAgYXV0byBpbnB1dEltYWdlID0gaW5wdXRJbWFnZXMu
YXQoMCk7CiAgICAgYXV0byBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNv
bG9yUG9seW5vbWlhbCJdOwotICAgIAorCiAgICAgW2ZpbHRlciBzZXRWYWx1ZTppbnB1dEltYWdl
LmdldCgpIGZvcktleTprQ0lJbnB1dEltYWdlS2V5XTsKLSAgICAKKwogICAgIGF1dG8gc2V0Q29l
ZmZpY2llbnRzID0gWyZdIChOU1N0cmluZyAqa2V5LCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uJiBmdW5jdGlvbikgewogICAgICAgICBpZiAoZnVuY3Rpb24udHlwZSA9PSBGRUNPTVBP
TkVOVFRSQU5TRkVSX1RZUEVfTElORUFSKQogICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpb
Q0lWZWN0b3IgdmVjdG9yV2l0aFg6ZnVuY3Rpb24uaW50ZXJjZXB0IFk6ZnVuY3Rpb24uc2xvcGUg
WjowIFc6MF0gZm9yS2V5OmtleV07CkBAIC0yNTAsMTUgKzE4OSw2MyBAQCBSZXRhaW5QdHI8Q0lJ
bWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yRkVDb21wb25lbnRU
cmFuc2ZlcihjbwogICAgIHNldENvZWZmaWNpZW50cyhAImlucHV0R3JlZW5Db2VmZmljaWVudHMi
LCBlZmZlY3QuZ3JlZW5GdW5jdGlvbigpKTsKICAgICBzZXRDb2VmZmljaWVudHMoQCJpbnB1dEJs
dWVDb2VmZmljaWVudHMiLCBlZmZlY3QuYmx1ZUZ1bmN0aW9uKCkpOwogICAgIHNldENvZWZmaWNp
ZW50cyhAImlucHV0QWxwaGFDb2VmZmljaWVudHMiLCBlZmZlY3QuYWxwaGFGdW5jdGlvbigpKTsK
LSAgICAKKwogICAgIHJldHVybiBmaWx0ZXIub3V0cHV0SW1hZ2U7CiB9CiAKLWJvb2wgRmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmNhblJlbmRlclVzaW5nQ0lGaWx0ZXJzKEZpbHRlckVm
ZmVjdCYgZWZmZWN0KQorc3RhdGljIFJldGFpblB0cjxDSUltYWdlPiBjb25uZWN0Q0lGaWx0ZXJz
KEZpbHRlckVmZmVjdCYgZWZmZWN0KQoreworICAgIFZlY3RvcjxSZXRhaW5QdHI8Q0lJbWFnZT4+
IGlucHV0SW1hZ2VzOworCisgICAgZm9yIChhdXRvIGluIDogZWZmZWN0LmlucHV0RWZmZWN0cygp
KSB7CisgICAgICAgIGF1dG8gaW5wdXRJbWFnZSA9IGNvbm5lY3RDSUZpbHRlcnMoKmluKTsKKyAg
ICAgICAgaWYgKCFpbnB1dEltYWdlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIGlucHV0SW1hZ2VzLmFwcGVuZChpbnB1dEltYWdlKTsKKyAgICB9CisgICAgZWZmZWN0LmRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7CisgICAgZWZmZWN0LnNldFJlc3VsdENvbG9yU3Bh
Y2UoZWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CisKKyAgICBpZiAoZWZmZWN0LmFic29s
dXRlUGFpbnRSZWN0KCkuaXNFbXB0eSgpIHx8IEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGlu
ZyhlZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHN3aXRjaCAoZWZmZWN0LmZpbHRlckVmZmVjdENsYXNzVHlwZSgpKSB7Cisg
ICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWM6CisgICAgICAgIHJldHVy
biBpbWFnZUZvclNvdXJjZUdyYXBoaWMoZG93bmNhc3Q8U291cmNlR3JhcGhpYz4oZWZmZWN0KSk7
CisgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkNvbG9yTWF0cml4OgorICAgICAgICByZXR1
cm4gaW1hZ2VGb3JGRUNvbG9yTWF0cml4KGRvd25jYXN0PEZFQ29sb3JNYXRyaXg+KGVmZmVjdCks
IGlucHV0SW1hZ2VzKTsKKyAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6Q29tcG9uZW50VHJh
bnNmZXI6CisgICAgICAgIHJldHVybiBpbWFnZUZvckZFQ29tcG9uZW50VHJhbnNmZXIoZG93bmNh
c3Q8RkVDb21wb25lbnRUcmFuc2Zlcj4oZWZmZWN0KSwgaW5wdXRJbWFnZXMpOworCisgICAgLy8g
RklYTUU6IEltcGxlbWVudCB0aG9zZSBmaWx0ZXJzIHVzaW5nIENJRmlsdGVyIHNvIHRoYXQgdGhl
IGZ1bmN0aW9uIHJldHVybnMgYSB2YWxpZCBDSUltYWdlCisgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6
OlR5cGU6OkJsZW5kOgorICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpDb21wb3NpdGU6Cisg
ICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkNvbnZvbHZlTWF0cml4OgorICAgIGNhc2UgRmls
dGVyRWZmZWN0OjpUeXBlOjpEaWZmdXNlTGlnaHRpbmc6CisgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6
OlR5cGU6OkRpc3BsYWNlbWVudE1hcDoKKyAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6RHJv
cFNoYWRvdzoKKyAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6Rmxvb2Q6CisgICAgY2FzZSBG
aWx0ZXJFZmZlY3Q6OlR5cGU6OkdhdXNzaWFuQmx1cjoKKyAgICBjYXNlIEZpbHRlckVmZmVjdDo6
VHlwZTo6SW1hZ2U6CisgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkxpZ2h0aW5nOgorICAg
IGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpNZXJnZToKKyAgICBjYXNlIEZpbHRlckVmZmVjdDo6
VHlwZTo6TW9ycGhvbG9neToKKyAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6T2Zmc2V0Ogor
ICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpTcGVjdWxhckxpZ2h0aW5nOgorICAgIGNhc2Ug
RmlsdGVyRWZmZWN0OjpUeXBlOjpUaWxlOgorICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpU
dXJidWxlbmNlOgorICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYToKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3N0YXRpYyBib29sIGNhblJlbmRlclVzaW5nQ0lGaWx0ZXJzKEZpbHRlckVm
ZmVjdCYgZWZmZWN0KQogewogICAgIGlmICghc3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoZWZm
ZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgZm9yIChhdXRvIGluIDog
ZWZmZWN0LmlucHV0RWZmZWN0cygpKSB7CiAgICAgICAgIGlmICghc3VwcG9ydHNDb3JlSW1hZ2VS
ZW5kZXJpbmcoKmluKSB8fCAhY2FuUmVuZGVyVXNpbmdDSUZpbHRlcnMoKmluKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTI2NiwyNCArMjUzLDMzIEBAIGJvb2wgRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2U6OmNhblJlbmRlclVzaW5nQ0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYg
ZWZmZWN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZTo6b3V0cHV0KCkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnRy
eUNyZWF0ZShGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpCiB7Ci0gICAgTE9HX1dJVEhfU1RSRUFN
KEZpbHRlcnMsIHN0cmVhbSA8PCAiUmVuZGVyaW5nICIgPDwgdGhpcyA8PCAiIHVzaW5nIENvcmVJ
bWFnZVxuIik7Ci0gICAgcmV0dXJuIG1fb3V0cHV0SW1hZ2VCdWZmZXIuZ2V0KCk7CisgICAgaWYg
KGNhblJlbmRlclVzaW5nQ0lGaWx0ZXJzKGxhc3RFZmZlY3QpKQorICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZT4oKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKIH0KLSAgICAKLXZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmRl
clRvSW1hZ2VCdWZmZXIoRmlsdGVyRWZmZWN0JiBsYXN0RWZmZWN0KQorCit2b2lkIEZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlOjphcHBseUVmZmVjdHMoRmlsdGVyRWZmZWN0JiBsYXN0RWZm
ZWN0KQogeworICAgIGNsZWFyUmVzdWx0KCk7CisgICAgYXV0byBvdXRwdXRJbWFnZSA9IGNvbm5l
Y3RDSUZpbHRlcnMobGFzdEVmZmVjdCk7CisgICAgaWYgKCFvdXRwdXRJbWFnZSkKKyAgICAgICAg
cmV0dXJuOwogICAgIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVk
U2l6ZShsYXN0RWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBtX291dHB1
dEltYWdlQnVmZmVyID0gSU9TdXJmYWNlSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwg
bGFzdEVmZmVjdC5maWx0ZXIoKS5maWx0ZXJTY2FsZSgpLCBsYXN0RWZmZWN0LnJlc3VsdENvbG9y
U3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAgICBpZiAoIW1fb3V0cHV0SW1hZ2VCdWZm
ZXIpIHsKLSAgICAgICAgY2xlYXJSZXN1bHQoKTsKKyAgICBhdXRvIG91dHB1dEltYWdlQnVmZmVy
ID0gSU9TdXJmYWNlSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgbGFzdEVmZmVjdC5m
aWx0ZXIoKS5maWx0ZXJTY2FsZSgpLCBsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBpZiAoIW91dHB1dEltYWdlQnVmZmVyKQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIFtzaGFyZWRDSUNvbnRleHQoKSByZW5kZXI6IG91dHB1dEltYWdl
LmdldCgpIHRvSU9TdXJmYWNlOiBvdXRwdXRJbWFnZUJ1ZmZlci0+c3VyZmFjZSgpLnN1cmZhY2Uo
KSBib3VuZHM6ZGVzdFJlY3QobGFzdEVmZmVjdCkgY29sb3JTcGFjZTpsYXN0RWZmZWN0LnJlc3Vs
dENvbG9yU3BhY2UoKS5wbGF0Zm9ybUNvbG9yU3BhY2UoKV07CisgICAgbV9vdXRwdXRJbWFnZUJ1
ZmZlciA9IFdURk1vdmUob3V0cHV0SW1hZ2VCdWZmZXIpOworfQogCi0gICAgW3NoYXJlZENJQ29u
dGV4dCgpLmdldCgpIHJlbmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogbV9v
dXRwdXRJbWFnZUJ1ZmZlci0+c3VyZmFjZSgpLnN1cmZhY2UoKSBib3VuZHM6ZGVzdFJlY3QobGFz
dEVmZmVjdCkgY29sb3JTcGFjZTpsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKS5wbGF0Zm9y
bUNvbG9yU3BhY2UoKV07CitJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1h
Z2U6Om91dHB1dCgpIGNvbnN0Cit7CisgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVh
bSA8PCAiUmVuZGVyaW5nICIgPDwgdGhpcyA8PCAiIHVzaW5nIENvcmVJbWFnZVxuIik7CisgICAg
cmV0dXJuIG1fb3V0cHV0SW1hZ2VCdWZmZXIuZ2V0KCk7CiB9Ci0gICAgCisKIEZsb2F0UmVjdCBG
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QoY29uc3QgRmlsdGVyRWZmZWN0
JiBsYXN0RWZmZWN0KSBjb25zdAogewogICAgIEludFNpemUgZGVzdFNpemUgPSBsYXN0RWZmZWN0
LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwpAQCAtMjk1LDE0ICsyOTEsOCBAQCBGbG9hdFJl
Y3QgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmRlc3RSZWN0KGNvbnN0IEZpbHRlckVm
ZmVjdCYgbGFzdEVmZmVjdAogdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6Y2xl
YXJSZXN1bHQoKQogewogICAgIG1fb3V0cHV0SW1hZ2VCdWZmZXIgPSBudWxscHRyOwotICAgIG1f
b3V0cHV0SW1hZ2UgPSBudWxscHRyOwogfQogCi1GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UoKQotICAgIDogRmlsdGVyRWZmZWN0UmVu
ZGVyZXIoKQotewotfQotICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAppbmRleCA1NmJlMjQ3MzYxZjUzYjNjMDllY2I1NzEz
MjJiNzVhNzU3M2U5Y2M0Li5hNGMwNjJmZWYzYTdlOGJlYTI5OWM3NTRkMDczMmFmMjI1NjZiNjky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCkBAIC00Niw3ICs0Niw2IEBAIHB1Ymxp
YzoKICAgICAKIHByb3RlY3RlZDoKICAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlcigpID0gZGVmYXVs
dDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyVG9JbWFnZUJ1ZmZlcihGaWx0ZXJFZmZlY3QmKSA9
IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>