<?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>224202</bug_id>
          
          <creation_ts>2021-04-05 13:51:08 -0700</creation_ts>
          <short_desc>Replace the Optional metadata of ImageSource by a single OptionSet and the underlying metadata</short_desc>
          <delta_ts>2021-04-06 16:37:17 -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>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1747097</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-05 13:51:08 -0700</bug_when>
    <thetext>Encapsulating the metadata in a Optionals adds extra memory cost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747129</commentid>
    <comment_count>1</comment_count>
      <attachid>425213</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-05 15:20:28 -0700</bug_when>
    <thetext>Created attachment 425213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747133</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-05 15:35:36 -0700</bug_when>
    <thetext>cahced!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747134</commentid>
    <comment_count>3</comment_count>
      <attachid>425213</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-04-05 15:37:27 -0700</bug_when>
    <thetext>Comment on attachment 425213
Patch

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

&gt; Source/WebCore/platform/graphics/ImageSource.h:226
&gt; +    OptionSet&lt;MetadataType&gt; m_cahcedMetadata;

&quot;cahced&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747137</commentid>
    <comment_count>4</comment_count>
      <attachid>425216</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-05 15:42:33 -0700</bug_when>
    <thetext>Created attachment 425216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747142</commentid>
    <comment_count>5</comment_count>
      <attachid>425219</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-05 15:58:44 -0700</bug_when>
    <thetext>Created attachment 425219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747614</commentid>
    <comment_count>6</comment_count>
      <attachid>425320</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-06 13:40:56 -0700</bug_when>
    <thetext>Created attachment 425320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747700</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-06 16:36:32 -0700</bug_when>
    <thetext>Committed r275570: &lt;https://commits.webkit.org/r275570&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425320.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747701</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-06 16:37:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/76290352&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425213</attachid>
            <date>2021-04-05 15:20:28 -0700</date>
            <delta_ts>2021-04-05 15:42:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224202-20210405152027.patch</filename>
            <type>text/plain</type>
            <size>20233</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBlYzg2MTA4OTRhYzYz
MGFkMGQ0YTIwNTBlMDc4OTJmYTEyMzIwOC4uODcwYzczNzkyNDgyMGE5ZDQ4MTgwMjllZDBiMzcw
NjU5NTI3YzMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTA0LTA1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgdGhlIE9w
dGlvbmFsIG1ldGFkYXRhIG9mIEltYWdlU291cmNlIGJ5IGEgc2luZ2xlIE9wdGlvblNldCBhbmQg
dGhlIHVuZGVybHlpbmcgbWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDIwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuY2Fwc3VsYXRpbmcgdGhlIG1ldGFkYXRhIGluIGEgT3B0aW9uYWxz
IGFkZHMgZXh0cmEgbWVtb3J5IGNvc3QuIFJlcGxhY2UKKyAgICAgICAgdGhlc2UgT3B0aW9uYWxz
IGJ5IHRoZSB1bmRlcmx5aW5nIG1ldGFkYXRhIGFuZCBhbiBPcHRpb25TZXQgdG8gdGVsbCB3aGlj
aAorICAgICAgICBvbmVzIGFyZSBjYWNoZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6SW1hZ2VT
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hl
SWZOZWVkZWQpOgorICAgICAgICBJbnN0ZWFkIG9mIGFzc2VydGlvbiBpbmRleCA8IG1fZnJhbWVz
LnNpemUoKSwgd2UgY2FuIHJldHVybiBkZWZhdWx0RnJhbWUoKS4KKyAgICAgICAgVGhpcyB3aWxs
IHVzZWQgaW4gbWFueSBjYWxsZXJzIHdoaWNoIGNoZWNrcyB0aGUgc2l6ZSBiZWZvcmUgY2FsbGlu
ZyBpdC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyTWV0YWRhdGEpOgor
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6bWV0YWRhdGFDYWNoZUlmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlm
TmVlZGVkKToKKyAgICAgICAgVGhlc2UgdHdvIHRlbXBsYXRlIGZ1bmN0aW9ucyB3aWxsIGJlIHVz
ZWQgdG8gcmV0dXJuIGFuZCBjYWNoZSwgaWYgbmVlZGVkLAorICAgICAgICB0aGUgaW1hZ2UgbWV0
YWRhdGEuIFRoZSBmaXJzdCBmdW5jdGlvbiB1c2VzIHRoZSBJbWFnZURlY29kZXIgd2hpbGUgdGhl
CisgICAgICAgIHNlY29uZCBvbmUgdXNlcyB0aGUgZmlyc3QgSW1hZ2VGcmFtZSBvZiB0aGUgaW1h
Z2UuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjplbmNvZGVkRGF0YVN0YXR1cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjp1dGkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVu
YW1lRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjphY2Nlc3NpYmls
aXR5RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmhvdFNwb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpkZW5zaXR5Q29ycmVjdGVkU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6c291cmNlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjptYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6ZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGli
bGVXaXRoT3B0aW9uc0F0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZy
YW1lU3Vic2FtcGxpbmdMZXZlbEF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZy
YW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUR1
cmF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVPcmll
bnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSW1h
Z2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJ
bmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om1ldGFk
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZU1ldGFk
YXRhQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJh
bWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQXRJbmRleCk6CisKIDIwMjEtMDQtMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgd2UgYXJlIG5vIGxvbmdlciBzaG93IHRoZSBw
cmV2aW91cyBwYWdlIHdoZW4gcnVubmluZyBhIEpTIHByb21wdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDZkMzk1ZmQ0NjZkNzZj
NjcwZGJkNDY3YWU1ZTNmZWIzN2IzMTc2NjkuLjgwNzhmZjMxYjIyYTIzNzYyY2IwMzE1N2RiYTg1
M2U0NzU0NmZmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0LDcgQEAgSW1hZ2VTb3VyY2U6OkltYWdlU291
cmNlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBuYXRpdmVJbWFnZSkKIHsKICAgICBtX2ZyYW1lQ291
bnQgPSAxOwogICAgIG1fZW5jb2RlZERhdGFTdGF0dXMgPSBFbmNvZGVkRGF0YVN0YXR1czo6Q29t
cGxldGU7CisgICAgbV9jYWhjZWRNZXRhZGF0YS5hZGQoeyBNZXRhZGF0YVR5cGU6OkVuY29kZWRE
YXRhU3RhdHVzLCBNZXRhZGF0YVR5cGU6OkZyYW1lQ291bnQgfSk7CiAgICAgZ3Jvd0ZyYW1lcygp
OwogCiAgICAgc2V0TmF0aXZlSW1hZ2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpOwpAQCAtNjIsNiAr
NjMsNyBAQCBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5h
dGl2ZUltYWdlKQogCiAgICAgbV9zaXplID0gbV9mcmFtZXNbMF0uc2l6ZSgpOwogICAgIG1fb3Jp
ZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAg
IG1fY2FoY2VkTWV0YWRhdGEuYWRkKHsgTWV0YWRhdGFUeXBlOjpTaXplLCBNZXRhZGF0YVR5cGU6
Ok9yaWVudGF0aW9uIH0pOwogfQogCiBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkKQEAgLTQz
NSw3ICs0MzcsOSBAQCB2b2lkIEltYWdlU291cmNlOjpzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkK
IAogY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVk
ZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hpbmcsIGNvbnN0IE9wdGlv
bmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIEFTU0VSVChp
bmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIEltYWdlRnJhbWU6OmRlZmF1bHRGcmFtZSgpOworICAgIAogICAg
IEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbaW5kZXhdOwogICAgIGlmICghaXNEZWNvZGVy
QXZhaWxhYmxlKCkgfHwgZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRp
b25zQXRJbmRleChpbmRleCwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6QXN5bmNocm9u
b3VzKSkpCiAgICAgICAgIHJldHVybiBmcmFtZTsKQEAgLTQ2NiwxMSArNDcwLDcgQEAgY29uc3Qg
SW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
IGluZGV4LCBJbWFnZUZyYW0KIAogdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXJNZXRhZGF0YSgpCiB7
Ci0gICAgbV9mcmFtZUNvdW50ID0gV1RGOjpudWxsb3B0OwotICAgIG1fcmVwZXRpdGlvbkNvdW50
ID0gV1RGOjpudWxsb3B0OwotICAgIG1fc2luZ2xlUGl4ZWxTb2xpZENvbG9yID0gV1RGOjpudWxs
b3B0OwotICAgIG1fZW5jb2RlZERhdGFTdGF0dXMgPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV91dGkg
PSBXVEY6Om51bGxvcHQ7CisgICAgbV9jYWhjZWRNZXRhZGF0YSA9IHsgfTsKIH0KIAogVVJMIElt
YWdlU291cmNlOjpzb3VyY2VVUkwoKSBjb25zdApAQCAtNDg4LDY1ICs0ODgsNTcgQEAgbG9uZyBs
b25nIEltYWdlU291cmNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdAogICAgIHJldHVy
biBtX2ltYWdlID8gbV9pbWFnZS0+ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgOiAwOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCBUIChJbWFnZURlY29kZXI6OipmdW5jdG9yKSgpIGNvbnN0Pgot
VCBJbWFnZVNvdXJjZTo6bWV0YWRhdGEoY29uc3QgVCYgZGVmYXVsdFZhbHVlLCBPcHRpb25hbDxU
PiogY2FjaGVkVmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVCBJbWFnZVNvdXJjZTo6bWV0
YWRhdGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBjb25zdCBUJiBkZWZhdWx0VmFsdWUs
IE1ldGFkYXRhVHlwZSBtZXRhZGF0YVR5cGUsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkg
Y29uc3QpCiB7Ci0gICAgaWYgKGNhY2hlZFZhbHVlICYmICpjYWNoZWRWYWx1ZSkKLSAgICAgICAg
cmV0dXJuIGNhY2hlZFZhbHVlLT52YWx1ZSgpOworICAgIGlmIChtX2NhaGNlZE1ldGFkYXRhLmNv
bnRhaW5zKG1ldGFkYXRhVHlwZSkpCisgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTsKIAogICAg
IGlmICghaXNEZWNvZGVyQXZhaWxhYmxlKCkgfHwgIW1fZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxl
KCkpCiAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiAKLSAgICBpZiAoIWNhY2hlZFZhbHVl
KQotICAgICAgICByZXR1cm4gKCptX2RlY29kZXIuKmZ1bmN0b3IpKCk7Ci0KLSAgICAqY2FjaGVk
VmFsdWUgPSAoKm1fZGVjb2Rlci4qZnVuY3RvcikoKTsKKyAgICBjYWNoZWRWYWx1ZSA9ICgqbV9k
ZWNvZGVyLipmdW5jdG9yKSgpOworICAgIG1fY2FoY2VkTWV0YWRhdGEuYWRkKG1ldGFkYXRhVHlw
ZSk7CiAgICAgZGlkRGVjb2RlUHJvcGVydGllcyhtX2RlY29kZXItPmJ5dGVzRGVjb2RlZFRvRGV0
ZXJtaW5lUHJvcGVydGllcygpKTsKLSAgICByZXR1cm4gY2FjaGVkVmFsdWUtPnZhbHVlKCk7Cisg
ICAgcmV0dXJuIGNhY2hlZFZhbHVlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZS4uLiBBcmdzPgotVCBJbWFnZVNvdXJjZTo6ZnJhbWVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBUIChJbWFnZUZyYW1lOjoqZnVuY3RvcikoQXJncy4uLikgY29uc3QsIEFyZ3MmJi4uLiBh
cmdzKQorVCBJbWFnZVNvdXJjZTo6Zmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBj
YWNoZWRWYWx1ZSwgTWV0YWRhdGFUeXBlIG1ldGFkYXRhVHlwZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1
bmN0b3IpKCkgY29uc3QsIEFyZ3MmJi4uLiBhcmdzKQogewotICAgIGNvbnN0IEltYWdlRnJhbWUm
IGZyYW1lID0gaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgPyBtX2ZyYW1lc1tpbmRleF0gOiBJbWFn
ZUZyYW1lOjpkZWZhdWx0RnJhbWUoKTsKLSAgICByZXR1cm4gKGZyYW1lLipmdW5jdG9yKShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotfQorICAgIGlmIChtX2NhaGNlZE1ldGFkYXRhLmNv
bnRhaW5zKG1ldGFkYXRhVHlwZSkpCisgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTsKIAotdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLVQgSW1hZ2VTb3VyY2U6OmZyYW1l
TWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFQgKEltYWdlRnJhbWU6
OipmdW5jdG9yKSgpIGNvbnN0LCBPcHRpb25hbDxUPiogY2FjaGVkVmFsdWUsIEFyZ3MmJi4uLiBh
cmdzKQotewotICAgIGlmIChjYWNoZWRWYWx1ZSAmJiAqY2FjaGVkVmFsdWUpCi0gICAgICAgIHJl
dHVybiBjYWNoZWRWYWx1ZS0+dmFsdWUoKTsKLQotICAgIGNvbnN0IEltYWdlRnJhbWUmIGZyYW1l
ID0gaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgPyBmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGlu
ZGV4LCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pIDogSW1hZ2VGcmFtZTo6ZGVmYXVsdEZy
YW1lKCk7CisgICAgY29uc3QgSW1hZ2VGcmFtZSYgZnJhbWUgPSBmcmFtZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKDAsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhLCBzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOwogCiAgICAgLy8gRG9uJ3QgY2FjaGUgYW55IHVuYXZhaWxhYmxlIGZyYW1l
IG1ldGFkYXRhLgotICAgIGlmICghZnJhbWUuaGFzTWV0YWRhdGEoKSB8fCAhY2FjaGVkVmFsdWUp
CisgICAgaWYgKCFmcmFtZS5oYXNNZXRhZGF0YSgpKQogICAgICAgICByZXR1cm4gKGZyYW1lLipm
dW5jdG9yKSgpOwogCi0gICAgKmNhY2hlZFZhbHVlID0gKGZyYW1lLipmdW5jdG9yKSgpOwotICAg
IHJldHVybiBjYWNoZWRWYWx1ZS0+dmFsdWUoKTsKKyAgICBjYWNoZWRWYWx1ZSA9IChmcmFtZS4q
ZnVuY3RvcikoKTsKKyAgICBtX2NhaGNlZE1ldGFkYXRhLmFkZChtZXRhZGF0YVR5cGUpOworICAg
IHJldHVybiBjYWNoZWRWYWx1ZTsKIH0KIAogRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6
OmVuY29kZWREYXRhU3RhdHVzKCkKIHsKLSAgICByZXR1cm4gbWV0YWRhdGE8RW5jb2RlZERhdGFT
dGF0dXMsICgmSW1hZ2VEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cyk+KEVuY29kZWREYXRhU3Rh
dHVzOjpVbmtub3duLCAmbV9lbmNvZGVkRGF0YVN0YXR1cyk7CisgICAgcmV0dXJuIG1ldGFkYXRh
Q2FjaGVJZk5lZWRlZChtX2VuY29kZWREYXRhU3RhdHVzLCBFbmNvZGVkRGF0YVN0YXR1czo6VW5r
bm93biwgTWV0YWRhdGFUeXBlOjpFbmNvZGVkRGF0YVN0YXR1cywgJkltYWdlRGVjb2Rlcjo6ZW5j
b2RlZERhdGFTdGF0dXMpOwogfQogCiBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKQog
ewotICAgIHJldHVybiBtZXRhZGF0YTxzaXplX3QsICgmSW1hZ2VEZWNvZGVyOjpmcmFtZUNvdW50
KT4obV9mcmFtZXMuc2l6ZSgpLCAmbV9mcmFtZUNvdW50KTsKKyAgICByZXR1cm4gbWV0YWRhdGFD
YWNoZUlmTmVlZGVkKG1fZnJhbWVDb3VudCwgbV9mcmFtZXMuc2l6ZSgpLCBNZXRhZGF0YVR5cGU6
OkZyYW1lQ291bnQsICZJbWFnZURlY29kZXI6OmZyYW1lQ291bnQpOwogfQogCiBSZXBldGl0aW9u
Q291bnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCgpCiB7Ci0gICAgcmV0dXJuIG1ldGFk
YXRhPFJlcGV0aXRpb25Db3VudCwgKCZJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk+KFJl
cGV0aXRpb25Db3VudE5vbmUsICZtX3JlcGV0aXRpb25Db3VudCk7CisgICAgcmV0dXJuIG1ldGFk
YXRhQ2FjaGVJZk5lZWRlZChtX3JlcGV0aXRpb25Db3VudCwgc3RhdGljX2Nhc3Q8UmVwZXRpdGlv
bkNvdW50PihSZXBldGl0aW9uQ291bnROb25lKSwgTWV0YWRhdGFUeXBlOjpSZXBldGl0aW9uQ291
bnQsICZJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk7CiB9CiAKIFN0cmluZyBJbWFnZVNv
dXJjZTo6dXRpKCkKIHsKICNpZiBVU0UoQ0cpCi0gICAgcmV0dXJuIG1ldGFkYXRhPFN0cmluZywg
KCZJbWFnZURlY29kZXI6OnV0aSk+KFN0cmluZygpLCAmbV91dGkpOworICAgIHJldHVybiBtZXRh
ZGF0YUNhY2hlSWZOZWVkZWQobV91dGksIFN0cmluZygpLCBNZXRhZGF0YVR5cGU6OlVUSSwgJklt
YWdlRGVjb2Rlcjo6dXRpKTsKICNlbHNlCiAgICAgcmV0dXJuIFN0cmluZygpOwogI2VuZGlmCkBA
IC01NTQsMjcgKzU0NiwyNyBAQCBTdHJpbmcgSW1hZ2VTb3VyY2U6OnV0aSgpCiAKIFN0cmluZyBJ
bWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKQogewotICAgIHJldHVybiBtZXRhZGF0YTxT
dHJpbmcsICgmSW1hZ2VEZWNvZGVyOjpmaWxlbmFtZUV4dGVuc2lvbik+KFN0cmluZygpLCAmbV9m
aWxlbmFtZUV4dGVuc2lvbik7CisgICAgcmV0dXJuIG1ldGFkYXRhQ2FjaGVJZk5lZWRlZChtX2Zp
bGVuYW1lRXh0ZW5zaW9uLCBTdHJpbmcoKSwgTWV0YWRhdGFUeXBlOjpGaWxlTmFtZUV4dGVuc2lv
biwgJkltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24pOwogfQogCiBTdHJpbmcgSW1hZ2VT
b3VyY2U6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpCiB7Ci0gICAgcmV0dXJuIG1ldGFkYXRh
PFN0cmluZywgKCZJbWFnZURlY29kZXI6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbik+KFN0cmlu
ZygpLCAmbV9hY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24pOworICAgIHJldHVybiBtZXRhZGF0YUNh
Y2hlSWZOZWVkZWQobV9hY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24sIFN0cmluZygpLCBNZXRhZGF0
YVR5cGU6OkFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbiwgJkltYWdlRGVjb2Rlcjo6YWNjZXNzaWJp
bGl0eURlc2NyaXB0aW9uKTsKIH0KIAogT3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlU291cmNlOjpo
b3RTcG90KCkKIHsKLSAgICByZXR1cm4gbWV0YWRhdGE8T3B0aW9uYWw8SW50UG9pbnQ+LCAoJklt
YWdlRGVjb2Rlcjo6aG90U3BvdCk+KFdURjo6bnVsbG9wdCwgJm1faG90U3BvdCk7CisgICAgcmV0
dXJuIG1ldGFkYXRhQ2FjaGVJZk5lZWRlZChtX2hvdFNwb3QsIHsgfSwgTWV0YWRhdGFUeXBlOjpI
b3RTcG90LCAmSW1hZ2VEZWNvZGVyOjpob3RTcG90KTsKIH0KIAogSW1hZ2VPcmllbnRhdGlvbiBJ
bWFnZVNvdXJjZTo6b3JpZW50YXRpb24oKQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJ
bmRleENhY2hlSWZOZWVkZWQ8SW1hZ2VPcmllbnRhdGlvbj4oMCwgKCZJbWFnZUZyYW1lOjpvcmll
bnRhdGlvbiksICZtX29yaWVudGF0aW9uLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSk7
CisgICAgcmV0dXJuIGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQobV9vcmllbnRhdGlv
biwgTWV0YWRhdGFUeXBlOjpPcmllbnRhdGlvbiwgJkltYWdlRnJhbWU6Om9yaWVudGF0aW9uKTsK
IH0KIAogT3B0aW9uYWw8SW50U2l6ZT4gSW1hZ2VTb3VyY2U6OmRlbnNpdHlDb3JyZWN0ZWRTaXpl
KEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7Ci0gICAgYXV0byBzaXplID0gZnJhbWVN
ZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPE9wdGlvbmFsPEludFNpemU+PigwLCAmSW1hZ2VG
cmFtZTo6ZGVuc2l0eUNvcnJlY3RlZFNpemUsICZtX2RlbnNpdHlDb3JyZWN0ZWRTaXplLCBJbWFn
ZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSk7CisgICAgYXV0byBzaXplID0gZmlyc3RGcmFtZU1l
dGFkYXRhQ2FjaGVJZk5lZWRlZChtX2RlbnNpdHlDb3JyZWN0ZWRTaXplLCBNZXRhZGF0YVR5cGU6
OkRlbnNpdHlDb3JyZWN0ZWRTaXplLCAmSW1hZ2VGcmFtZTo6ZGVuc2l0eUNvcnJlY3RlZFNpemUp
OwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApAQCAtNjAw
LDcgKzU5Miw3IEBAIEludFNpemUgSW1hZ2VTb3VyY2U6OnNvdXJjZVNpemUoSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikKICAgICAgICAgc2l6ZSA9IG1fZGVjb2Rlci0+c2l6ZSgpOwogICAg
IGVsc2UKICNlbmRpZgotICAgICAgICBzaXplID0gZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlm
TmVlZGVkPEludFNpemU+KDAsICgmSW1hZ2VGcmFtZTo6c2l6ZSksICZtX3NpemUsIEltYWdlRnJh
bWU6OkNhY2hpbmc6Ok1ldGFkYXRhLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KTsKKyAgICAg
ICAgc2l6ZSA9IGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQobV9zaXplLCBNZXRhZGF0
YVR5cGU6OlNpemUsICZJbWFnZUZyYW1lOjpzaXplLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
KTsKICAgICAKICAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUlt
YWdlKQogICAgICAgICBvcmllbnRhdGlvbiA9IHRoaXMtPm9yaWVudGF0aW9uKCk7CkBAIC02MTAs
MTkgKzYwMiwxOCBAQCBJbnRTaXplIEltYWdlU291cmNlOjpzb3VyY2VTaXplKEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCiAKIENvbG9yIEltYWdlU291cmNlOjpzaW5nbGVQaXhlbFNvbGlk
Q29sb3IoKQogewotICAgIGlmICghbV9zaW5nbGVQaXhlbFNvbGlkQ29sb3IgJiYgKHNpemUoKSAh
PSBJbnRTaXplKDEsIDEpIHx8IGZyYW1lQ291bnQoKSAhPSAxKSkKKyAgICBpZiAoIW1fY2FoY2Vk
TWV0YWRhdGEuY29udGFpbnMoTWV0YWRhdGFUeXBlOjpTaW5nbGVQaXhlbFNvbGlkQ29sb3IpICYm
IChzaXplKCkgIT0gSW50U2l6ZSgxLCAxKSB8fCBmcmFtZUNvdW50KCkgIT0gMSkpIHsKICAgICAg
ICAgbV9zaW5nbGVQaXhlbFNvbGlkQ29sb3IgPSBDb2xvcigpOworICAgICAgICBtX2NhaGNlZE1l
dGFkYXRhLmFkZChNZXRhZGF0YVR5cGU6OlNpbmdsZVBpeGVsU29saWRDb2xvcik7CisgICAgfQog
Ci0gICAgaWYgKG1fc2luZ2xlUGl4ZWxTb2xpZENvbG9yKQotICAgICAgICByZXR1cm4gbV9zaW5n
bGVQaXhlbFNvbGlkQ29sb3IudmFsdWUoKTsKLQotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJ
bmRleENhY2hlSWZOZWVkZWQ8Q29sb3I+KDAsICgmSW1hZ2VGcmFtZTo6c2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKSwgJm1fc2luZ2xlUGl4ZWxTb2xpZENvbG9yLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpN
ZXRhZGF0YUFuZEltYWdlKTsKKyAgICByZXR1cm4gZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5l
ZWRlZChtX3NpbmdsZVBpeGVsU29saWRDb2xvciwgTWV0YWRhdGFUeXBlOjpTaW5nbGVQaXhlbFNv
bGlkQ29sb3IsICZJbWFnZUZyYW1lOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOwogfQogCiBTdWJz
YW1wbGluZ0xldmVsIEltYWdlU291cmNlOjptYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpCiB7Ci0g
ICAgaWYgKG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBtX21heGlt
dW1TdWJzYW1wbGluZ0xldmVsLnZhbHVlKCk7CisgICAgaWYgKG1fY2FoY2VkTWV0YWRhdGEuY29u
dGFpbnMoTWV0YWRhdGFUeXBlOjpNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCkpCisgICAgICAgIHJl
dHVybiBtX21heGltdW1TdWJzYW1wbGluZ0xldmVsOwogCiAgICAgaWYgKCFpc0RlY29kZXJBdmFp
bGFibGUoKSB8fCAhbV9kZWNvZGVyLT5mcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KDApKQog
ICAgICAgICByZXR1cm4gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdDsKQEAgLTYzOSw3ICs2MzAs
OCBAQCBTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjptYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCgpCiAgICAgfQogCiAgICAgbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCA9IGxldmVsOwotICAg
IHJldHVybiBtX21heGltdW1TdWJzYW1wbGluZ0xldmVsLnZhbHVlKCk7CisgICAgbV9jYWhjZWRN
ZXRhZGF0YS5hZGQoTWV0YWRhdGFUeXBlOjpNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CisgICAg
cmV0dXJuIG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWw7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6
OmZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoc2l6
ZV90IGluZGV4LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykKQEAgLTY1
Miw0NyArNjQ0LDQ3IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNCZWluZ0RlY29kZWRBbmRJ
c0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoc2l6ZV90IGluCiAKIERlY29kaW5nU3RhdHVz
IEltYWdlU291cmNlOjpmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChzaXplX3QgaW5kZXgpCiB7
Ci0gICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxEZWNvZGluZ1N0
YXR1cz4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6ZGVjb2RpbmdTdGF0dXMpLCBudWxscHRyLCBJbWFn
ZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSk7CisgICAgcmV0dXJuIGZyYW1lQXRJbmRleENhY2hl
SWZOZWVkZWQoaW5kZXgsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhKS5kZWNvZGluZ1N0
YXR1cygpOwogfQogCiBib29sIEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXpl
X3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4PGJvb2w+KGluZGV4
LCAoJkltYWdlRnJhbWU6Omhhc0FscGhhKSk7CisgICAgcmV0dXJuIGZyYW1lQXRJbmRleChpbmRl
eCkuaGFzQWxwaGEoKTsKIH0KIAogYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNGdWxsU2l6ZU5h
dGl2ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBsaW5n
TGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJ
bmRleDxib29sPihpbmRleCwgKCZJbWFnZUZyYW1lOjpoYXNGdWxsU2l6ZU5hdGl2ZUltYWdlKSwg
c3Vic2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lQXRJbmRleChpbmRleCkuaGFzRnVs
bFNpemVOYXRpdmVJbWFnZShzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAogYm9vbCBJbWFnZVNvdXJj
ZTo6ZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4
KHNpemVfdCBpbmRleCwgY29uc3QgT3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBs
aW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKQogewotICAg
IHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleDxib29sPihpbmRleCwgKCZJbWFnZUZyYW1lOjpo
YXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnMpLCBzdWJzYW1wbGluZ0xl
dmVsLCBkZWNvZGluZ09wdGlvbnMpOworICAgIHJldHVybiBmcmFtZUF0SW5kZXgoaW5kZXgpLmhh
c0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9ucyhzdWJzYW1wbGluZ0xldmVs
LCBkZWNvZGluZ09wdGlvbnMpOwogfQogCiBTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpm
cmFtZVN1YnNhbXBsaW5nTGV2ZWxBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4g
ZnJhbWVNZXRhZGF0YUF0SW5kZXg8U3Vic2FtcGxpbmdMZXZlbD4oaW5kZXgsICgmSW1hZ2VGcmFt
ZTo6c3Vic2FtcGxpbmdMZXZlbCkpOworICAgIHJldHVybiBmcmFtZUF0SW5kZXgoaW5kZXgpLnN1
YnNhbXBsaW5nTGV2ZWwoKTsKIH0KIAogSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsK
LSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPEludFNpemU+KGlu
ZGV4LCAoJkltYWdlRnJhbWU6OnNpemUpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpN
ZXRhZGF0YSwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lQXRJbmRleENhY2hl
SWZOZWVkZWQoaW5kZXgsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhLCBzdWJzYW1wbGlu
Z0xldmVsKS5zaXplKCk7CiB9CiAKIHVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsK
LSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPHVuc2lnbmVkPihp
bmRleCwgKCZJbWFnZUZyYW1lOjpmcmFtZUJ5dGVzKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2Fj
aGluZzo6TWV0YWRhdGEsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZUF0SW5k
ZXhDYWNoZUlmTmVlZGVkKGluZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSwgc3Vi
c2FtcGxpbmdMZXZlbCkuZnJhbWVCeXRlcygpOwogfQogCiBTZWNvbmRzIEltYWdlU291cmNlOjpm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lTWV0
YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxTZWNvbmRzPihpbmRleCwgKCZJbWFnZUZyYW1lOjpk
dXJhdGlvbiksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhKTsKKyAgICBy
ZXR1cm4gZnJhbWVBdEluZGV4Q2FjaGVJZk5lZWRlZChpbmRleCwgSW1hZ2VGcmFtZTo6Q2FjaGlu
Zzo6TWV0YWRhdGEpLmR1cmF0aW9uKCk7CiB9CiAKIEltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3Vy
Y2U6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4g
ZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPEltYWdlT3JpZW50YXRpb24+KGluZGV4
LCAoJkltYWdlRnJhbWU6Om9yaWVudGF0aW9uKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2FjaGlu
Zzo6TWV0YWRhdGEpOworICAgIHJldHVybiBmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGluZGV4
LCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSkub3JpZW50YXRpb24oKTsKIH0KIAogI2lm
IFVTRShESVJFQ1QyRCkKQEAgLTcxMiwxMiArNzA0LDEyIEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpCiAKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8UmVmUHRy
PE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKKyAgICBy
ZXR1cm4gZnJhbWVBdEluZGV4KGluZGV4KS5uYXRpdmVJbWFnZSgpOwogfQogCiBSZWZQdHI8TmF0
aXZlSW1hZ2U+IEltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxSZWZQdHI8TmF0aXZlSW1hZ2U+
PihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6
OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVy
biBmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGluZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpN
ZXRhZGF0YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKS5uYXRpdmVJbWFnZSgpOwogfQogCiB2
b2lkIEltYWdlU291cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggYTA0OTEzNThmMDk0Yjg5ZTQy
MDNlMWMzNzliZWYwMTliOTc5NTA1OS4uZWM4OWZjYmU1NDc0ZDUyZjdjYmIwYmJjMDZmZjIwNjE0
Y2FhMjc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMzQsMTQgKzEzNCwyNiBAQCBwcml2YXRlOgogICAgIEltYWdlU291cmNl
KEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6
QXBwbGllZCk7CiAgICAgSW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+
Ci0gICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNo
ZWRWYWx1ZSA9IG51bGxwdHIpOworICAgIGVudW0gY2xhc3MgTWV0YWRhdGFUeXBlIHsKKyAgICAg
ICAgRW5jb2RlZERhdGFTdGF0dXMgICAgICAgICAgID0gMSA8PCAwLAorICAgICAgICBGcmFtZUNv
dW50ICAgICAgICAgICAgICAgICAgPSAxIDw8IDEsCisgICAgICAgIFJlcGV0aXRpb25Db3VudCAg
ICAgICAgICAgICA9IDEgPDwgMiwKKyAgICAgICAgVVRJICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMSA8PCAzLAorICAgICAgICBGaWxlTmFtZUV4dGVuc2lvbiAgICAgICAgICAgPSAxIDw8IDQs
CisgICAgICAgIEFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbiAgICA9IDEgPDwgNSwKKyAgICAgICAg
SG90U3BvdCAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA2LAorICAgICAgICBTaXplICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDcsCisgICAgICAgIERlbnNpdHlDb3JyZWN0ZWRTaXpl
ICAgICAgICA9IDEgPDwgOCwKKyAgICAgICAgT3JpZW50YXRpb24gICAgICAgICAgICAgICAgID0g
MSA8PCA5LAorICAgICAgICBTaW5nbGVQaXhlbFNvbGlkQ29sb3IgICAgICAgPSAxIDw8IDEwLAor
ICAgICAgICBNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCAgICAgPSAxIDw8IDExCisgICAgfTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgVCBmcmFtZU1l
dGFkYXRhQXRJbmRleChzaXplX3QsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKShBcmdzLi4uKSBj
b25zdCwgQXJncyYmLi4uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFQgbWV0YWRh
dGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE1l
dGFkYXRhVHlwZSwgVCAoSW1hZ2VEZWNvZGVyOjoqZnVuY3RvcikoKSBjb25zdCk7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIFQgZnJhbWVNZXRhZGF0
YUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkg
Y29uc3QsICBPcHRpb25hbDxUPiogY2FjaGVkVmFsdWUsIEFyZ3MmJi4uLik7CisgICAgVCBmaXJz
dEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBNZXRhZGF0YVR5cGUs
IFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNvbnN0LCBBcmdzJiYuLi4pOwogCiAgICAgYm9v
bCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSk7CiAgICAgYm9vbCBp
c0RlY29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0KQEAgLTE2Myw2
ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIFdvcmtRdWV1ZSYgZGVjb2RpbmdRdWV1ZSgpOwogICAg
IFN5bmNocm9uaXplZEZpeGVkUXVldWU8SW1hZ2VGcmFtZVJlcXVlc3QsIEJ1ZmZlclNpemU+JiBm
cmFtZVJlcXVlc3RRdWV1ZSgpOwogCisgICAgY29uc3QgSW1hZ2VGcmFtZSYgZnJhbWVBdEluZGV4
KHNpemVfdCBpbmRleCkgeyByZXR1cm4gaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgPyBtX2ZyYW1l
c1tpbmRleF0gOiBJbWFnZUZyYW1lOjpkZWZhdWx0RnJhbWUoKTsgfQogICAgIGNvbnN0IEltYWdl
RnJhbWUmIGZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90LCBJbWFnZUZyYW1lOjpDYWNo
aW5nLCBjb25zdCBPcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pOwogCiAgICAgdm9p
ZCBkdW1wKFRleHRTdHJlYW0mKTsKQEAgLTE5NSwyMCArMjA4LDIyIEBAIHByaXZhdGU6CiAgICAg
U2Vjb25kcyBtX2ZyYW1lRGVjb2RpbmdEdXJhdGlvbkZvclRlc3Rpbmc7CiAKICAgICAvLyBJbWFn
ZSBtZXRhZGF0YS4KLSAgICBPcHRpb25hbDxFbmNvZGVkRGF0YVN0YXR1cz4gbV9lbmNvZGVkRGF0
YVN0YXR1czsKLSAgICBPcHRpb25hbDxzaXplX3Q+IG1fZnJhbWVDb3VudDsKLSAgICBPcHRpb25h
bDxSZXBldGl0aW9uQ291bnQ+IG1fcmVwZXRpdGlvbkNvdW50OwotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gbV91dGk7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBtX2ZpbGVuYW1lRXh0ZW5zaW9uOwotICAg
IE9wdGlvbmFsPFN0cmluZz4gbV9hY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb247Ci0gICAgT3B0aW9u
YWw8T3B0aW9uYWw8SW50UG9pbnQ+PiBtX2hvdFNwb3Q7CisgICAgRW5jb2RlZERhdGFTdGF0dXMg
bV9lbmNvZGVkRGF0YVN0YXR1czsKKyAgICBzaXplX3QgbV9mcmFtZUNvdW50OworICAgIFJlcGV0
aXRpb25Db3VudCBtX3JlcGV0aXRpb25Db3VudDsKKyAgICBTdHJpbmcgbV91dGk7CisgICAgU3Ry
aW5nIG1fZmlsZW5hbWVFeHRlbnNpb247CisgICAgU3RyaW5nIG1fYWNjZXNzaWJpbGl0eURlc2Ny
aXB0aW9uOworICAgIE9wdGlvbmFsPEludFBvaW50PiBtX2hvdFNwb3Q7CiAKICAgICAvLyBJbWFn
ZSBtZXRhZGF0YSB3aGljaCBpcyBjYWxjdWxhdGVkIGZyb20gdGhlIGZpcnN0IEltYWdlRnJhbWUu
Ci0gICAgT3B0aW9uYWw8SW50U2l6ZT4gbV9zaXplOwotICAgIE9wdGlvbmFsPEltYWdlT3JpZW50
YXRpb24+IG1fb3JpZW50YXRpb247Ci0gICAgT3B0aW9uYWw8T3B0aW9uYWw8SW50U2l6ZT4+IG1f
ZGVuc2l0eUNvcnJlY3RlZFNpemU7Ci0gICAgT3B0aW9uYWw8Q29sb3I+IG1fc2luZ2xlUGl4ZWxT
b2xpZENvbG9yOwotICAgIE9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+IG1fbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWw7CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAgT3B0aW9uYWw8SW50U2l6ZT4g
bV9kZW5zaXR5Q29ycmVjdGVkU2l6ZTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRp
b247CisgICAgQ29sb3IgbV9zaW5nbGVQaXhlbFNvbGlkQ29sb3I7CisgICAgU3Vic2FtcGxpbmdM
ZXZlbCBtX21heGltdW1TdWJzYW1wbGluZ0xldmVsOworCisgICAgT3B0aW9uU2V0PE1ldGFkYXRh
VHlwZT4gbV9jYWhjZWRNZXRhZGF0YTsKIAogICAgIFJ1bkxvb3AmIG1fcnVuTG9vcDsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425216</attachid>
            <date>2021-04-05 15:42:33 -0700</date>
            <delta_ts>2021-04-05 15:58:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224202-20210405154232.patch</filename>
            <type>text/plain</type>
            <size>20233</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBlYzg2MTA4OTRhYzYz
MGFkMGQ0YTIwNTBlMDc4OTJmYTEyMzIwOC4uODcwYzczNzkyNDgyMGE5ZDQ4MTgwMjllZDBiMzcw
NjU5NTI3YzMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTA0LTA1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgdGhlIE9w
dGlvbmFsIG1ldGFkYXRhIG9mIEltYWdlU291cmNlIGJ5IGEgc2luZ2xlIE9wdGlvblNldCBhbmQg
dGhlIHVuZGVybHlpbmcgbWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDIwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuY2Fwc3VsYXRpbmcgdGhlIG1ldGFkYXRhIGluIGEgT3B0aW9uYWxz
IGFkZHMgZXh0cmEgbWVtb3J5IGNvc3QuIFJlcGxhY2UKKyAgICAgICAgdGhlc2UgT3B0aW9uYWxz
IGJ5IHRoZSB1bmRlcmx5aW5nIG1ldGFkYXRhIGFuZCBhbiBPcHRpb25TZXQgdG8gdGVsbCB3aGlj
aAorICAgICAgICBvbmVzIGFyZSBjYWNoZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6SW1hZ2VT
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hl
SWZOZWVkZWQpOgorICAgICAgICBJbnN0ZWFkIG9mIGFzc2VydGlvbiBpbmRleCA8IG1fZnJhbWVz
LnNpemUoKSwgd2UgY2FuIHJldHVybiBkZWZhdWx0RnJhbWUoKS4KKyAgICAgICAgVGhpcyB3aWxs
IHVzZWQgaW4gbWFueSBjYWxsZXJzIHdoaWNoIGNoZWNrcyB0aGUgc2l6ZSBiZWZvcmUgY2FsbGlu
ZyBpdC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyTWV0YWRhdGEpOgor
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6bWV0YWRhdGFDYWNoZUlmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlm
TmVlZGVkKToKKyAgICAgICAgVGhlc2UgdHdvIHRlbXBsYXRlIGZ1bmN0aW9ucyB3aWxsIGJlIHVz
ZWQgdG8gcmV0dXJuIGFuZCBjYWNoZSwgaWYgbmVlZGVkLAorICAgICAgICB0aGUgaW1hZ2UgbWV0
YWRhdGEuIFRoZSBmaXJzdCBmdW5jdGlvbiB1c2VzIHRoZSBJbWFnZURlY29kZXIgd2hpbGUgdGhl
CisgICAgICAgIHNlY29uZCBvbmUgdXNlcyB0aGUgZmlyc3QgSW1hZ2VGcmFtZSBvZiB0aGUgaW1h
Z2UuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjplbmNvZGVkRGF0YVN0YXR1cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjp1dGkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZpbGVu
YW1lRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjphY2Nlc3NpYmls
aXR5RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmhvdFNwb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpkZW5zaXR5Q29ycmVjdGVkU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6c291cmNlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjptYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6ZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGli
bGVXaXRoT3B0aW9uc0F0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZy
YW1lU3Vic2FtcGxpbmdMZXZlbEF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZy
YW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUR1
cmF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVPcmll
bnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSW1h
Z2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJ
bmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om1ldGFk
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZU1ldGFk
YXRhQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJh
bWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQXRJbmRleCk6CisKIDIwMjEtMDQtMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgd2UgYXJlIG5vIGxvbmdlciBzaG93IHRoZSBw
cmV2aW91cyBwYWdlIHdoZW4gcnVubmluZyBhIEpTIHByb21wdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDZkMzk1ZmQ0NjZkNzZj
NjcwZGJkNDY3YWU1ZTNmZWIzN2IzMTc2NjkuLjYyYTBkNWFkNjRjNzNlYTg2MzBiYWNlMjllNDI5
MGYzZjBhZDQxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0LDcgQEAgSW1hZ2VTb3VyY2U6OkltYWdlU291
cmNlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBuYXRpdmVJbWFnZSkKIHsKICAgICBtX2ZyYW1lQ291
bnQgPSAxOwogICAgIG1fZW5jb2RlZERhdGFTdGF0dXMgPSBFbmNvZGVkRGF0YVN0YXR1czo6Q29t
cGxldGU7CisgICAgbV9jYWNoZWRNZXRhZGF0YS5hZGQoeyBNZXRhZGF0YVR5cGU6OkVuY29kZWRE
YXRhU3RhdHVzLCBNZXRhZGF0YVR5cGU6OkZyYW1lQ291bnQgfSk7CiAgICAgZ3Jvd0ZyYW1lcygp
OwogCiAgICAgc2V0TmF0aXZlSW1hZ2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpOwpAQCAtNjIsNiAr
NjMsNyBAQCBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5h
dGl2ZUltYWdlKQogCiAgICAgbV9zaXplID0gbV9mcmFtZXNbMF0uc2l6ZSgpOwogICAgIG1fb3Jp
ZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAg
IG1fY2FjaGVkTWV0YWRhdGEuYWRkKHsgTWV0YWRhdGFUeXBlOjpTaXplLCBNZXRhZGF0YVR5cGU6
Ok9yaWVudGF0aW9uIH0pOwogfQogCiBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkKQEAgLTQz
NSw3ICs0MzcsOSBAQCB2b2lkIEltYWdlU291cmNlOjpzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkK
IAogY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVk
ZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hpbmcsIGNvbnN0IE9wdGlv
bmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIEFTU0VSVChp
bmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIEltYWdlRnJhbWU6OmRlZmF1bHRGcmFtZSgpOworICAgIAogICAg
IEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbaW5kZXhdOwogICAgIGlmICghaXNEZWNvZGVy
QXZhaWxhYmxlKCkgfHwgZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRp
b25zQXRJbmRleChpbmRleCwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6QXN5bmNocm9u
b3VzKSkpCiAgICAgICAgIHJldHVybiBmcmFtZTsKQEAgLTQ2NiwxMSArNDcwLDcgQEAgY29uc3Qg
SW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
IGluZGV4LCBJbWFnZUZyYW0KIAogdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXJNZXRhZGF0YSgpCiB7
Ci0gICAgbV9mcmFtZUNvdW50ID0gV1RGOjpudWxsb3B0OwotICAgIG1fcmVwZXRpdGlvbkNvdW50
ID0gV1RGOjpudWxsb3B0OwotICAgIG1fc2luZ2xlUGl4ZWxTb2xpZENvbG9yID0gV1RGOjpudWxs
b3B0OwotICAgIG1fZW5jb2RlZERhdGFTdGF0dXMgPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV91dGkg
PSBXVEY6Om51bGxvcHQ7CisgICAgbV9jYWNoZWRNZXRhZGF0YSA9IHsgfTsKIH0KIAogVVJMIElt
YWdlU291cmNlOjpzb3VyY2VVUkwoKSBjb25zdApAQCAtNDg4LDY1ICs0ODgsNTcgQEAgbG9uZyBs
b25nIEltYWdlU291cmNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdAogICAgIHJldHVy
biBtX2ltYWdlID8gbV9pbWFnZS0+ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgOiAwOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCBUIChJbWFnZURlY29kZXI6OipmdW5jdG9yKSgpIGNvbnN0Pgot
VCBJbWFnZVNvdXJjZTo6bWV0YWRhdGEoY29uc3QgVCYgZGVmYXVsdFZhbHVlLCBPcHRpb25hbDxU
PiogY2FjaGVkVmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVCBJbWFnZVNvdXJjZTo6bWV0
YWRhdGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBjb25zdCBUJiBkZWZhdWx0VmFsdWUs
IE1ldGFkYXRhVHlwZSBtZXRhZGF0YVR5cGUsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkg
Y29uc3QpCiB7Ci0gICAgaWYgKGNhY2hlZFZhbHVlICYmICpjYWNoZWRWYWx1ZSkKLSAgICAgICAg
cmV0dXJuIGNhY2hlZFZhbHVlLT52YWx1ZSgpOworICAgIGlmIChtX2NhY2hlZE1ldGFkYXRhLmNv
bnRhaW5zKG1ldGFkYXRhVHlwZSkpCisgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTsKIAogICAg
IGlmICghaXNEZWNvZGVyQXZhaWxhYmxlKCkgfHwgIW1fZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxl
KCkpCiAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiAKLSAgICBpZiAoIWNhY2hlZFZhbHVl
KQotICAgICAgICByZXR1cm4gKCptX2RlY29kZXIuKmZ1bmN0b3IpKCk7Ci0KLSAgICAqY2FjaGVk
VmFsdWUgPSAoKm1fZGVjb2Rlci4qZnVuY3RvcikoKTsKKyAgICBjYWNoZWRWYWx1ZSA9ICgqbV9k
ZWNvZGVyLipmdW5jdG9yKSgpOworICAgIG1fY2FjaGVkTWV0YWRhdGEuYWRkKG1ldGFkYXRhVHlw
ZSk7CiAgICAgZGlkRGVjb2RlUHJvcGVydGllcyhtX2RlY29kZXItPmJ5dGVzRGVjb2RlZFRvRGV0
ZXJtaW5lUHJvcGVydGllcygpKTsKLSAgICByZXR1cm4gY2FjaGVkVmFsdWUtPnZhbHVlKCk7Cisg
ICAgcmV0dXJuIGNhY2hlZFZhbHVlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZS4uLiBBcmdzPgotVCBJbWFnZVNvdXJjZTo6ZnJhbWVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBUIChJbWFnZUZyYW1lOjoqZnVuY3RvcikoQXJncy4uLikgY29uc3QsIEFyZ3MmJi4uLiBh
cmdzKQorVCBJbWFnZVNvdXJjZTo6Zmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBj
YWNoZWRWYWx1ZSwgTWV0YWRhdGFUeXBlIG1ldGFkYXRhVHlwZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1
bmN0b3IpKCkgY29uc3QsIEFyZ3MmJi4uLiBhcmdzKQogewotICAgIGNvbnN0IEltYWdlRnJhbWUm
IGZyYW1lID0gaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgPyBtX2ZyYW1lc1tpbmRleF0gOiBJbWFn
ZUZyYW1lOjpkZWZhdWx0RnJhbWUoKTsKLSAgICByZXR1cm4gKGZyYW1lLipmdW5jdG9yKShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotfQorICAgIGlmIChtX2NhY2hlZE1ldGFkYXRhLmNv
bnRhaW5zKG1ldGFkYXRhVHlwZSkpCisgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTsKIAotdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLVQgSW1hZ2VTb3VyY2U6OmZyYW1l
TWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFQgKEltYWdlRnJhbWU6
OipmdW5jdG9yKSgpIGNvbnN0LCBPcHRpb25hbDxUPiogY2FjaGVkVmFsdWUsIEFyZ3MmJi4uLiBh
cmdzKQotewotICAgIGlmIChjYWNoZWRWYWx1ZSAmJiAqY2FjaGVkVmFsdWUpCi0gICAgICAgIHJl
dHVybiBjYWNoZWRWYWx1ZS0+dmFsdWUoKTsKLQotICAgIGNvbnN0IEltYWdlRnJhbWUmIGZyYW1l
ID0gaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgPyBmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGlu
ZGV4LCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pIDogSW1hZ2VGcmFtZTo6ZGVmYXVsdEZy
YW1lKCk7CisgICAgY29uc3QgSW1hZ2VGcmFtZSYgZnJhbWUgPSBmcmFtZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKDAsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhLCBzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOwogCiAgICAgLy8gRG9uJ3QgY2FjaGUgYW55IHVuYXZhaWxhYmxlIGZyYW1l
IG1ldGFkYXRhLgotICAgIGlmICghZnJhbWUuaGFzTWV0YWRhdGEoKSB8fCAhY2FjaGVkVmFsdWUp
CisgICAgaWYgKCFmcmFtZS5oYXNNZXRhZGF0YSgpKQogICAgICAgICByZXR1cm4gKGZyYW1lLipm
dW5jdG9yKSgpOwogCi0gICAgKmNhY2hlZFZhbHVlID0gKGZyYW1lLipmdW5jdG9yKSgpOwotICAg
IHJldHVybiBjYWNoZWRWYWx1ZS0+dmFsdWUoKTsKKyAgICBjYWNoZWRWYWx1ZSA9IChmcmFtZS4q
ZnVuY3RvcikoKTsKKyAgICBtX2NhY2hlZE1ldGFkYXRhLmFkZChtZXRhZGF0YVR5cGUpOworICAg
IHJldHVybiBjYWNoZWRWYWx1ZTsKIH0KIAogRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6
OmVuY29kZWREYXRhU3RhdHVzKCkKIHsKLSAgICByZXR1cm4gbWV0YWRhdGE8RW5jb2RlZERhdGFT
dGF0dXMsICgmSW1hZ2VEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cyk+KEVuY29kZWREYXRhU3Rh
dHVzOjpVbmtub3duLCAmbV9lbmNvZGVkRGF0YVN0YXR1cyk7CisgICAgcmV0dXJuIG1ldGFkYXRh
Q2FjaGVJZk5lZWRlZChtX2VuY29kZWREYXRhU3RhdHVzLCBFbmNvZGVkRGF0YVN0YXR1czo6VW5r
bm93biwgTWV0YWRhdGFUeXBlOjpFbmNvZGVkRGF0YVN0YXR1cywgJkltYWdlRGVjb2Rlcjo6ZW5j
b2RlZERhdGFTdGF0dXMpOwogfQogCiBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKQog
ewotICAgIHJldHVybiBtZXRhZGF0YTxzaXplX3QsICgmSW1hZ2VEZWNvZGVyOjpmcmFtZUNvdW50
KT4obV9mcmFtZXMuc2l6ZSgpLCAmbV9mcmFtZUNvdW50KTsKKyAgICByZXR1cm4gbWV0YWRhdGFD
YWNoZUlmTmVlZGVkKG1fZnJhbWVDb3VudCwgbV9mcmFtZXMuc2l6ZSgpLCBNZXRhZGF0YVR5cGU6
OkZyYW1lQ291bnQsICZJbWFnZURlY29kZXI6OmZyYW1lQ291bnQpOwogfQogCiBSZXBldGl0aW9u
Q291bnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCgpCiB7Ci0gICAgcmV0dXJuIG1ldGFk
YXRhPFJlcGV0aXRpb25Db3VudCwgKCZJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk+KFJl
cGV0aXRpb25Db3VudE5vbmUsICZtX3JlcGV0aXRpb25Db3VudCk7CisgICAgcmV0dXJuIG1ldGFk
YXRhQ2FjaGVJZk5lZWRlZChtX3JlcGV0aXRpb25Db3VudCwgc3RhdGljX2Nhc3Q8UmVwZXRpdGlv
bkNvdW50PihSZXBldGl0aW9uQ291bnROb25lKSwgTWV0YWRhdGFUeXBlOjpSZXBldGl0aW9uQ291
bnQsICZJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk7CiB9CiAKIFN0cmluZyBJbWFnZVNv
dXJjZTo6dXRpKCkKIHsKICNpZiBVU0UoQ0cpCi0gICAgcmV0dXJuIG1ldGFkYXRhPFN0cmluZywg
KCZJbWFnZURlY29kZXI6OnV0aSk+KFN0cmluZygpLCAmbV91dGkpOworICAgIHJldHVybiBtZXRh
ZGF0YUNhY2hlSWZOZWVkZWQobV91dGksIFN0cmluZygpLCBNZXRhZGF0YVR5cGU6OlVUSSwgJklt
YWdlRGVjb2Rlcjo6dXRpKTsKICNlbHNlCiAgICAgcmV0dXJuIFN0cmluZygpOwogI2VuZGlmCkBA
IC01NTQsMjcgKzU0NiwyNyBAQCBTdHJpbmcgSW1hZ2VTb3VyY2U6OnV0aSgpCiAKIFN0cmluZyBJ
bWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKQogewotICAgIHJldHVybiBtZXRhZGF0YTxT
dHJpbmcsICgmSW1hZ2VEZWNvZGVyOjpmaWxlbmFtZUV4dGVuc2lvbik+KFN0cmluZygpLCAmbV9m
aWxlbmFtZUV4dGVuc2lvbik7CisgICAgcmV0dXJuIG1ldGFkYXRhQ2FjaGVJZk5lZWRlZChtX2Zp
bGVuYW1lRXh0ZW5zaW9uLCBTdHJpbmcoKSwgTWV0YWRhdGFUeXBlOjpGaWxlTmFtZUV4dGVuc2lv
biwgJkltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24pOwogfQogCiBTdHJpbmcgSW1hZ2VT
b3VyY2U6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpCiB7Ci0gICAgcmV0dXJuIG1ldGFkYXRh
PFN0cmluZywgKCZJbWFnZURlY29kZXI6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbik+KFN0cmlu
ZygpLCAmbV9hY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24pOworICAgIHJldHVybiBtZXRhZGF0YUNh
Y2hlSWZOZWVkZWQobV9hY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24sIFN0cmluZygpLCBNZXRhZGF0
YVR5cGU6OkFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbiwgJkltYWdlRGVjb2Rlcjo6YWNjZXNzaWJp
bGl0eURlc2NyaXB0aW9uKTsKIH0KIAogT3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlU291cmNlOjpo
b3RTcG90KCkKIHsKLSAgICByZXR1cm4gbWV0YWRhdGE8T3B0aW9uYWw8SW50UG9pbnQ+LCAoJklt
YWdlRGVjb2Rlcjo6aG90U3BvdCk+KFdURjo6bnVsbG9wdCwgJm1faG90U3BvdCk7CisgICAgcmV0
dXJuIG1ldGFkYXRhQ2FjaGVJZk5lZWRlZChtX2hvdFNwb3QsIHsgfSwgTWV0YWRhdGFUeXBlOjpI
b3RTcG90LCAmSW1hZ2VEZWNvZGVyOjpob3RTcG90KTsKIH0KIAogSW1hZ2VPcmllbnRhdGlvbiBJ
bWFnZVNvdXJjZTo6b3JpZW50YXRpb24oKQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJ
bmRleENhY2hlSWZOZWVkZWQ8SW1hZ2VPcmllbnRhdGlvbj4oMCwgKCZJbWFnZUZyYW1lOjpvcmll
bnRhdGlvbiksICZtX29yaWVudGF0aW9uLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSk7
CisgICAgcmV0dXJuIGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQobV9vcmllbnRhdGlv
biwgTWV0YWRhdGFUeXBlOjpPcmllbnRhdGlvbiwgJkltYWdlRnJhbWU6Om9yaWVudGF0aW9uKTsK
IH0KIAogT3B0aW9uYWw8SW50U2l6ZT4gSW1hZ2VTb3VyY2U6OmRlbnNpdHlDb3JyZWN0ZWRTaXpl
KEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7Ci0gICAgYXV0byBzaXplID0gZnJhbWVN
ZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPE9wdGlvbmFsPEludFNpemU+PigwLCAmSW1hZ2VG
cmFtZTo6ZGVuc2l0eUNvcnJlY3RlZFNpemUsICZtX2RlbnNpdHlDb3JyZWN0ZWRTaXplLCBJbWFn
ZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSk7CisgICAgYXV0byBzaXplID0gZmlyc3RGcmFtZU1l
dGFkYXRhQ2FjaGVJZk5lZWRlZChtX2RlbnNpdHlDb3JyZWN0ZWRTaXplLCBNZXRhZGF0YVR5cGU6
OkRlbnNpdHlDb3JyZWN0ZWRTaXplLCAmSW1hZ2VGcmFtZTo6ZGVuc2l0eUNvcnJlY3RlZFNpemUp
OwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApAQCAtNjAw
LDcgKzU5Miw3IEBAIEludFNpemUgSW1hZ2VTb3VyY2U6OnNvdXJjZVNpemUoSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikKICAgICAgICAgc2l6ZSA9IG1fZGVjb2Rlci0+c2l6ZSgpOwogICAg
IGVsc2UKICNlbmRpZgotICAgICAgICBzaXplID0gZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlm
TmVlZGVkPEludFNpemU+KDAsICgmSW1hZ2VGcmFtZTo6c2l6ZSksICZtX3NpemUsIEltYWdlRnJh
bWU6OkNhY2hpbmc6Ok1ldGFkYXRhLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KTsKKyAgICAg
ICAgc2l6ZSA9IGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQobV9zaXplLCBNZXRhZGF0
YVR5cGU6OlNpemUsICZJbWFnZUZyYW1lOjpzaXplLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
KTsKICAgICAKICAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUlt
YWdlKQogICAgICAgICBvcmllbnRhdGlvbiA9IHRoaXMtPm9yaWVudGF0aW9uKCk7CkBAIC02MTAs
MTkgKzYwMiwxOCBAQCBJbnRTaXplIEltYWdlU291cmNlOjpzb3VyY2VTaXplKEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCiAKIENvbG9yIEltYWdlU291cmNlOjpzaW5nbGVQaXhlbFNvbGlk
Q29sb3IoKQogewotICAgIGlmICghbV9zaW5nbGVQaXhlbFNvbGlkQ29sb3IgJiYgKHNpemUoKSAh
PSBJbnRTaXplKDEsIDEpIHx8IGZyYW1lQ291bnQoKSAhPSAxKSkKKyAgICBpZiAoIW1fY2FjaGVk
TWV0YWRhdGEuY29udGFpbnMoTWV0YWRhdGFUeXBlOjpTaW5nbGVQaXhlbFNvbGlkQ29sb3IpICYm
IChzaXplKCkgIT0gSW50U2l6ZSgxLCAxKSB8fCBmcmFtZUNvdW50KCkgIT0gMSkpIHsKICAgICAg
ICAgbV9zaW5nbGVQaXhlbFNvbGlkQ29sb3IgPSBDb2xvcigpOworICAgICAgICBtX2NhY2hlZE1l
dGFkYXRhLmFkZChNZXRhZGF0YVR5cGU6OlNpbmdsZVBpeGVsU29saWRDb2xvcik7CisgICAgfQog
Ci0gICAgaWYgKG1fc2luZ2xlUGl4ZWxTb2xpZENvbG9yKQotICAgICAgICByZXR1cm4gbV9zaW5n
bGVQaXhlbFNvbGlkQ29sb3IudmFsdWUoKTsKLQotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJ
bmRleENhY2hlSWZOZWVkZWQ8Q29sb3I+KDAsICgmSW1hZ2VGcmFtZTo6c2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKSwgJm1fc2luZ2xlUGl4ZWxTb2xpZENvbG9yLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpN
ZXRhZGF0YUFuZEltYWdlKTsKKyAgICByZXR1cm4gZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5l
ZWRlZChtX3NpbmdsZVBpeGVsU29saWRDb2xvciwgTWV0YWRhdGFUeXBlOjpTaW5nbGVQaXhlbFNv
bGlkQ29sb3IsICZJbWFnZUZyYW1lOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOwogfQogCiBTdWJz
YW1wbGluZ0xldmVsIEltYWdlU291cmNlOjptYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpCiB7Ci0g
ICAgaWYgKG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBtX21heGlt
dW1TdWJzYW1wbGluZ0xldmVsLnZhbHVlKCk7CisgICAgaWYgKG1fY2FjaGVkTWV0YWRhdGEuY29u
dGFpbnMoTWV0YWRhdGFUeXBlOjpNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCkpCisgICAgICAgIHJl
dHVybiBtX21heGltdW1TdWJzYW1wbGluZ0xldmVsOwogCiAgICAgaWYgKCFpc0RlY29kZXJBdmFp
bGFibGUoKSB8fCAhbV9kZWNvZGVyLT5mcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KDApKQog
ICAgICAgICByZXR1cm4gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdDsKQEAgLTYzOSw3ICs2MzAs
OCBAQCBTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjptYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bCgpCiAgICAgfQogCiAgICAgbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCA9IGxldmVsOwotICAg
IHJldHVybiBtX21heGltdW1TdWJzYW1wbGluZ0xldmVsLnZhbHVlKCk7CisgICAgbV9jYWNoZWRN
ZXRhZGF0YS5hZGQoTWV0YWRhdGFUeXBlOjpNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CisgICAg
cmV0dXJuIG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWw7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6
OmZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoc2l6
ZV90IGluZGV4LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykKQEAgLTY1
Miw0NyArNjQ0LDQ3IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNCZWluZ0RlY29kZWRBbmRJ
c0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoc2l6ZV90IGluCiAKIERlY29kaW5nU3RhdHVz
IEltYWdlU291cmNlOjpmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChzaXplX3QgaW5kZXgpCiB7
Ci0gICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxEZWNvZGluZ1N0
YXR1cz4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6ZGVjb2RpbmdTdGF0dXMpLCBudWxscHRyLCBJbWFn
ZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSk7CisgICAgcmV0dXJuIGZyYW1lQXRJbmRleENhY2hl
SWZOZWVkZWQoaW5kZXgsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhKS5kZWNvZGluZ1N0
YXR1cygpOwogfQogCiBib29sIEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXpl
X3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4PGJvb2w+KGluZGV4
LCAoJkltYWdlRnJhbWU6Omhhc0FscGhhKSk7CisgICAgcmV0dXJuIGZyYW1lQXRJbmRleChpbmRl
eCkuaGFzQWxwaGEoKTsKIH0KIAogYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNGdWxsU2l6ZU5h
dGl2ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBsaW5n
TGV2ZWw+JiBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJ
bmRleDxib29sPihpbmRleCwgKCZJbWFnZUZyYW1lOjpoYXNGdWxsU2l6ZU5hdGl2ZUltYWdlKSwg
c3Vic2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lQXRJbmRleChpbmRleCkuaGFzRnVs
bFNpemVOYXRpdmVJbWFnZShzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAogYm9vbCBJbWFnZVNvdXJj
ZTo6ZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4
KHNpemVfdCBpbmRleCwgY29uc3QgT3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBs
aW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKQogewotICAg
IHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleDxib29sPihpbmRleCwgKCZJbWFnZUZyYW1lOjpo
YXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnMpLCBzdWJzYW1wbGluZ0xl
dmVsLCBkZWNvZGluZ09wdGlvbnMpOworICAgIHJldHVybiBmcmFtZUF0SW5kZXgoaW5kZXgpLmhh
c0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9ucyhzdWJzYW1wbGluZ0xldmVs
LCBkZWNvZGluZ09wdGlvbnMpOwogfQogCiBTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpm
cmFtZVN1YnNhbXBsaW5nTGV2ZWxBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4g
ZnJhbWVNZXRhZGF0YUF0SW5kZXg8U3Vic2FtcGxpbmdMZXZlbD4oaW5kZXgsICgmSW1hZ2VGcmFt
ZTo6c3Vic2FtcGxpbmdMZXZlbCkpOworICAgIHJldHVybiBmcmFtZUF0SW5kZXgoaW5kZXgpLnN1
YnNhbXBsaW5nTGV2ZWwoKTsKIH0KIAogSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsK
LSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPEludFNpemU+KGlu
ZGV4LCAoJkltYWdlRnJhbWU6OnNpemUpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpN
ZXRhZGF0YSwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lQXRJbmRleENhY2hl
SWZOZWVkZWQoaW5kZXgsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhLCBzdWJzYW1wbGlu
Z0xldmVsKS5zaXplKCk7CiB9CiAKIHVuc2lnbmVkIEltYWdlU291cmNlOjpmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsK
LSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPHVuc2lnbmVkPihp
bmRleCwgKCZJbWFnZUZyYW1lOjpmcmFtZUJ5dGVzKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2Fj
aGluZzo6TWV0YWRhdGEsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZUF0SW5k
ZXhDYWNoZUlmTmVlZGVkKGluZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSwgc3Vi
c2FtcGxpbmdMZXZlbCkuZnJhbWVCeXRlcygpOwogfQogCiBTZWNvbmRzIEltYWdlU291cmNlOjpm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lTWV0
YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxTZWNvbmRzPihpbmRleCwgKCZJbWFnZUZyYW1lOjpk
dXJhdGlvbiksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhKTsKKyAgICBy
ZXR1cm4gZnJhbWVBdEluZGV4Q2FjaGVJZk5lZWRlZChpbmRleCwgSW1hZ2VGcmFtZTo6Q2FjaGlu
Zzo6TWV0YWRhdGEpLmR1cmF0aW9uKCk7CiB9CiAKIEltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3Vy
Y2U6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4g
ZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPEltYWdlT3JpZW50YXRpb24+KGluZGV4
LCAoJkltYWdlRnJhbWU6Om9yaWVudGF0aW9uKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2FjaGlu
Zzo6TWV0YWRhdGEpOworICAgIHJldHVybiBmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGluZGV4
LCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSkub3JpZW50YXRpb24oKTsKIH0KIAogI2lm
IFVTRShESVJFQ1QyRCkKQEAgLTcxMiwxMiArNzA0LDEyIEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpCiAKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8UmVmUHRy
PE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKKyAgICBy
ZXR1cm4gZnJhbWVBdEluZGV4KGluZGV4KS5uYXRpdmVJbWFnZSgpOwogfQogCiBSZWZQdHI8TmF0
aXZlSW1hZ2U+IEltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxSZWZQdHI8TmF0aXZlSW1hZ2U+
PihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6
OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVy
biBmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGluZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpN
ZXRhZGF0YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKS5uYXRpdmVJbWFnZSgpOwogfQogCiB2
b2lkIEltYWdlU291cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggYTA0OTEzNThmMDk0Yjg5ZTQy
MDNlMWMzNzliZWYwMTliOTc5NTA1OS4uMDVjYzkwYTBiNTIyYWE0NjI1NjViYTA3ODkxMjczMDYx
ZDE4OWE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMzQsMTQgKzEzNCwyNiBAQCBwcml2YXRlOgogICAgIEltYWdlU291cmNl
KEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6
QXBwbGllZCk7CiAgICAgSW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+
Ci0gICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNo
ZWRWYWx1ZSA9IG51bGxwdHIpOworICAgIGVudW0gY2xhc3MgTWV0YWRhdGFUeXBlIHsKKyAgICAg
ICAgRW5jb2RlZERhdGFTdGF0dXMgICAgICAgICAgID0gMSA8PCAwLAorICAgICAgICBGcmFtZUNv
dW50ICAgICAgICAgICAgICAgICAgPSAxIDw8IDEsCisgICAgICAgIFJlcGV0aXRpb25Db3VudCAg
ICAgICAgICAgICA9IDEgPDwgMiwKKyAgICAgICAgVVRJICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMSA8PCAzLAorICAgICAgICBGaWxlTmFtZUV4dGVuc2lvbiAgICAgICAgICAgPSAxIDw8IDQs
CisgICAgICAgIEFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbiAgICA9IDEgPDwgNSwKKyAgICAgICAg
SG90U3BvdCAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA2LAorICAgICAgICBTaXplICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxIDw8IDcsCisgICAgICAgIERlbnNpdHlDb3JyZWN0ZWRTaXpl
ICAgICAgICA9IDEgPDwgOCwKKyAgICAgICAgT3JpZW50YXRpb24gICAgICAgICAgICAgICAgID0g
MSA8PCA5LAorICAgICAgICBTaW5nbGVQaXhlbFNvbGlkQ29sb3IgICAgICAgPSAxIDw8IDEwLAor
ICAgICAgICBNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCAgICAgPSAxIDw8IDExCisgICAgfTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgVCBmcmFtZU1l
dGFkYXRhQXRJbmRleChzaXplX3QsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKShBcmdzLi4uKSBj
b25zdCwgQXJncyYmLi4uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFQgbWV0YWRh
dGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE1l
dGFkYXRhVHlwZSwgVCAoSW1hZ2VEZWNvZGVyOjoqZnVuY3RvcikoKSBjb25zdCk7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIFQgZnJhbWVNZXRhZGF0
YUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkg
Y29uc3QsICBPcHRpb25hbDxUPiogY2FjaGVkVmFsdWUsIEFyZ3MmJi4uLik7CisgICAgVCBmaXJz
dEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBNZXRhZGF0YVR5cGUs
IFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNvbnN0LCBBcmdzJiYuLi4pOwogCiAgICAgYm9v
bCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSk7CiAgICAgYm9vbCBp
c0RlY29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0KQEAgLTE2Myw2
ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIFdvcmtRdWV1ZSYgZGVjb2RpbmdRdWV1ZSgpOwogICAg
IFN5bmNocm9uaXplZEZpeGVkUXVldWU8SW1hZ2VGcmFtZVJlcXVlc3QsIEJ1ZmZlclNpemU+JiBm
cmFtZVJlcXVlc3RRdWV1ZSgpOwogCisgICAgY29uc3QgSW1hZ2VGcmFtZSYgZnJhbWVBdEluZGV4
KHNpemVfdCBpbmRleCkgeyByZXR1cm4gaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgPyBtX2ZyYW1l
c1tpbmRleF0gOiBJbWFnZUZyYW1lOjpkZWZhdWx0RnJhbWUoKTsgfQogICAgIGNvbnN0IEltYWdl
RnJhbWUmIGZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90LCBJbWFnZUZyYW1lOjpDYWNo
aW5nLCBjb25zdCBPcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pOwogCiAgICAgdm9p
ZCBkdW1wKFRleHRTdHJlYW0mKTsKQEAgLTE5NSwyMCArMjA4LDIyIEBAIHByaXZhdGU6CiAgICAg
U2Vjb25kcyBtX2ZyYW1lRGVjb2RpbmdEdXJhdGlvbkZvclRlc3Rpbmc7CiAKICAgICAvLyBJbWFn
ZSBtZXRhZGF0YS4KLSAgICBPcHRpb25hbDxFbmNvZGVkRGF0YVN0YXR1cz4gbV9lbmNvZGVkRGF0
YVN0YXR1czsKLSAgICBPcHRpb25hbDxzaXplX3Q+IG1fZnJhbWVDb3VudDsKLSAgICBPcHRpb25h
bDxSZXBldGl0aW9uQ291bnQ+IG1fcmVwZXRpdGlvbkNvdW50OwotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gbV91dGk7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBtX2ZpbGVuYW1lRXh0ZW5zaW9uOwotICAg
IE9wdGlvbmFsPFN0cmluZz4gbV9hY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb247Ci0gICAgT3B0aW9u
YWw8T3B0aW9uYWw8SW50UG9pbnQ+PiBtX2hvdFNwb3Q7CisgICAgRW5jb2RlZERhdGFTdGF0dXMg
bV9lbmNvZGVkRGF0YVN0YXR1czsKKyAgICBzaXplX3QgbV9mcmFtZUNvdW50OworICAgIFJlcGV0
aXRpb25Db3VudCBtX3JlcGV0aXRpb25Db3VudDsKKyAgICBTdHJpbmcgbV91dGk7CisgICAgU3Ry
aW5nIG1fZmlsZW5hbWVFeHRlbnNpb247CisgICAgU3RyaW5nIG1fYWNjZXNzaWJpbGl0eURlc2Ny
aXB0aW9uOworICAgIE9wdGlvbmFsPEludFBvaW50PiBtX2hvdFNwb3Q7CiAKICAgICAvLyBJbWFn
ZSBtZXRhZGF0YSB3aGljaCBpcyBjYWxjdWxhdGVkIGZyb20gdGhlIGZpcnN0IEltYWdlRnJhbWUu
Ci0gICAgT3B0aW9uYWw8SW50U2l6ZT4gbV9zaXplOwotICAgIE9wdGlvbmFsPEltYWdlT3JpZW50
YXRpb24+IG1fb3JpZW50YXRpb247Ci0gICAgT3B0aW9uYWw8T3B0aW9uYWw8SW50U2l6ZT4+IG1f
ZGVuc2l0eUNvcnJlY3RlZFNpemU7Ci0gICAgT3B0aW9uYWw8Q29sb3I+IG1fc2luZ2xlUGl4ZWxT
b2xpZENvbG9yOwotICAgIE9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+IG1fbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWw7CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAgT3B0aW9uYWw8SW50U2l6ZT4g
bV9kZW5zaXR5Q29ycmVjdGVkU2l6ZTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRp
b247CisgICAgQ29sb3IgbV9zaW5nbGVQaXhlbFNvbGlkQ29sb3I7CisgICAgU3Vic2FtcGxpbmdM
ZXZlbCBtX21heGltdW1TdWJzYW1wbGluZ0xldmVsOworCisgICAgT3B0aW9uU2V0PE1ldGFkYXRh
VHlwZT4gbV9jYWNoZWRNZXRhZGF0YTsKIAogICAgIFJ1bkxvb3AmIG1fcnVuTG9vcDsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425219</attachid>
            <date>2021-04-05 15:58:44 -0700</date>
            <delta_ts>2021-04-06 13:40:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224202-20210405155843.patch</filename>
            <type>text/plain</type>
            <size>20231</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBlYzg2MTA4OTRhYzYz
MGFkMGQ0YTIwNTBlMDc4OTJmYTEyMzIwOC4uZmRmMWRjYmU4OGVlNGVkMDJlYzU5NDVjZDRhNzJm
NWQwNzNiNjU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTA0LTA1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgdGhlIE9w
dGlvbmFsIG1ldGFkYXRhIG9mIEltYWdlU291cmNlIGJ5IGEgc2luZ2xlIE9wdGlvblNldCBhbmQg
dGhlIHVuZGVybHlpbmcgbWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDIwMgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KKworICAgICAgICBFbmNhcHN1bGF0aW5nIHRoZSBtZXRhZGF0YSBpbiBhIE9wdGlvbmFscyBh
ZGRzIGV4dHJhIG1lbW9yeSBjb3N0LiBSZXBsYWNlCisgICAgICAgIHRoZXNlIE9wdGlvbmFscyBi
eSB0aGUgdW5kZXJseWluZyBtZXRhZGF0YSBhbmQgYW4gT3B0aW9uU2V0IHRvIHRlbGwgd2hpY2gK
KyAgICAgICAgb25lcyBhcmUgY2FjaGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKToKKyAgICAgICAgSW5zdGVhZCBvZiBhc3NlcnRpb24gaW5kZXggPCBtX2ZyYW1lcy5z
aXplKCksIHdlIGNhbiByZXR1cm4gZGVmYXVsdEZyYW1lKCkuCisgICAgICAgIFRoaXMgd2lsbCB1
c2VkIGluIG1hbnkgY2FsbGVycyB3aGljaCBjaGVja3MgdGhlIHNpemUgYmVmb3JlIGNhbGxpbmcg
aXQuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjbGVhck1ldGFkYXRhKToKKwor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om1ldGFkYXRhQ2FjaGVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Zmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5l
ZWRlZCk6CisgICAgICAgIFRoZXNlIHR3byB0ZW1wbGF0ZSBmdW5jdGlvbnMgd2lsbCBiZSB1c2Vk
IHRvIHJldHVybiBhbmQgY2FjaGUsIGlmIG5lZWRlZCwKKyAgICAgICAgdGhlIGltYWdlIG1ldGFk
YXRhLiBUaGUgZmlyc3QgZnVuY3Rpb24gdXNlcyB0aGUgSW1hZ2VEZWNvZGVyIHdoaWxlIHRoZQor
ICAgICAgICBzZWNvbmQgb25lIHVzZXMgdGhlIGZpcnN0IEltYWdlRnJhbWUgb2YgdGhlIGltYWdl
LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5jb2RlZERhdGFTdGF0dXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6dXRpKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFt
ZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6YWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpob3RTcG90KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpvcmllbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZGVuc2l0eUNvcnJlY3RlZFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OnNvdXJjZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6ZnJhbWVIYXNGdWxsU2l6ZU5hdGl2ZUltYWdlQXRJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxl
V2l0aE9wdGlvbnNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFt
ZVN1YnNhbXBsaW5nTGV2ZWxBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFt
ZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVEdXJh
dGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lT3JpZW50
YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdl
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5k
ZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjptZXRhZGF0
YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVNZXRhZGF0
YUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1l
TWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUF0SW5kZXgpOgorCiAyMDIxLTA0LTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIHdlIGFyZSBubyBsb25nZXIgc2hvdyB0aGUgcHJl
dmlvdXMgcGFnZSB3aGVuIHJ1bm5pbmcgYSBKUyBwcm9tcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA2ZDM5NWZkNDY2ZDc2YzY3
MGRiZDQ2N2FlNWUzZmViMzdiMzE3NjY5Li42MmEwZDVhZDY0YzczZWE4NjMwYmFjZTI5ZTQyOTBm
M2YwYWQ0MWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1NCw3IEBAIEltYWdlU291cmNlOjpJbWFnZVNvdXJj
ZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgbV9mcmFtZUNvdW50
ID0gMTsKICAgICBtX2VuY29kZWREYXRhU3RhdHVzID0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBs
ZXRlOworICAgIG1fY2FjaGVkTWV0YWRhdGEuYWRkKHsgTWV0YWRhdGFUeXBlOjpFbmNvZGVkRGF0
YVN0YXR1cywgTWV0YWRhdGFUeXBlOjpGcmFtZUNvdW50IH0pOwogICAgIGdyb3dGcmFtZXMoKTsK
IAogICAgIHNldE5hdGl2ZUltYWdlKFdURk1vdmUobmF0aXZlSW1hZ2UpKTsKQEAgLTYyLDYgKzYz
LDcgQEAgSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBuYXRp
dmVJbWFnZSkKIAogICAgIG1fc2l6ZSA9IG1fZnJhbWVzWzBdLnNpemUoKTsKICAgICBtX29yaWVu
dGF0aW9uID0gSW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBt
X2NhY2hlZE1ldGFkYXRhLmFkZCh7IE1ldGFkYXRhVHlwZTo6U2l6ZSwgTWV0YWRhdGFUeXBlOjpP
cmllbnRhdGlvbiB9KTsKIH0KIAogSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCkBAIC00MzUs
NyArNDM3LDkgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c3RvcEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAK
IGNvbnN0IEltYWdlRnJhbWUmIEltYWdlU291cmNlOjpmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVk
KHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZTo6Q2FjaGluZyBjYWNoaW5nLCBjb25zdCBPcHRpb25h
bDxTdWJzYW1wbGluZ0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICBBU1NFUlQoaW5k
ZXggPCBtX2ZyYW1lcy5zaXplKCkpOworICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkp
CisgICAgICAgIHJldHVybiBJbWFnZUZyYW1lOjpkZWZhdWx0RnJhbWUoKTsKKyAgICAKICAgICBJ
bWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzW2luZGV4XTsKICAgICBpZiAoIWlzRGVjb2RlckF2
YWlsYWJsZSgpIHx8IGZyYW1lSXNCZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9u
c0F0SW5kZXgoaW5kZXgsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91
cykpKQogICAgICAgICByZXR1cm4gZnJhbWU7CkBAIC00NjYsMTEgKzQ3MCw3IEBAIGNvbnN0IElt
YWdlRnJhbWUmIEltYWdlU291cmNlOjpmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBp
bmRleCwgSW1hZ2VGcmFtCiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyTWV0YWRhdGEoKQogewot
ICAgIG1fZnJhbWVDb3VudCA9IFdURjo6bnVsbG9wdDsKLSAgICBtX3JlcGV0aXRpb25Db3VudCA9
IFdURjo6bnVsbG9wdDsKLSAgICBtX3NpbmdsZVBpeGVsU29saWRDb2xvciA9IFdURjo6bnVsbG9w
dDsKLSAgICBtX2VuY29kZWREYXRhU3RhdHVzID0gV1RGOjpudWxsb3B0OwotICAgIG1fdXRpID0g
V1RGOjpudWxsb3B0OworICAgIG1fY2FjaGVkTWV0YWRhdGEgPSB7IH07CiB9CiAKIFVSTCBJbWFn
ZVNvdXJjZTo6c291cmNlVVJMKCkgY29uc3QKQEAgLTQ4OCw2NSArNDg4LDU3IEBAIGxvbmcgbG9u
ZyBJbWFnZVNvdXJjZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4g
bV9pbWFnZSA/IG1faW1hZ2UtPmV4cGVjdGVkQ29udGVudExlbmd0aCgpIDogMDsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVCwgVCAoSW1hZ2VEZWNvZGVyOjoqZnVuY3RvcikoKSBjb25zdD4KLVQg
SW1hZ2VTb3VyY2U6Om1ldGFkYXRhKGNvbnN0IFQmIGRlZmF1bHRWYWx1ZSwgT3B0aW9uYWw8VD4q
IGNhY2hlZFZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1QgSW1hZ2VTb3VyY2U6Om1ldGFk
YXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgY29uc3QgVCYgZGVmYXVsdFZhbHVlLCBN
ZXRhZGF0YVR5cGUgbWV0YWRhdGFUeXBlLCBUIChJbWFnZURlY29kZXI6OipmdW5jdG9yKSgpIGNv
bnN0KQogewotICAgIGlmIChjYWNoZWRWYWx1ZSAmJiAqY2FjaGVkVmFsdWUpCi0gICAgICAgIHJl
dHVybiBjYWNoZWRWYWx1ZS0+dmFsdWUoKTsKKyAgICBpZiAobV9jYWNoZWRNZXRhZGF0YS5jb250
YWlucyhtZXRhZGF0YVR5cGUpKQorICAgICAgICByZXR1cm4gY2FjaGVkVmFsdWU7CiAKICAgICBp
ZiAoIWlzRGVjb2RlckF2YWlsYWJsZSgpIHx8ICFtX2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgp
KQogICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwogCi0gICAgaWYgKCFjYWNoZWRWYWx1ZSkK
LSAgICAgICAgcmV0dXJuICgqbV9kZWNvZGVyLipmdW5jdG9yKSgpOwotCi0gICAgKmNhY2hlZFZh
bHVlID0gKCptX2RlY29kZXIuKmZ1bmN0b3IpKCk7CisgICAgY2FjaGVkVmFsdWUgPSAoKm1fZGVj
b2Rlci4qZnVuY3RvcikoKTsKKyAgICBtX2NhY2hlZE1ldGFkYXRhLmFkZChtZXRhZGF0YVR5cGUp
OwogICAgIGRpZERlY29kZVByb3BlcnRpZXMobV9kZWNvZGVyLT5ieXRlc0RlY29kZWRUb0RldGVy
bWluZVByb3BlcnRpZXMoKSk7Ci0gICAgcmV0dXJuIGNhY2hlZFZhbHVlLT52YWx1ZSgpOworICAg
IHJldHVybiBjYWNoZWRWYWx1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUu
Li4gQXJncz4KLVQgSW1hZ2VTb3VyY2U6OmZyYW1lTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRl
eCwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKEFyZ3MuLi4pIGNvbnN0LCBBcmdzJiYuLi4gYXJn
cykKK1QgSW1hZ2VTb3VyY2U6OmZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQoVCYgY2Fj
aGVkVmFsdWUsIE1ldGFkYXRhVHlwZSBtZXRhZGF0YVR5cGUsIFQgKEltYWdlRnJhbWU6OipmdW5j
dG9yKSgpIGNvbnN0LCBBcmdzJiYuLi4gYXJncykKIHsKLSAgICBjb25zdCBJbWFnZUZyYW1lJiBm
cmFtZSA9IGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpID8gbV9mcmFtZXNbaW5kZXhdIDogSW1hZ2VG
cmFtZTo6ZGVmYXVsdEZyYW1lKCk7Ci0gICAgcmV0dXJuIChmcmFtZS4qZnVuY3Rvcikoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLX0KKyAgICBpZiAobV9jYWNoZWRNZXRhZGF0YS5jb250
YWlucyhtZXRhZGF0YVR5cGUpKQorICAgICAgICByZXR1cm4gY2FjaGVkVmFsdWU7CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci1UIEltYWdlU291cmNlOjpmcmFtZU1l
dGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBUIChJbWFnZUZyYW1lOjoq
ZnVuY3RvcikoKSBjb25zdCwgT3B0aW9uYWw8VD4qIGNhY2hlZFZhbHVlLCBBcmdzJiYuLi4gYXJn
cykKLXsKLSAgICBpZiAoY2FjaGVkVmFsdWUgJiYgKmNhY2hlZFZhbHVlKQotICAgICAgICByZXR1
cm4gY2FjaGVkVmFsdWUtPnZhbHVlKCk7Ci0KLSAgICBjb25zdCBJbWFnZUZyYW1lJiBmcmFtZSA9
IGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpID8gZnJhbWVBdEluZGV4Q2FjaGVJZk5lZWRlZChpbmRl
eCwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSA6IEltYWdlRnJhbWU6OmRlZmF1bHRGcmFt
ZSgpOworICAgIGNvbnN0IEltYWdlRnJhbWUmIGZyYW1lID0gZnJhbWVBdEluZGV4Q2FjaGVJZk5l
ZWRlZCgwLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSwgc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKTsKIAogICAgIC8vIERvbid0IGNhY2hlIGFueSB1bmF2YWlsYWJsZSBmcmFtZSBt
ZXRhZGF0YS4KLSAgICBpZiAoIWZyYW1lLmhhc01ldGFkYXRhKCkgfHwgIWNhY2hlZFZhbHVlKQor
ICAgIGlmICghZnJhbWUuaGFzTWV0YWRhdGEoKSkKICAgICAgICAgcmV0dXJuIChmcmFtZS4qZnVu
Y3RvcikoKTsKIAotICAgICpjYWNoZWRWYWx1ZSA9IChmcmFtZS4qZnVuY3RvcikoKTsKLSAgICBy
ZXR1cm4gY2FjaGVkVmFsdWUtPnZhbHVlKCk7CisgICAgY2FjaGVkVmFsdWUgPSAoZnJhbWUuKmZ1
bmN0b3IpKCk7CisgICAgbV9jYWNoZWRNZXRhZGF0YS5hZGQobWV0YWRhdGFUeXBlKTsKKyAgICBy
ZXR1cm4gY2FjaGVkVmFsdWU7CiB9CiAKIEVuY29kZWREYXRhU3RhdHVzIEltYWdlU291cmNlOjpl
bmNvZGVkRGF0YVN0YXR1cygpCiB7Ci0gICAgcmV0dXJuIG1ldGFkYXRhPEVuY29kZWREYXRhU3Rh
dHVzLCAoJkltYWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMpPihFbmNvZGVkRGF0YVN0YXR1
czo6VW5rbm93biwgJm1fZW5jb2RlZERhdGFTdGF0dXMpOworICAgIHJldHVybiBtZXRhZGF0YUNh
Y2hlSWZOZWVkZWQobV9lbmNvZGVkRGF0YVN0YXR1cywgRW5jb2RlZERhdGFTdGF0dXM6OlVua25v
d24sIE1ldGFkYXRhVHlwZTo6RW5jb2RlZERhdGFTdGF0dXMsICZJbWFnZURlY29kZXI6OmVuY29k
ZWREYXRhU3RhdHVzKTsKIH0KIAogc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkKIHsK
LSAgICByZXR1cm4gbWV0YWRhdGE8c2l6ZV90LCAoJkltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk+
KG1fZnJhbWVzLnNpemUoKSwgJm1fZnJhbWVDb3VudCk7CisgICAgcmV0dXJuIG1ldGFkYXRhQ2Fj
aGVJZk5lZWRlZChtX2ZyYW1lQ291bnQsIG1fZnJhbWVzLnNpemUoKSwgTWV0YWRhdGFUeXBlOjpG
cmFtZUNvdW50LCAmSW1hZ2VEZWNvZGVyOjpmcmFtZUNvdW50KTsKIH0KIAogUmVwZXRpdGlvbkNv
dW50IEltYWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQoKQogewotICAgIHJldHVybiBtZXRhZGF0
YTxSZXBldGl0aW9uQ291bnQsICgmSW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9uQ291bnQpPihSZXBl
dGl0aW9uQ291bnROb25lLCAmbV9yZXBldGl0aW9uQ291bnQpOworICAgIHJldHVybiBtZXRhZGF0
YUNhY2hlSWZOZWVkZWQobV9yZXBldGl0aW9uQ291bnQsIHN0YXRpY19jYXN0PFJlcGV0aXRpb25D
b3VudD4oUmVwZXRpdGlvbkNvdW50Tm9uZSksIE1ldGFkYXRhVHlwZTo6UmVwZXRpdGlvbkNvdW50
LCAmSW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9uQ291bnQpOwogfQogCiBTdHJpbmcgSW1hZ2VTb3Vy
Y2U6OnV0aSgpCiB7CiAjaWYgVVNFKENHKQotICAgIHJldHVybiBtZXRhZGF0YTxTdHJpbmcsICgm
SW1hZ2VEZWNvZGVyOjp1dGkpPihTdHJpbmcoKSwgJm1fdXRpKTsKKyAgICByZXR1cm4gbWV0YWRh
dGFDYWNoZUlmTmVlZGVkKG1fdXRpLCBTdHJpbmcoKSwgTWV0YWRhdGFUeXBlOjpVVEksICZJbWFn
ZURlY29kZXI6OnV0aSk7CiAjZWxzZQogICAgIHJldHVybiBTdHJpbmcoKTsKICNlbmRpZgpAQCAt
NTU0LDI3ICs1NDYsMjcgQEAgU3RyaW5nIEltYWdlU291cmNlOjp1dGkoKQogCiBTdHJpbmcgSW1h
Z2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkKIHsKLSAgICByZXR1cm4gbWV0YWRhdGE8U3Ry
aW5nLCAoJkltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24pPihTdHJpbmcoKSwgJm1fZmls
ZW5hbWVFeHRlbnNpb24pOworICAgIHJldHVybiBtZXRhZGF0YUNhY2hlSWZOZWVkZWQobV9maWxl
bmFtZUV4dGVuc2lvbiwgU3RyaW5nKCksIE1ldGFkYXRhVHlwZTo6RmlsZU5hbWVFeHRlbnNpb24s
ICZJbWFnZURlY29kZXI6OmZpbGVuYW1lRXh0ZW5zaW9uKTsKIH0KIAogU3RyaW5nIEltYWdlU291
cmNlOjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKQogewotICAgIHJldHVybiBtZXRhZGF0YTxT
dHJpbmcsICgmSW1hZ2VEZWNvZGVyOjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24pPihTdHJpbmco
KSwgJm1fYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gbWV0YWRhdGFDYWNo
ZUlmTmVlZGVkKG1fYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uLCBTdHJpbmcoKSwgTWV0YWRhdGFU
eXBlOjpBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24sICZJbWFnZURlY29kZXI6OmFjY2Vzc2liaWxp
dHlEZXNjcmlwdGlvbik7CiB9CiAKIE9wdGlvbmFsPEludFBvaW50PiBJbWFnZVNvdXJjZTo6aG90
U3BvdCgpCiB7Ci0gICAgcmV0dXJuIG1ldGFkYXRhPE9wdGlvbmFsPEludFBvaW50PiwgKCZJbWFn
ZURlY29kZXI6OmhvdFNwb3QpPihXVEY6Om51bGxvcHQsICZtX2hvdFNwb3QpOworICAgIHJldHVy
biBtZXRhZGF0YUNhY2hlSWZOZWVkZWQobV9ob3RTcG90LCB7IH0sIE1ldGFkYXRhVHlwZTo6SG90
U3BvdCwgJkltYWdlRGVjb2Rlcjo6aG90U3BvdCk7CiB9CiAKIEltYWdlT3JpZW50YXRpb24gSW1h
Z2VTb3VyY2U6Om9yaWVudGF0aW9uKCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5k
ZXhDYWNoZUlmTmVlZGVkPEltYWdlT3JpZW50YXRpb24+KDAsICgmSW1hZ2VGcmFtZTo6b3JpZW50
YXRpb24pLCAmbV9vcmllbnRhdGlvbiwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0YWRhdGEpOwor
ICAgIHJldHVybiBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKG1fb3JpZW50YXRpb24s
IE1ldGFkYXRhVHlwZTo6T3JpZW50YXRpb24sICZJbWFnZUZyYW1lOjpvcmllbnRhdGlvbik7CiB9
CiAKIE9wdGlvbmFsPEludFNpemU+IEltYWdlU291cmNlOjpkZW5zaXR5Q29ycmVjdGVkU2l6ZShJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewotICAgIGF1dG8gc2l6ZSA9IGZyYW1lTWV0
YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxPcHRpb25hbDxJbnRTaXplPj4oMCwgJkltYWdlRnJh
bWU6OmRlbnNpdHlDb3JyZWN0ZWRTaXplLCAmbV9kZW5zaXR5Q29ycmVjdGVkU2l6ZSwgSW1hZ2VG
cmFtZTo6Q2FjaGluZzo6TWV0YWRhdGEpOworICAgIGF1dG8gc2l6ZSA9IGZpcnN0RnJhbWVNZXRh
ZGF0YUNhY2hlSWZOZWVkZWQobV9kZW5zaXR5Q29ycmVjdGVkU2l6ZSwgTWV0YWRhdGFUeXBlOjpE
ZW5zaXR5Q29ycmVjdGVkU2l6ZSwgJkltYWdlRnJhbWU6OmRlbnNpdHlDb3JyZWN0ZWRTaXplKTsK
ICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKQEAgLTYwMCw3
ICs1OTIsNyBAQCBJbnRTaXplIEltYWdlU291cmNlOjpzb3VyY2VTaXplKEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiAgICAgICAgIHNpemUgPSBtX2RlY29kZXItPnNpemUoKTsKICAgICBl
bHNlCiAjZW5kaWYKLSAgICAgICAgc2l6ZSA9IGZyYW1lTWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5l
ZWRlZDxJbnRTaXplPigwLCAoJkltYWdlRnJhbWU6OnNpemUpLCAmbV9zaXplLCBJbWFnZUZyYW1l
OjpDYWNoaW5nOjpNZXRhZGF0YSwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7CisgICAgICAg
IHNpemUgPSBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKG1fc2l6ZSwgTWV0YWRhdGFU
eXBlOjpTaXplLCAmSW1hZ2VGcmFtZTo6c2l6ZSwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7
CiAgICAgCiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFn
ZSkKICAgICAgICAgb3JpZW50YXRpb24gPSB0aGlzLT5vcmllbnRhdGlvbigpOwpAQCAtNjEwLDE5
ICs2MDIsMTggQEAgSW50U2l6ZSBJbWFnZVNvdXJjZTo6c291cmNlU2l6ZShJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQogCiBDb2xvciBJbWFnZVNvdXJjZTo6c2luZ2xlUGl4ZWxTb2xpZENv
bG9yKCkKIHsKLSAgICBpZiAoIW1fc2luZ2xlUGl4ZWxTb2xpZENvbG9yICYmIChzaXplKCkgIT0g
SW50U2l6ZSgxLCAxKSB8fCBmcmFtZUNvdW50KCkgIT0gMSkpCisgICAgaWYgKCFtX2NhY2hlZE1l
dGFkYXRhLmNvbnRhaW5zKE1ldGFkYXRhVHlwZTo6U2luZ2xlUGl4ZWxTb2xpZENvbG9yKSAmJiAo
c2l6ZSgpICE9IEludFNpemUoMSwgMSkgfHwgZnJhbWVDb3VudCgpICE9IDEpKSB7CiAgICAgICAg
IG1fc2luZ2xlUGl4ZWxTb2xpZENvbG9yID0gQ29sb3IoKTsKKyAgICAgICAgbV9jYWNoZWRNZXRh
ZGF0YS5hZGQoTWV0YWRhdGFUeXBlOjpTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOworICAgIH0KIAot
ICAgIGlmIChtX3NpbmdsZVBpeGVsU29saWRDb2xvcikKLSAgICAgICAgcmV0dXJuIG1fc2luZ2xl
UGl4ZWxTb2xpZENvbG9yLnZhbHVlKCk7Ci0KLSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5k
ZXhDYWNoZUlmTmVlZGVkPENvbG9yPigwLCAoJkltYWdlRnJhbWU6OnNpbmdsZVBpeGVsU29saWRD
b2xvciksICZtX3NpbmdsZVBpeGVsU29saWRDb2xvciwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0
YWRhdGFBbmRJbWFnZSk7CisgICAgcmV0dXJuIGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVk
ZWQobV9zaW5nbGVQaXhlbFNvbGlkQ29sb3IsIE1ldGFkYXRhVHlwZTo6U2luZ2xlUGl4ZWxTb2xp
ZENvbG9yLCAmSW1hZ2VGcmFtZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKTsKIH0KIAogU3Vic2Ft
cGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKQogewotICAg
IGlmIChtX21heGltdW1TdWJzYW1wbGluZ0xldmVsKQotICAgICAgICByZXR1cm4gbV9tYXhpbXVt
U3Vic2FtcGxpbmdMZXZlbC52YWx1ZSgpOworICAgIGlmIChtX2NhY2hlZE1ldGFkYXRhLmNvbnRh
aW5zKE1ldGFkYXRhVHlwZTo6TWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpKQorICAgICAgICByZXR1
cm4gbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbDsKIAogICAgIGlmICghaXNEZWNvZGVyQXZhaWxh
YmxlKCkgfHwgIW1fZGVjb2Rlci0+ZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleCgwKSkKICAg
ICAgICAgcmV0dXJuIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7CkBAIC02MzksNyArNjMwLDgg
QEAgU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwo
KQogICAgIH0KIAogICAgIG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgPSBsZXZlbDsKLSAgICBy
ZXR1cm4gbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbC52YWx1ZSgpOworICAgIG1fY2FjaGVkTWV0
YWRhdGEuYWRkKE1ldGFkYXRhVHlwZTo6TWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJl
dHVybiBtX21heGltdW1TdWJzYW1wbGluZ0xldmVsOwogfQogCiBib29sIEltYWdlU291cmNlOjpm
cmFtZUlzQmVpbmdEZWNvZGVkQW5kSXNDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KHNpemVf
dCBpbmRleCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMpCkBAIC02NTIs
NDcgKzY0NCw0NyBAQCBib29sIEltYWdlU291cmNlOjpmcmFtZUlzQmVpbmdEZWNvZGVkQW5kSXND
b21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KHNpemVfdCBpbgogCiBEZWNvZGluZ1N0YXR1cyBJ
bWFnZVNvdXJjZTo6ZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgoc2l6ZV90IGluZGV4KQogewot
ICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQ8RGVjb2RpbmdTdGF0
dXM+KGluZGV4LCAoJkltYWdlRnJhbWU6OmRlY29kaW5nU3RhdHVzKSwgbnVsbHB0ciwgSW1hZ2VG
cmFtZTo6Q2FjaGluZzo6TWV0YWRhdGEpOworICAgIHJldHVybiBmcmFtZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKGluZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSkuZGVjb2RpbmdTdGF0
dXMoKTsKIH0KIAogYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90
IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleDxib29sPihpbmRleCwg
KCZJbWFnZUZyYW1lOjpoYXNBbHBoYSkpOworICAgIHJldHVybiBmcmFtZUF0SW5kZXgoaW5kZXgp
Lmhhc0FscGhhKCk7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzRnVsbFNpemVOYXRp
dmVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBPcHRpb25hbDxTdWJzYW1wbGluZ0xl
dmVsPiYgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5k
ZXg8Ym9vbD4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6aGFzRnVsbFNpemVOYXRpdmVJbWFnZSksIHN1
YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZUF0SW5kZXgoaW5kZXgpLmhhc0Z1bGxT
aXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCk7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6
OmZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChz
aXplX3QgaW5kZXgsIGNvbnN0IE9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiBzdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykKIHsKLSAgICBy
ZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8Ym9vbD4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6aGFz
RGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zKSwgc3Vic2FtcGxpbmdMZXZl
bCwgZGVjb2RpbmdPcHRpb25zKTsKKyAgICByZXR1cm4gZnJhbWVBdEluZGV4KGluZGV4KS5oYXNE
ZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnMoc3Vic2FtcGxpbmdMZXZlbCwg
ZGVjb2RpbmdPcHRpb25zKTsKIH0KIAogU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6ZnJh
bWVTdWJzYW1wbGluZ0xldmVsQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGZy
YW1lTWV0YWRhdGFBdEluZGV4PFN1YnNhbXBsaW5nTGV2ZWw+KGluZGV4LCAoJkltYWdlRnJhbWU6
OnN1YnNhbXBsaW5nTGV2ZWwpKTsKKyAgICByZXR1cm4gZnJhbWVBdEluZGV4KGluZGV4KS5zdWJz
YW1wbGluZ0xldmVsKCk7CiB9CiAKIEludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0g
ICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxJbnRTaXplPihpbmRl
eCwgKCZJbWFnZUZyYW1lOjpzaXplKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0
YWRhdGEsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKGluZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSwgc3Vic2FtcGxpbmdM
ZXZlbCkuc2l6ZSgpOwogfQogCiB1bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0g
ICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDx1bnNpZ25lZD4oaW5k
ZXgsICgmSW1hZ2VGcmFtZTo6ZnJhbWVCeXRlcyksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hp
bmc6Ok1ldGFkYXRhLCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICByZXR1cm4gZnJhbWVBdEluZGV4
Q2FjaGVJZk5lZWRlZChpbmRleCwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0YWRhdGEsIHN1YnNh
bXBsaW5nTGV2ZWwpLmZyYW1lQnl0ZXMoKTsKIH0KIAogU2Vjb25kcyBJbWFnZVNvdXJjZTo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFk
YXRhQXRJbmRleENhY2hlSWZOZWVkZWQ8U2Vjb25kcz4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6ZHVy
YXRpb24pLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSk7CisgICAgcmV0
dXJuIGZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoaW5kZXgsIEltYWdlRnJhbWU6OkNhY2hpbmc6
Ok1ldGFkYXRhKS5kdXJhdGlvbigpOwogfQogCiBJbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNl
OjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGZy
YW1lTWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxJbWFnZU9yaWVudGF0aW9uPihpbmRleCwg
KCZJbWFnZUZyYW1lOjpvcmllbnRhdGlvbiksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6
Ok1ldGFkYXRhKTsKKyAgICByZXR1cm4gZnJhbWVBdEluZGV4Q2FjaGVJZk5lZWRlZChpbmRleCwg
SW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0YWRhdGEpLm9yaWVudGF0aW9uKCk7CiB9CiAKICNpZiBV
U0UoRElSRUNUMkQpCkBAIC03MTIsMTIgKzcwNCwxMiBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IElt
YWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aQogCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4PFJlZlB0cjxO
YXRpdmVJbWFnZT4+KGluZGV4LCAoJkltYWdlRnJhbWU6Om5hdGl2ZUltYWdlKSk7CisgICAgcmV0
dXJuIGZyYW1lQXRJbmRleChpbmRleCkubmF0aXZlSW1hZ2UoKTsKIH0KIAogUmVmUHRyPE5hdGl2
ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVy
biBmcmFtZU1ldGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQ8UmVmUHRyPE5hdGl2ZUltYWdlPj4o
aW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpD
YWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICByZXR1cm4g
ZnJhbWVBdEluZGV4Q2FjaGVJZk5lZWRlZChpbmRleCwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0
YWRhdGFBbmRJbWFnZSwgc3Vic2FtcGxpbmdMZXZlbCkubmF0aXZlSW1hZ2UoKTsKIH0KIAogdm9p
ZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGEwNDkxMzU4ZjA5NGI4OWU0MjAz
ZTFjMzc5YmVmMDE5Yjk3OTUwNTkuLjA1Y2M5MGEwYjUyMmFhNDYyNTY1YmEwNzg5MTI3MzA2MWQx
ODlhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTM0LDE0ICsxMzQsMjYgQEAgcHJpdmF0ZToKICAgICBJbWFnZVNvdXJjZShC
aXRtYXBJbWFnZSosIEFscGhhT3B0aW9uID0gQWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQsIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246OkFw
cGxpZWQpOwogICAgIEltYWdlU291cmNlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJik7CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBUIChJbWFnZURlY29kZXI6OipmdW5jdG9yKSgpIGNvbnN0Pgot
ICAgIFQgbWV0YWRhdGEoY29uc3QgVCYgZGVmYXVsdFZhbHVlLCBPcHRpb25hbDxUPiogY2FjaGVk
VmFsdWUgPSBudWxscHRyKTsKKyAgICBlbnVtIGNsYXNzIE1ldGFkYXRhVHlwZSB7CisgICAgICAg
IEVuY29kZWREYXRhU3RhdHVzICAgICAgICAgICA9IDEgPDwgMCwKKyAgICAgICAgRnJhbWVDb3Vu
dCAgICAgICAgICAgICAgICAgID0gMSA8PCAxLAorICAgICAgICBSZXBldGl0aW9uQ291bnQgICAg
ICAgICAgICAgPSAxIDw8IDIsCisgICAgICAgIFVUSSAgICAgICAgICAgICAgICAgICAgICAgICA9
IDEgPDwgMywKKyAgICAgICAgRmlsZU5hbWVFeHRlbnNpb24gICAgICAgICAgID0gMSA8PCA0LAor
ICAgICAgICBBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24gICAgPSAxIDw8IDUsCisgICAgICAgIEhv
dFNwb3QgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgNiwKKyAgICAgICAgU2l6ZSAgICAgICAg
ICAgICAgICAgICAgICAgID0gMSA8PCA3LAorICAgICAgICBEZW5zaXR5Q29ycmVjdGVkU2l6ZSAg
ICAgICAgPSAxIDw8IDgsCisgICAgICAgIE9yaWVudGF0aW9uICAgICAgICAgICAgICAgICA9IDEg
PDwgOSwKKyAgICAgICAgU2luZ2xlUGl4ZWxTb2xpZENvbG9yICAgICAgID0gMSA8PCAxMCwKKyAg
ICAgICAgTWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgICAgID0gMSA8PCAxMQorICAgIH07CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIFQgZnJhbWVNZXRh
ZGF0YUF0SW5kZXgoc2l6ZV90LCBUIChJbWFnZUZyYW1lOjoqZnVuY3RvcikoQXJncy4uLikgY29u
c3QsIEFyZ3MmJi4uLik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIG1ldGFkYXRh
Q2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgY29uc3QgVCYgZGVmYXVsdFZhbHVlLCBNZXRh
ZGF0YVR5cGUsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3QpOwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBUIGZyYW1lTWV0YWRhdGFB
dEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNv
bnN0LCAgT3B0aW9uYWw8VD4qIGNhY2hlZFZhbHVlLCBBcmdzJiYuLi4pOworICAgIFQgZmlyc3RG
cmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgTWV0YWRhdGFUeXBlLCBU
IChJbWFnZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgQXJncyYmLi4uKTsKIAogICAgIGJvb2wg
ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRhdGEpOwogICAgIGJvb2wgaXNE
ZWNvZGVyQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyOyB9CkBAIC0xNjMsNiAr
MTc1LDcgQEAgcHJpdmF0ZToKICAgICBXb3JrUXVldWUmIGRlY29kaW5nUXVldWUoKTsKICAgICBT
eW5jaHJvbml6ZWRGaXhlZFF1ZXVlPEltYWdlRnJhbWVSZXF1ZXN0LCBCdWZmZXJTaXplPiYgZnJh
bWVSZXF1ZXN0UXVldWUoKTsKIAorICAgIGNvbnN0IEltYWdlRnJhbWUmIGZyYW1lQXRJbmRleChz
aXplX3QgaW5kZXgpIHsgcmV0dXJuIGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpID8gbV9mcmFtZXNb
aW5kZXhdIDogSW1hZ2VGcmFtZTo6ZGVmYXVsdEZyYW1lKCk7IH0KICAgICBjb25zdCBJbWFnZUZy
YW1lJiBmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgSW1hZ2VGcmFtZTo6Q2FjaGlu
ZywgY29uc3QgT3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9KTsKIAogICAgIHZvaWQg
ZHVtcChUZXh0U3RyZWFtJik7CkBAIC0xOTUsMjAgKzIwOCwyMiBAQCBwcml2YXRlOgogICAgIFNl
Y29uZHMgbV9mcmFtZURlY29kaW5nRHVyYXRpb25Gb3JUZXN0aW5nOwogCiAgICAgLy8gSW1hZ2Ug
bWV0YWRhdGEuCi0gICAgT3B0aW9uYWw8RW5jb2RlZERhdGFTdGF0dXM+IG1fZW5jb2RlZERhdGFT
dGF0dXM7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBtX2ZyYW1lQ291bnQ7Ci0gICAgT3B0aW9uYWw8
UmVwZXRpdGlvbkNvdW50PiBtX3JlcGV0aXRpb25Db3VudDsKLSAgICBPcHRpb25hbDxTdHJpbmc+
IG1fdXRpOwotICAgIE9wdGlvbmFsPFN0cmluZz4gbV9maWxlbmFtZUV4dGVuc2lvbjsKLSAgICBP
cHRpb25hbDxTdHJpbmc+IG1fYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uOwotICAgIE9wdGlvbmFs
PE9wdGlvbmFsPEludFBvaW50Pj4gbV9ob3RTcG90OworICAgIEVuY29kZWREYXRhU3RhdHVzIG1f
ZW5jb2RlZERhdGFTdGF0dXM7CisgICAgc2l6ZV90IG1fZnJhbWVDb3VudDsKKyAgICBSZXBldGl0
aW9uQ291bnQgbV9yZXBldGl0aW9uQ291bnQ7CisgICAgU3RyaW5nIG1fdXRpOworICAgIFN0cmlu
ZyBtX2ZpbGVuYW1lRXh0ZW5zaW9uOworICAgIFN0cmluZyBtX2FjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbjsKKyAgICBPcHRpb25hbDxJbnRQb2ludD4gbV9ob3RTcG90OwogCiAgICAgLy8gSW1hZ2Ug
bWV0YWRhdGEgd2hpY2ggaXMgY2FsY3VsYXRlZCBmcm9tIHRoZSBmaXJzdCBJbWFnZUZyYW1lLgot
ICAgIE9wdGlvbmFsPEludFNpemU+IG1fc2l6ZTsKLSAgICBPcHRpb25hbDxJbWFnZU9yaWVudGF0
aW9uPiBtX29yaWVudGF0aW9uOwotICAgIE9wdGlvbmFsPE9wdGlvbmFsPEludFNpemU+PiBtX2Rl
bnNpdHlDb3JyZWN0ZWRTaXplOwotICAgIE9wdGlvbmFsPENvbG9yPiBtX3NpbmdsZVBpeGVsU29s
aWRDb2xvcjsKLSAgICBPcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiBtX21heGltdW1TdWJzYW1w
bGluZ0xldmVsOworICAgIEludFNpemUgbV9zaXplOworICAgIE9wdGlvbmFsPEludFNpemU+IG1f
ZGVuc2l0eUNvcnJlY3RlZFNpemU7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9u
OworICAgIENvbG9yIG1fc2luZ2xlUGl4ZWxTb2xpZENvbG9yOworICAgIFN1YnNhbXBsaW5nTGV2
ZWwgbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbDsKKworICAgIE9wdGlvblNldDxNZXRhZGF0YVR5
cGU+IG1fY2FjaGVkTWV0YWRhdGE7CiAKICAgICBSdW5Mb29wJiBtX3J1bkxvb3A7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425320</attachid>
            <date>2021-04-06 13:40:56 -0700</date>
            <delta_ts>2021-04-06 16:36:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224202-20210406134055.patch</filename>
            <type>text/plain</type>
            <size>20766</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE4Y2M1NDRiOWYxYjMw
YTc0NmFkNGIxZTA1MWY5NmE1MDQ2OWE2MC4uYmYxOThkZTk2ZThiMTY0ZDQ4NGYyOGI0YjYyNGU2
NzI0NGU0YWQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTA0LTA2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgdGhlIE9w
dGlvbmFsIG1ldGFkYXRhIG9mIEltYWdlU291cmNlIGJ5IGEgc2luZ2xlIE9wdGlvblNldCBhbmQg
dGhlIHVuZGVybHlpbmcgbWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDIwMgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KKworICAgICAgICBFbmNhcHN1bGF0aW5nIHRoZSBtZXRhZGF0YSBpbiBhIE9wdGlvbmFscyBh
ZGRzIGV4dHJhIG1lbW9yeSBjb3N0LiBSZXBsYWNlCisgICAgICAgIHRoZXNlIE9wdGlvbmFscyBi
eSB0aGUgdW5kZXJseWluZyBtZXRhZGF0YSBhbmQgYW4gT3B0aW9uU2V0IHRvIHRlbGwgd2hpY2gK
KyAgICAgICAgb25lcyBhcmUgY2FjaGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKToKKyAgICAgICAgSW5zdGVhZCBvZiBhc3NlcnRpb24gaW5kZXggPCBtX2ZyYW1lcy5z
aXplKCksIHdlIGNhbiByZXR1cm4gZGVmYXVsdEZyYW1lKCkuCisgICAgICAgIFRoaXMgd2lsbCB1
c2VkIGluIG1hbnkgY2FsbGVycyB3aGljaCBjaGVja3MgdGhlIHNpemUgYmVmb3JlIGNhbGxpbmcg
aXQuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjbGVhck1ldGFkYXRhKToKKwor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om1ldGFkYXRhQ2FjaGVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Zmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5l
ZWRlZCk6CisgICAgICAgIFRoZXNlIHR3byB0ZW1wbGF0ZSBmdW5jdGlvbnMgd2lsbCBiZSB1c2Vk
IHRvIHJldHVybiBhbmQgY2FjaGUsIGlmIG5lZWRlZCwKKyAgICAgICAgdGhlIGltYWdlIG1ldGFk
YXRhLiBUaGUgZmlyc3QgZnVuY3Rpb24gdXNlcyB0aGUgSW1hZ2VEZWNvZGVyIHdoaWxlIHRoZQor
ICAgICAgICBzZWNvbmQgb25lIHVzZXMgdGhlIGZpcnN0IEltYWdlRnJhbWUgb2YgdGhlIGltYWdl
LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5jb2RlZERhdGFTdGF0dXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6dXRpKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFt
ZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6YWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpob3RTcG90KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpvcmllbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZGVuc2l0eUNvcnJlY3RlZFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OnNvdXJjZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6ZnJhbWVIYXNGdWxsU2l6ZU5hdGl2ZUltYWdlQXRJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxl
V2l0aE9wdGlvbnNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFt
ZVN1YnNhbXBsaW5nTGV2ZWxBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFt
ZUJ5dGVzQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVEdXJh
dGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lT3JpZW50
YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdl
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5k
ZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjptZXRhZGF0
YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVNZXRhZGF0
YUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1l
TWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmcmFtZUF0SW5kZXgpOgorCiAyMDIxLTA0LTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdhc3RlZCB2ZWN0b3IgY2FwYWNpdHkgaW4gQ1NTU2Vn
bWVudGVkRm9udEZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAppbmRleCA2ZDM5NWZkNDY2ZDc2YzY3MGRiZDQ2N2FlNWUzZmViMzdiMzE3
NjY5Li45ZTBjNWYwOGJiNmVlMTc1M2IyNTg4ODhjZDU1ZmE4MjdlMWI5YTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01
NCw2ICs1NCw3IEBAIEltYWdlU291cmNlOjpJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1hZ2U+
JiYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgbV9mcmFtZUNvdW50ID0gMTsKICAgICBtX2VuY29kZWRE
YXRhU3RhdHVzID0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOworICAgIG1fY2FjaGVkTWV0
YWRhdGEuYWRkKHsgTWV0YWRhdGFUeXBlOjpFbmNvZGVkRGF0YVN0YXR1cywgTWV0YWRhdGFUeXBl
OjpGcmFtZUNvdW50IH0pOwogICAgIGdyb3dGcmFtZXMoKTsKIAogICAgIHNldE5hdGl2ZUltYWdl
KFdURk1vdmUobmF0aXZlSW1hZ2UpKTsKQEAgLTYyLDYgKzYzLDcgQEAgSW1hZ2VTb3VyY2U6Oklt
YWdlU291cmNlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBuYXRpdmVJbWFnZSkKIAogICAgIG1fc2l6
ZSA9IG1fZnJhbWVzWzBdLnNpemUoKTsKICAgICBtX29yaWVudGF0aW9uID0gSW1hZ2VPcmllbnRh
dGlvbihJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBtX2NhY2hlZE1ldGFkYXRhLmFkZCh7
IE1ldGFkYXRhVHlwZTo6T3JpZW50YXRpb24sIE1ldGFkYXRhVHlwZTo6U2l6ZSB9KTsKIH0KIAog
SW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCkBAIC00MzUsNyArNDM3LDkgQEAgdm9pZCBJbWFn
ZVNvdXJjZTo6c3RvcEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAKIGNvbnN0IEltYWdlRnJhbWUmIElt
YWdlU291cmNlOjpmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRleCwgSW1hZ2VG
cmFtZTo6Q2FjaGluZyBjYWNoaW5nLCBjb25zdCBPcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYg
c3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICBBU1NFUlQoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkp
OworICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkpCisgICAgICAgIHJldHVybiBJbWFn
ZUZyYW1lOjpkZWZhdWx0RnJhbWUoKTsKKyAgICAKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1f
ZnJhbWVzW2luZGV4XTsKICAgICBpZiAoIWlzRGVjb2RlckF2YWlsYWJsZSgpIHx8IGZyYW1lSXNC
ZWluZ0RlY29kZWRBbmRJc0NvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoaW5kZXgsIERlY29k
aW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykpKQogICAgICAgICByZXR1cm4g
ZnJhbWU7CkBAIC00NjYsMTEgKzQ3MCwxMyBAQCBjb25zdCBJbWFnZUZyYW1lJiBJbWFnZVNvdXJj
ZTo6ZnJhbWVBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbQogCiB2
b2lkIEltYWdlU291cmNlOjpjbGVhck1ldGFkYXRhKCkKIHsKLSAgICBtX2ZyYW1lQ291bnQgPSBX
VEY6Om51bGxvcHQ7Ci0gICAgbV9yZXBldGl0aW9uQ291bnQgPSBXVEY6Om51bGxvcHQ7Ci0gICAg
bV9zaW5nbGVQaXhlbFNvbGlkQ29sb3IgPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9lbmNvZGVkRGF0
YVN0YXR1cyA9IFdURjo6bnVsbG9wdDsKLSAgICBtX3V0aSA9IFdURjo6bnVsbG9wdDsKKyAgICBt
X2NhY2hlZE1ldGFkYXRhLnJlbW92ZSh7CisgICAgICAgIE1ldGFkYXRhVHlwZTo6RW5jb2RlZERh
dGFTdGF0dXMsCisgICAgICAgIE1ldGFkYXRhVHlwZTo6RnJhbWVDb3VudCwKKyAgICAgICAgTWV0
YWRhdGFUeXBlOjpSZXBldGl0aW9uQ291bnQsCisgICAgICAgIE1ldGFkYXRhVHlwZTo6U2luZ2xl
UGl4ZWxTb2xpZENvbG9yLAorICAgICAgICBNZXRhZGF0YVR5cGU6OlVUSQorICAgIH0pOwogfQog
CiBVUkwgSW1hZ2VTb3VyY2U6OnNvdXJjZVVSTCgpIGNvbnN0CkBAIC00ODgsNjUgKzQ5NCw1NyBA
QCBsb25nIGxvbmcgSW1hZ2VTb3VyY2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1faW1hZ2UgPyBtX2ltYWdlLT5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA6IDA7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkg
Y29uc3Q+Ci1UIEltYWdlU291cmNlOjptZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9w
dGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUIEltYWdlU291
cmNlOjptZXRhZGF0YUNhY2hlSWZOZWVkZWQoVCYgY2FjaGVkVmFsdWUsIGNvbnN0IFQmIGRlZmF1
bHRWYWx1ZSwgTWV0YWRhdGFUeXBlIG1ldGFkYXRhVHlwZSwgVCAoSW1hZ2VEZWNvZGVyOjoqZnVu
Y3RvcikoKSBjb25zdCkKIHsKLSAgICBpZiAoY2FjaGVkVmFsdWUgJiYgKmNhY2hlZFZhbHVlKQot
ICAgICAgICByZXR1cm4gY2FjaGVkVmFsdWUtPnZhbHVlKCk7CisgICAgaWYgKG1fY2FjaGVkTWV0
YWRhdGEuY29udGFpbnMobWV0YWRhdGFUeXBlKSkKKyAgICAgICAgcmV0dXJuIGNhY2hlZFZhbHVl
OwogCiAgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFibGUoKSB8fCAhbV9kZWNvZGVyLT5pc1NpemVB
dmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKIAotICAgIGlmICghY2Fj
aGVkVmFsdWUpCi0gICAgICAgIHJldHVybiAoKm1fZGVjb2Rlci4qZnVuY3RvcikoKTsKLQotICAg
ICpjYWNoZWRWYWx1ZSA9ICgqbV9kZWNvZGVyLipmdW5jdG9yKSgpOworICAgIGNhY2hlZFZhbHVl
ID0gKCptX2RlY29kZXIuKmZ1bmN0b3IpKCk7CisgICAgbV9jYWNoZWRNZXRhZGF0YS5hZGQobWV0
YWRhdGFUeXBlKTsKICAgICBkaWREZWNvZGVQcm9wZXJ0aWVzKG1fZGVjb2Rlci0+Ynl0ZXNEZWNv
ZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkpOwotICAgIHJldHVybiBjYWNoZWRWYWx1ZS0+dmFs
dWUoKTsKKyAgICByZXR1cm4gY2FjaGVkVmFsdWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lLi4uIEFyZ3M+Ci1UIEltYWdlU291cmNlOjpmcmFtZU1ldGFkYXRhQXRJbmRleChz
aXplX3QgaW5kZXgsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKShBcmdzLi4uKSBjb25zdCwgQXJn
cyYmLi4uIGFyZ3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVCBJbWFnZVNvdXJjZTo6Zmlyc3RG
cmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgTWV0YWRhdGFUeXBlIG1l
dGFkYXRhVHlwZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkgY29uc3QsIEltYWdlRnJhbWU6
OkNhY2hpbmcgY2FjaGluZywgY29uc3QgT3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNh
bXBsaW5nTGV2ZWwpCiB7Ci0gICAgY29uc3QgSW1hZ2VGcmFtZSYgZnJhbWUgPSBpbmRleCA8IG1f
ZnJhbWVzLnNpemUoKSA/IG1fZnJhbWVzW2luZGV4XSA6IEltYWdlRnJhbWU6OmRlZmF1bHRGcmFt
ZSgpOwotICAgIHJldHVybiAoZnJhbWUuKmZ1bmN0b3IpKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7Ci19CisgICAgaWYgKG1fY2FjaGVkTWV0YWRhdGEuY29udGFpbnMobWV0YWRhdGFUeXBl
KSkKKyAgICAgICAgcmV0dXJuIGNhY2hlZFZhbHVlOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZS4uLiBBcmdzPgotVCBJbWFnZVNvdXJjZTo6ZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKHNpemVfdCBpbmRleCwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkgY29uc3Qs
IE9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSwgQXJncyYmLi4uIGFyZ3MpCi17Ci0gICAgaWYgKGNh
Y2hlZFZhbHVlICYmICpjYWNoZWRWYWx1ZSkKLSAgICAgICAgcmV0dXJuIGNhY2hlZFZhbHVlLT52
YWx1ZSgpOwotCi0gICAgY29uc3QgSW1hZ2VGcmFtZSYgZnJhbWUgPSBpbmRleCA8IG1fZnJhbWVz
LnNpemUoKSA/IGZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoaW5kZXgsIHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLikgOiBJbWFnZUZyYW1lOjpkZWZhdWx0RnJhbWUoKTsKKyAgICBjb25zdCBJ
bWFnZUZyYW1lJiBmcmFtZSA9IGZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoMCwgY2FjaGluZywg
c3Vic2FtcGxpbmdMZXZlbCk7CiAKICAgICAvLyBEb24ndCBjYWNoZSBhbnkgdW5hdmFpbGFibGUg
ZnJhbWUgbWV0YWRhdGEuCi0gICAgaWYgKCFmcmFtZS5oYXNNZXRhZGF0YSgpIHx8ICFjYWNoZWRW
YWx1ZSkKKyAgICBpZiAoIWZyYW1lLmhhc01ldGFkYXRhKCkpCiAgICAgICAgIHJldHVybiAoZnJh
bWUuKmZ1bmN0b3IpKCk7CiAKLSAgICAqY2FjaGVkVmFsdWUgPSAoZnJhbWUuKmZ1bmN0b3IpKCk7
Ci0gICAgcmV0dXJuIGNhY2hlZFZhbHVlLT52YWx1ZSgpOworICAgIGNhY2hlZFZhbHVlID0gKGZy
YW1lLipmdW5jdG9yKSgpOworICAgIG1fY2FjaGVkTWV0YWRhdGEuYWRkKG1ldGFkYXRhVHlwZSk7
CisgICAgcmV0dXJuIGNhY2hlZFZhbHVlOwogfQogCiBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNv
dXJjZTo6ZW5jb2RlZERhdGFTdGF0dXMoKQogewotICAgIHJldHVybiBtZXRhZGF0YTxFbmNvZGVk
RGF0YVN0YXR1cywgKCZJbWFnZURlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKT4oRW5jb2RlZERh
dGFTdGF0dXM6OlVua25vd24sICZtX2VuY29kZWREYXRhU3RhdHVzKTsKKyAgICByZXR1cm4gbWV0
YWRhdGFDYWNoZUlmTmVlZGVkKG1fZW5jb2RlZERhdGFTdGF0dXMsIEVuY29kZWREYXRhU3RhdHVz
OjpVbmtub3duLCBNZXRhZGF0YVR5cGU6OkVuY29kZWREYXRhU3RhdHVzLCAmSW1hZ2VEZWNvZGVy
OjplbmNvZGVkRGF0YVN0YXR1cyk7CiB9CiAKIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3Vu
dCgpCiB7Ci0gICAgcmV0dXJuIG1ldGFkYXRhPHNpemVfdCwgKCZJbWFnZURlY29kZXI6OmZyYW1l
Q291bnQpPihtX2ZyYW1lcy5zaXplKCksICZtX2ZyYW1lQ291bnQpOworICAgIHJldHVybiBtZXRh
ZGF0YUNhY2hlSWZOZWVkZWQobV9mcmFtZUNvdW50LCBtX2ZyYW1lcy5zaXplKCksIE1ldGFkYXRh
VHlwZTo6RnJhbWVDb3VudCwgJkltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk7CiB9CiAKIFJlcGV0
aXRpb25Db3VudCBJbWFnZVNvdXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKIHsKLSAgICByZXR1cm4g
bWV0YWRhdGE8UmVwZXRpdGlvbkNvdW50LCAoJkltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNvdW50
KT4oUmVwZXRpdGlvbkNvdW50Tm9uZSwgJm1fcmVwZXRpdGlvbkNvdW50KTsKKyAgICByZXR1cm4g
bWV0YWRhdGFDYWNoZUlmTmVlZGVkKG1fcmVwZXRpdGlvbkNvdW50LCBzdGF0aWNfY2FzdDxSZXBl
dGl0aW9uQ291bnQ+KFJlcGV0aXRpb25Db3VudE5vbmUpLCBNZXRhZGF0YVR5cGU6OlJlcGV0aXRp
b25Db3VudCwgJkltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNvdW50KTsKIH0KIAogU3RyaW5nIElt
YWdlU291cmNlOjp1dGkoKQogewogI2lmIFVTRShDRykKLSAgICByZXR1cm4gbWV0YWRhdGE8U3Ry
aW5nLCAoJkltYWdlRGVjb2Rlcjo6dXRpKT4oU3RyaW5nKCksICZtX3V0aSk7CisgICAgcmV0dXJu
IG1ldGFkYXRhQ2FjaGVJZk5lZWRlZChtX3V0aSwgU3RyaW5nKCksIE1ldGFkYXRhVHlwZTo6VVRJ
LCAmSW1hZ2VEZWNvZGVyOjp1dGkpOwogI2Vsc2UKICAgICByZXR1cm4gU3RyaW5nKCk7CiAjZW5k
aWYKQEAgLTU1NCwyNyArNTUyLDI3IEBAIFN0cmluZyBJbWFnZVNvdXJjZTo6dXRpKCkKIAogU3Ry
aW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpCiB7Ci0gICAgcmV0dXJuIG1ldGFk
YXRhPFN0cmluZywgKCZJbWFnZURlY29kZXI6OmZpbGVuYW1lRXh0ZW5zaW9uKT4oU3RyaW5nKCks
ICZtX2ZpbGVuYW1lRXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gbWV0YWRhdGFDYWNoZUlmTmVlZGVk
KG1fZmlsZW5hbWVFeHRlbnNpb24sIFN0cmluZygpLCBNZXRhZGF0YVR5cGU6OkZpbGVOYW1lRXh0
ZW5zaW9uLCAmSW1hZ2VEZWNvZGVyOjpmaWxlbmFtZUV4dGVuc2lvbik7CiB9CiAKIFN0cmluZyBJ
bWFnZVNvdXJjZTo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkKIHsKLSAgICByZXR1cm4gbWV0
YWRhdGE8U3RyaW5nLCAoJkltYWdlRGVjb2Rlcjo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKT4o
U3RyaW5nKCksICZtX2FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIG1ldGFk
YXRhQ2FjaGVJZk5lZWRlZChtX2FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbiwgU3RyaW5nKCksIE1l
dGFkYXRhVHlwZTo6QWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uLCAmSW1hZ2VEZWNvZGVyOjphY2Nl
c3NpYmlsaXR5RGVzY3JpcHRpb24pOwogfQogCiBPcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VTb3Vy
Y2U6OmhvdFNwb3QoKQogewotICAgIHJldHVybiBtZXRhZGF0YTxPcHRpb25hbDxJbnRQb2ludD4s
ICgmSW1hZ2VEZWNvZGVyOjpob3RTcG90KT4oV1RGOjpudWxsb3B0LCAmbV9ob3RTcG90KTsKKyAg
ICByZXR1cm4gbWV0YWRhdGFDYWNoZUlmTmVlZGVkKG1faG90U3BvdCwgeyB9LCBNZXRhZGF0YVR5
cGU6OkhvdFNwb3QsICZJbWFnZURlY29kZXI6OmhvdFNwb3QpOwogfQogCiBJbWFnZU9yaWVudGF0
aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbigpCiB7Ci0gICAgcmV0dXJuIGZyYW1lTWV0YWRh
dGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxJbWFnZU9yaWVudGF0aW9uPigwLCAoJkltYWdlRnJhbWU6
Om9yaWVudGF0aW9uKSwgJm1fb3JpZW50YXRpb24sIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhKTsKKyAgICByZXR1cm4gZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZChtX29yaWVu
dGF0aW9uLCBNZXRhZGF0YVR5cGU6Ok9yaWVudGF0aW9uLCAmSW1hZ2VGcmFtZTo6b3JpZW50YXRp
b24sIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhKTsKIH0KIAogT3B0aW9uYWw8SW50U2l6
ZT4gSW1hZ2VTb3VyY2U6OmRlbnNpdHlDb3JyZWN0ZWRTaXplKEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pCiB7Ci0gICAgYXV0byBzaXplID0gZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlm
TmVlZGVkPE9wdGlvbmFsPEludFNpemU+PigwLCAmSW1hZ2VGcmFtZTo6ZGVuc2l0eUNvcnJlY3Rl
ZFNpemUsICZtX2RlbnNpdHlDb3JyZWN0ZWRTaXplLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRh
ZGF0YSk7CisgICAgYXV0byBzaXplID0gZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZCht
X2RlbnNpdHlDb3JyZWN0ZWRTaXplLCBNZXRhZGF0YVR5cGU6OkRlbnNpdHlDb3JyZWN0ZWRTaXpl
LCAmSW1hZ2VGcmFtZTo6ZGVuc2l0eUNvcnJlY3RlZFNpemUsIEltYWdlRnJhbWU6OkNhY2hpbmc6
Ok1ldGFkYXRhKTsKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKQEAgLTYwMCw3ICs1OTgsNyBAQCBJbnRTaXplIEltYWdlU291cmNlOjpzb3VyY2VTaXplKElt
YWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiAgICAgICAgIHNpemUgPSBtX2RlY29kZXItPnNp
emUoKTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgc2l6ZSA9IGZyYW1lTWV0YWRhdGFBdElu
ZGV4Q2FjaGVJZk5lZWRlZDxJbnRTaXplPigwLCAoJkltYWdlRnJhbWU6OnNpemUpLCAmbV9zaXpl
LCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCk7CisgICAgICAgIHNpemUgPSBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKG1fc2l6
ZSwgTWV0YWRhdGFUeXBlOjpTaXplLCAmSW1hZ2VGcmFtZTo6c2l6ZSwgSW1hZ2VGcmFtZTo6Q2Fj
aGluZzo6TWV0YWRhdGEsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogICAgIAogICAgIGlm
IChvcmllbnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpCiAgICAgICAgIG9y
aWVudGF0aW9uID0gdGhpcy0+b3JpZW50YXRpb24oKTsKQEAgLTYxMCwxOSArNjA4LDE4IEBAIElu
dFNpemUgSW1hZ2VTb3VyY2U6OnNvdXJjZVNpemUoSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKIAogQ29sb3IgSW1hZ2VTb3VyY2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpCiB7Ci0gICAg
aWYgKCFtX3NpbmdsZVBpeGVsU29saWRDb2xvciAmJiAoc2l6ZSgpICE9IEludFNpemUoMSwgMSkg
fHwgZnJhbWVDb3VudCgpICE9IDEpKQorICAgIGlmICghbV9jYWNoZWRNZXRhZGF0YS5jb250YWlu
cyhNZXRhZGF0YVR5cGU6OlNpbmdsZVBpeGVsU29saWRDb2xvcikgJiYgKHNpemUoKSAhPSBJbnRT
aXplKDEsIDEpIHx8IGZyYW1lQ291bnQoKSAhPSAxKSkgewogICAgICAgICBtX3NpbmdsZVBpeGVs
U29saWRDb2xvciA9IENvbG9yKCk7CisgICAgICAgIG1fY2FjaGVkTWV0YWRhdGEuYWRkKE1ldGFk
YXRhVHlwZTo6U2luZ2xlUGl4ZWxTb2xpZENvbG9yKTsKKyAgICB9CiAKLSAgICBpZiAobV9zaW5n
bGVQaXhlbFNvbGlkQ29sb3IpCi0gICAgICAgIHJldHVybiBtX3NpbmdsZVBpeGVsU29saWRDb2xv
ci52YWx1ZSgpOwotCi0gICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRl
ZDxDb2xvcj4oMCwgKCZJbWFnZUZyYW1lOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpLCAmbV9zaW5n
bGVQaXhlbFNvbGlkQ29sb3IsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2Up
OworICAgIHJldHVybiBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKG1fc2luZ2xlUGl4
ZWxTb2xpZENvbG9yLCBNZXRhZGF0YVR5cGU6OlNpbmdsZVBpeGVsU29saWRDb2xvciwgJkltYWdl
RnJhbWU6OnNpbmdsZVBpeGVsU29saWRDb2xvciwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0YWRh
dGFBbmRJbWFnZSk7CiB9CiAKIFN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6Om1heGltdW1T
dWJzYW1wbGluZ0xldmVsKCkKIHsKLSAgICBpZiAobV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCkK
LSAgICAgICAgcmV0dXJuIG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwudmFsdWUoKTsKKyAgICBp
ZiAobV9jYWNoZWRNZXRhZGF0YS5jb250YWlucyhNZXRhZGF0YVR5cGU6Ok1heGltdW1TdWJzYW1w
bGluZ0xldmVsKSkKKyAgICAgICAgcmV0dXJuIG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWw7CiAK
ICAgICBpZiAoIWlzRGVjb2RlckF2YWlsYWJsZSgpIHx8ICFtX2RlY29kZXItPmZyYW1lQWxsb3dT
dWJzYW1wbGluZ0F0SW5kZXgoMCkpCiAgICAgICAgIHJldHVybiBTdWJzYW1wbGluZ0xldmVsOjpE
ZWZhdWx0OwpAQCAtNjM5LDcgKzYzNiw4IEBAIFN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6
Om1heGltdW1TdWJzYW1wbGluZ0xldmVsKCkKICAgICB9CiAKICAgICBtX21heGltdW1TdWJzYW1w
bGluZ0xldmVsID0gbGV2ZWw7Ci0gICAgcmV0dXJuIG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwu
dmFsdWUoKTsKKyAgICBtX2NhY2hlZE1ldGFkYXRhLmFkZChNZXRhZGF0YVR5cGU6Ok1heGltdW1T
dWJzYW1wbGluZ0xldmVsKTsKKyAgICByZXR1cm4gbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbDsK
IH0KIAogYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJs
ZVdpdGhPcHRpb25zQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYg
ZGVjb2RpbmdPcHRpb25zKQpAQCAtNjUyLDQ3ICs2NTAsNDcgQEAgYm9vbCBJbWFnZVNvdXJjZTo6
ZnJhbWVJc0JlaW5nRGVjb2RlZEFuZElzQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChzaXpl
X3QgaW4KIAogRGVjb2RpbmdTdGF0dXMgSW1hZ2VTb3VyY2U6OmZyYW1lRGVjb2RpbmdTdGF0dXNB
dEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXhD
YWNoZUlmTmVlZGVkPERlY29kaW5nU3RhdHVzPihpbmRleCwgKCZJbWFnZUZyYW1lOjpkZWNvZGlu
Z1N0YXR1cyksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhKTsKKyAgICBy
ZXR1cm4gZnJhbWVBdEluZGV4Q2FjaGVJZk5lZWRlZChpbmRleCwgSW1hZ2VGcmFtZTo6Q2FjaGlu
Zzo6TWV0YWRhdGEpLmRlY29kaW5nU3RhdHVzKCk7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmZy
YW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRh
ZGF0YUF0SW5kZXg8Ym9vbD4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6aGFzQWxwaGEpKTsKKyAgICBy
ZXR1cm4gZnJhbWVBdEluZGV4KGluZGV4KS5oYXNBbHBoYSgpOwogfQogCiBib29sIEltYWdlU291
cmNlOjpmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgY29u
c3QgT3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAg
cmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4PGJvb2w+KGluZGV4LCAoJkltYWdlRnJhbWU6Omhh
c0Z1bGxTaXplTmF0aXZlSW1hZ2UpLCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICByZXR1cm4gZnJh
bWVBdEluZGV4KGluZGV4KS5oYXNGdWxsU2l6ZU5hdGl2ZUltYWdlKHN1YnNhbXBsaW5nTGV2ZWwp
OwogfQogCiBib29sIEltYWdlU291cmNlOjpmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBh
dGlibGVXaXRoT3B0aW9uc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBPcHRpb25hbDxTdWJz
YW1wbGluZ0xldmVsPiYgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBk
ZWNvZGluZ09wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4PGJvb2w+
KGluZGV4LCAoJkltYWdlRnJhbWU6Omhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRo
T3B0aW9ucyksIHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nT3B0aW9ucyk7CisgICAgcmV0dXJu
IGZyYW1lQXRJbmRleChpbmRleCkuaGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhP
cHRpb25zKHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nT3B0aW9ucyk7CiB9CiAKIFN1YnNhbXBs
aW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OmZyYW1lU3Vic2FtcGxpbmdMZXZlbEF0SW5kZXgoc2l6ZV90
IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleDxTdWJzYW1wbGluZ0xl
dmVsPihpbmRleCwgKCZJbWFnZUZyYW1lOjpzdWJzYW1wbGluZ0xldmVsKSk7CisgICAgcmV0dXJu
IGZyYW1lQXRJbmRleChpbmRleCkuc3Vic2FtcGxpbmdMZXZlbCgpOwogfQogCiBJbnRTaXplIElt
YWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleENh
Y2hlSWZOZWVkZWQ8SW50U2l6ZT4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6c2l6ZSksIG51bGxwdHIs
IEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhLCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICBy
ZXR1cm4gZnJhbWVBdEluZGV4Q2FjaGVJZk5lZWRlZChpbmRleCwgSW1hZ2VGcmFtZTo6Q2FjaGlu
Zzo6TWV0YWRhdGEsIHN1YnNhbXBsaW5nTGV2ZWwpLnNpemUoKTsKIH0KIAogdW5zaWduZWQgSW1h
Z2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleENh
Y2hlSWZOZWVkZWQ8dW5zaWduZWQ+KGluZGV4LCAoJkltYWdlRnJhbWU6OmZyYW1lQnl0ZXMpLCBu
dWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSwgc3Vic2FtcGxpbmdMZXZlbCk7
CisgICAgcmV0dXJuIGZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoaW5kZXgsIEltYWdlRnJhbWU6
OkNhY2hpbmc6Ok1ldGFkYXRhLCBzdWJzYW1wbGluZ0xldmVsKS5mcmFtZUJ5dGVzKCk7CiB9CiAK
IFNlY29uZHMgSW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkK
IHsKLSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPFNlY29uZHM+
KGluZGV4LCAoJkltYWdlRnJhbWU6OmR1cmF0aW9uKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2Fj
aGluZzo6TWV0YWRhdGEpOworICAgIHJldHVybiBmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGlu
ZGV4LCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSkuZHVyYXRpb24oKTsKIH0KIAogSW1h
Z2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90
IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQ8
SW1hZ2VPcmllbnRhdGlvbj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6b3JpZW50YXRpb24pLCBudWxs
cHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YSk7CisgICAgcmV0dXJuIGZyYW1lQXRJ
bmRleENhY2hlSWZOZWVkZWQoaW5kZXgsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhKS5v
cmllbnRhdGlvbigpOwogfQogCiAjaWYgVVNFKERJUkVDVDJEKQpAQCAtNzEyLDEyICs3MTAsMTIg
QEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGkKIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNv
dXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFt
ZU1ldGFkYXRhQXRJbmRleDxSZWZQdHI8TmF0aXZlSW1hZ2U+PihpbmRleCwgKCZJbWFnZUZyYW1l
OjpuYXRpdmVJbWFnZSkpOworICAgIHJldHVybiBmcmFtZUF0SW5kZXgoaW5kZXgpLm5hdGl2ZUlt
YWdlKCk7CiB9CiAKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVl
ZGVkPFJlZlB0cjxOYXRpdmVJbWFnZT4+KGluZGV4LCAoJkltYWdlRnJhbWU6Om5hdGl2ZUltYWdl
KSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSwgc3Vic2Ft
cGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoaW5kZXgs
IEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwp
Lm5hdGl2ZUltYWdlKCk7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYg
dHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApp
bmRleCBhMDQ5MTM1OGYwOTRiODllNDIwM2UxYzM3OWJlZjAxOWI5Nzk1MDU5Li45MWExM2YzM2Q2
ODMxNDU2YmI5YjExODRiNWRkMWM0MTk3YTA5YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNCwxNCArMTM0LDI2IEBAIHBy
aXZhdGU6CiAgICAgSW1hZ2VTb3VyY2UoQml0bWFwSW1hZ2UqLCBBbHBoYU9wdGlvbiA9IEFscGhh
T3B0aW9uOjpQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9IEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKICAgICBJbWFnZVNvdXJjZShSZWZQdHI8
TmF0aXZlSW1hZ2U+JiYpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVCAoSW1hZ2VEZWNv
ZGVyOjoqZnVuY3RvcikoKSBjb25zdD4KLSAgICBUIG1ldGFkYXRhKGNvbnN0IFQmIGRlZmF1bHRW
YWx1ZSwgT3B0aW9uYWw8VD4qIGNhY2hlZFZhbHVlID0gbnVsbHB0cik7CisgICAgZW51bSBjbGFz
cyBNZXRhZGF0YVR5cGUgeworICAgICAgICBBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24gICAgPSAx
IDw8IDAsCisgICAgICAgIERlbnNpdHlDb3JyZWN0ZWRTaXplICAgICAgICA9IDEgPDwgMSwKKyAg
ICAgICAgRW5jb2RlZERhdGFTdGF0dXMgICAgICAgICAgID0gMSA8PCAyLAorICAgICAgICBGaWxl
TmFtZUV4dGVuc2lvbiAgICAgICAgICAgPSAxIDw8IDMsCisgICAgICAgIEZyYW1lQ291bnQgICAg
ICAgICAgICAgICAgICA9IDEgPDwgNCwKKyAgICAgICAgSG90U3BvdCAgICAgICAgICAgICAgICAg
ICAgID0gMSA8PCA1LAorICAgICAgICBNYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCAgICAgPSAxIDw8
IDYsCisgICAgICAgIE9yaWVudGF0aW9uICAgICAgICAgICAgICAgICA9IDEgPDwgNywKKyAgICAg
ICAgUmVwZXRpdGlvbkNvdW50ICAgICAgICAgICAgID0gMSA8PCA4LAorICAgICAgICBTaW5nbGVQ
aXhlbFNvbGlkQ29sb3IgICAgICAgPSAxIDw8IDksCisgICAgICAgIFNpemUgICAgICAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgMTAsCisgICAgICAgIFVUSSAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMTEKKyAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUu
Li4gQXJncz4KLSAgICBUIGZyYW1lTWV0YWRhdGFBdEluZGV4KHNpemVfdCwgVCAoSW1hZ2VGcmFt
ZTo6KmZ1bmN0b3IpKEFyZ3MuLi4pIGNvbnN0LCBBcmdzJiYuLi4pOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgVCBtZXRhZGF0YUNhY2hlSWZOZWVkZWQoVCYgY2FjaGVkVmFsdWUsIGNv
bnN0IFQmIGRlZmF1bHRWYWx1ZSwgTWV0YWRhdGFUeXBlLCBUIChJbWFnZURlY29kZXI6OipmdW5j
dG9yKSgpIGNvbnN0KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFy
Z3M+Ci0gICAgVCBmcmFtZU1ldGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90LCBUIChJ
bWFnZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgIE9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSwg
QXJncyYmLi4uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFQgZmlyc3RGcmFtZU1l
dGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgTWV0YWRhdGFUeXBlLCBUIChJbWFn
ZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VGcmFtZTo6Q2FjaGluZywgY29uc3QgT3B0
aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9KTsKIAogICAgIGJvb2wgZW5zdXJlRGVjb2Rl
ckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRhdGEpOwogICAgIGJvb2wgaXNEZWNvZGVyQXZhaWxh
YmxlKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyOyB9CkBAIC0xNjMsNiArMTc1LDcgQEAgcHJp
dmF0ZToKICAgICBXb3JrUXVldWUmIGRlY29kaW5nUXVldWUoKTsKICAgICBTeW5jaHJvbml6ZWRG
aXhlZFF1ZXVlPEltYWdlRnJhbWVSZXF1ZXN0LCBCdWZmZXJTaXplPiYgZnJhbWVSZXF1ZXN0UXVl
dWUoKTsKIAorICAgIGNvbnN0IEltYWdlRnJhbWUmIGZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgp
IHsgcmV0dXJuIGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpID8gbV9mcmFtZXNbaW5kZXhdIDogSW1h
Z2VGcmFtZTo6ZGVmYXVsdEZyYW1lKCk7IH0KICAgICBjb25zdCBJbWFnZUZyYW1lJiBmcmFtZUF0
SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgSW1hZ2VGcmFtZTo6Q2FjaGluZywgY29uc3QgT3B0
aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9KTsKIAogICAgIHZvaWQgZHVtcChUZXh0U3Ry
ZWFtJik7CkBAIC0xOTUsMjAgKzIwOCwyMiBAQCBwcml2YXRlOgogICAgIFNlY29uZHMgbV9mcmFt
ZURlY29kaW5nRHVyYXRpb25Gb3JUZXN0aW5nOwogCiAgICAgLy8gSW1hZ2UgbWV0YWRhdGEuCi0g
ICAgT3B0aW9uYWw8RW5jb2RlZERhdGFTdGF0dXM+IG1fZW5jb2RlZERhdGFTdGF0dXM7Ci0gICAg
T3B0aW9uYWw8c2l6ZV90PiBtX2ZyYW1lQ291bnQ7Ci0gICAgT3B0aW9uYWw8UmVwZXRpdGlvbkNv
dW50PiBtX3JlcGV0aXRpb25Db3VudDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1fdXRpOwotICAg
IE9wdGlvbmFsPFN0cmluZz4gbV9maWxlbmFtZUV4dGVuc2lvbjsKLSAgICBPcHRpb25hbDxTdHJp
bmc+IG1fYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uOwotICAgIE9wdGlvbmFsPE9wdGlvbmFsPElu
dFBvaW50Pj4gbV9ob3RTcG90OworICAgIEVuY29kZWREYXRhU3RhdHVzIG1fZW5jb2RlZERhdGFT
dGF0dXMgeyBFbmNvZGVkRGF0YVN0YXR1czo6VW5rbm93biB9OworICAgIHNpemVfdCBtX2ZyYW1l
Q291bnQgeyAwIH07CisgICAgUmVwZXRpdGlvbkNvdW50IG1fcmVwZXRpdGlvbkNvdW50IHsgUmVw
ZXRpdGlvbkNvdW50Tm9uZSB9OworICAgIFN0cmluZyBtX3V0aTsKKyAgICBTdHJpbmcgbV9maWxl
bmFtZUV4dGVuc2lvbjsKKyAgICBTdHJpbmcgbV9hY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb247Cisg
ICAgT3B0aW9uYWw8SW50UG9pbnQ+IG1faG90U3BvdDsKIAogICAgIC8vIEltYWdlIG1ldGFkYXRh
IHdoaWNoIGlzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgZmlyc3QgSW1hZ2VGcmFtZS4KLSAgICBPcHRp
b25hbDxJbnRTaXplPiBtX3NpemU7Ci0gICAgT3B0aW9uYWw8SW1hZ2VPcmllbnRhdGlvbj4gbV9v
cmllbnRhdGlvbjsKLSAgICBPcHRpb25hbDxPcHRpb25hbDxJbnRTaXplPj4gbV9kZW5zaXR5Q29y
cmVjdGVkU2l6ZTsKLSAgICBPcHRpb25hbDxDb2xvcj4gbV9zaW5nbGVQaXhlbFNvbGlkQ29sb3I7
Ci0gICAgT3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4gbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZl
bDsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBPcHRpb25hbDxJbnRTaXplPiBtX2RlbnNpdHlD
b3JyZWN0ZWRTaXplOworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKKyAgICBD
b2xvciBtX3NpbmdsZVBpeGVsU29saWRDb2xvcjsKKyAgICBTdWJzYW1wbGluZ0xldmVsIG1fbWF4
aW11bVN1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0IH07CisKKyAg
ICBPcHRpb25TZXQ8TWV0YWRhdGFUeXBlPiBtX2NhY2hlZE1ldGFkYXRhOwogCiAgICAgUnVuTG9v
cCYgbV9ydW5Mb29wOwogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>