<?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>229170</bug_id>
          
          <creation_ts>2021-08-16 16:44:50 -0700</creation_ts>
          <short_desc>Use an OptionSet&lt;MapCoordinatesMode&gt; in place of MapCoordinatesFlags</short_desc>
          <delta_ts>2021-08-19 08:52:18 -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>Layout and Rendering</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1784686</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-16 16:44:50 -0700</bug_when>
    <thetext>Use an OptionSet&lt;MapCoordinatesMode&gt; in place of MapCoordinatesFlags</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784687</commentid>
    <comment_count>1</comment_count>
      <attachid>435642</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-16 16:45:32 -0700</bug_when>
    <thetext>Created attachment 435642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785459</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-19 08:51:40 -0700</bug_when>
    <thetext>Committed r281239 (240676@main): &lt;https://commits.webkit.org/240676@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435642.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785460</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-19 08:52:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/82127316&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435642</attachid>
            <date>2021-08-16 16:45:32 -0700</date>
            <delta_ts>2021-08-19 08:51:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229170-20210816164531.patch</filename>
            <type>text/plain</type>
            <size>48712</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJlNmQxODMwMjJiMmEw
MDZmMGU4NTdlYzMxMDNkNWY1MGIzMWE3OC4uZmM2ZGUyN2RjMjY1ZWNhY2NmNTlhMjlhY2FkM2Rm
ZmUxYzAxNmFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIxLTA4LTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhbiBPcHRp
b25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiBpbiBwbGFjZSBvZiBNYXBDb29yZGluYXRlc0ZsYWdz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkxNzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNl
IE1hcENvb3JkaW5hdGVzRmxhZ3Mgd2l0aCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPi4g
Tm8gYmVoYXZpb3IKKyAgICAgICAgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9IVE1MQW5jaG9y
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRTZXJ2ZXJNYXBNb3VzZVBvc2l0
aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50IGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpt
YXBBYnNvbHV0ZVRvTG9jYWxQb2ludCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRG
bG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93OjptYXBMb2Nh
bFRvQ29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRl
ZEZsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6OlJlbmRlckdlb21ldHJ5TWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoTWFwcGluZ3NUb0FuY2VzdG9y
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjptYXBDb29yZGluYXRlc0ZsYWdzIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlcklubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
bkZsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5GbG93OjptYXBB
YnNvbHV0ZVRvTG9jYWxQb2ludCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2FsVG9BYnNvbHV0ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlVG9Mb2NhbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlVG9Mb2NhbFF1
YWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjptYXBMb2NhbFRvQ29u
dGFpbmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bWFwQWJzb2x1
dGVUb0xvY2FsUG9pbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojps
b2NhbFRvQ29udGFpbmVyUXVhZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OmxvY2FsVG9Db250YWluZXJQb2ludCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQWJz
b2x1dGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQWJzb2x1dGVRdWFkIGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0RW51bXMuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWU6OnZvbHVtZVNsaWRlck9mZnNldEZyb21NdXRlQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpt
YXBMb2NhbFRvQ29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6
Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjptYXBMb2Nh
bFRvQ29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Zv
cmVpZ25PYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6Om1hcExvY2FsVG9Db250YWlu
ZXIgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lciBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdSb290OjptYXBMb2NhbFRvQ29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6bWFwTG9j
YWxUb0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIpOgor
CiAyMDIxLTA4LTE1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQnVnIDIyOTExMjogVGhyZWFkU2FuaXRpemVyOiBkYXRhIHJhY2VzIG9mIFdURjo6U3RyaW5n
IGluIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcAppbmRleCBkMWY2MzFlMDhjZTU1YTZiNmQ4OGMzZmU1MDA3OTIz
YjVjZTI3YTk4Li5jMGRjNmI4NTE4OTBhOGQ0ZTE4MTc1ZTBlOWI5ZWI1Mzg1Mjg4ODM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMTcxLDcgKzE3MSw3
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNlcnZlck1hcE1vdXNlUG9zaXRpb24oU3RyaW5nQnVpbGRl
ciYgdXJsLCBFdmVudCYgZXZlbnQpCiAgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4ocmVuZGVyZXIp
KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkg
cGFzcyBVc2VUcmFuc2Zvcm1zIGluIHRoZSBNYXBDb29yZGluYXRlc0ZsYWdzLgorICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBwYXNzIFVzZVRyYW5zZm9ybXMgaW4gdGhlIE9wdGlv
blNldDxNYXBDb29yZGluYXRlc01vZGU+LgogICAgIGF1dG8gYWJzb2x1dGVQb3NpdGlvbiA9IGRv
d25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIpLmFic29sdXRlVG9Mb2NhbChGbG9hdFBvaW50
KG1vdXNlRXZlbnQucGFnZVgoKSwgbW91c2VFdmVudC5wYWdlWSgpKSk7CiAgICAgdXJsLmFwcGVu
ZCgnPycsIHN0ZDo6bHJvdW5kKGFic29sdXRlUG9zaXRpb24ueCgpKSwgJywnLCBzdGQ6Omxyb3Vu
ZChhYnNvbHV0ZVBvc2l0aW9uLnkoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAppbmRleCBkODdlOGJkNWNkZTA5OWQ4NzI4MjJhZjRlMTIzZDg5ODc3MzlhYTBlLi5h
N2M2ZDRjMjMwYjU0NTY3NDkxMTBjODc3MzdlYjEzNzUxNzY4YWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMjIyMiw3ICsyMjIyLDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJCb3g6OnBlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0KCkgY29u
c3QKICAgICByZXR1cm4gY2ItPmFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6
aW5nKExheW91dFVuaXQobG9naWNhbEhlaWdodExlbmd0aC52YWx1ZSgpKSk7CiB9CiAKLXZvaWQg
UmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1h
cENvb3JkaW5hdGVzRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRl
ckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBh
bmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBPcHRpb25T
ZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAg
ICBpZiAoYW5jZXN0b3JDb250YWluZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwpAQCAtMjI0
NSwxNyArMjI0NSwxNyBAQCB2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaQogICAgIC8vIElmIHRoaXMg
Ym94IGhhcyBhIHRyYW5zZm9ybSwgaXQgYWN0cyBhcyBhIGZpeGVkIHBvc2l0aW9uIGNvbnRhaW5l
ciBmb3IgZml4ZWQgZGVzY2VuZGFudHMsCiAgICAgLy8gYW5kIG1heSBpdHNlbGYgYWxzbyBiZSBm
aXhlZCBwb3NpdGlvbi4gU28gcHJvcGFnYXRlICdmaXhlZCcgdXAgb25seSBpZiB0aGlzIGJveCBp
cyBmaXhlZCBwb3NpdGlvbi4KICAgICBpZiAoaGFzVHJhbnNmb3JtKCkgJiYgIWlzRml4ZWRQb3Mp
Ci0gICAgICAgIG1vZGUgJj0gfklzRml4ZWQ7CisgICAgICAgIG1vZGUucmVtb3ZlKElzRml4ZWQp
OwogICAgIGVsc2UgaWYgKGlzRml4ZWRQb3MpCi0gICAgICAgIG1vZGUgfD0gSXNGaXhlZDsKKyAg
ICAgICAgbW9kZS5hZGQoSXNGaXhlZCk7CiAKICAgICBpZiAod2FzRml4ZWQpCi0gICAgICAgICp3
YXNGaXhlZCA9IG1vZGUgJiBJc0ZpeGVkOworICAgICAgICAqd2FzRml4ZWQgPSBtb2RlLmNvbnRh
aW5zKElzRml4ZWQpOwogICAgIAogICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zm
c2V0RnJvbUNvbnRhaW5lcigqY29udGFpbmVyLCBMYXlvdXRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5t
YXBwZWRQb2ludCgpKSk7CiAgICAgCi0gICAgYm9vbCBwcmVzZXJ2ZTNEID0gbW9kZSAmIFVzZVRy
YW5zZm9ybXMgJiYgKGNvbnRhaW5lci0+c3R5bGUoKS5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCku
cHJlc2VydmVzM0QoKSk7Ci0gICAgaWYgKG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIHNob3VsZFVz
ZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29udGFpbmVyKSkgeworICAgIGJvb2wgcHJlc2VydmUz
RCA9IG1vZGUuY29udGFpbnMoVXNlVHJhbnNmb3JtcykgJiYgKGNvbnRhaW5lci0+c3R5bGUoKS5w
cmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCkucHJlc2VydmVzM0QoKSk7CisgICAgaWYgKG1vZGUuY29u
dGFpbnMoVXNlVHJhbnNmb3JtcykgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihj
b250YWluZXIpKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7CiAgICAgICAgIGdl
dFRyYW5zZm9ybUZyb21Db250YWluZXIoY29udGFpbmVyLCBjb250YWluZXJPZmZzZXQsIHQpOwog
ICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybSh0LCBwcmVzZXJ2ZTNEID8gVHJh
bnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRl
blRyYW5zZm9ybSk7CkBAIC0yMjcwLDcgKzIyNzAsNyBAQCB2b2lkIFJlbmRlckJveDo6bWFwTG9j
YWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRh
aQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbW9kZSAmPSB+QXBwbHlDb250YWluZXJG
bGlwOworICAgIG1vZGUucmVtb3ZlKEFwcGx5Q29udGFpbmVyRmxpcCk7CiAKICAgICBjb250YWlu
ZXItPm1hcExvY2FsVG9Db250YWluZXIoYW5jZXN0b3JDb250YWluZXIsIHRyYW5zZm9ybVN0YXRl
LCBtb2RlLCB3YXNGaXhlZCk7CiB9CkBAIC0yMzEwLDE1ICsyMzEwLDE1IEBAIGNvbnN0IFJlbmRl
ck9iamVjdCogUmVuZGVyQm94OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplCiAgICAgcmV0dXJuIGFuY2VzdG9yU2tpcHBlZCA/IGFuY2VzdG9yVG9TdG9w
QXQgOiBjb250YWluZXI7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjptYXBBYnNvbHV0ZVRvTG9jYWxQ
b2ludChNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1T
dGF0ZSkgY29uc3QKK3ZvaWQgUmVuZGVyQm94OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChPcHRp
b25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiBtb2RlLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3Jt
U3RhdGUpIGNvbnN0CiB7CiAgICAgYm9vbCBpc0ZpeGVkUG9zID0gaXNGaXhlZFBvc2l0aW9uZWQo
KTsKICAgICBpZiAoaGFzVHJhbnNmb3JtKCkgJiYgIWlzRml4ZWRQb3MpIHsKICAgICAgICAgLy8g
SWYgdGhpcyBib3ggaGFzIGEgdHJhbnNmb3JtLCBpdCBhY3RzIGFzIGEgZml4ZWQgcG9zaXRpb24g
Y29udGFpbmVyIGZvciBmaXhlZCBkZXNjZW5kYW50cywKICAgICAgICAgLy8gYW5kIG1heSBpdHNl
bGYgYWxzbyBiZSBmaXhlZCBwb3NpdGlvbi4gU28gcHJvcGFnYXRlICdmaXhlZCcgdXAgb25seSBp
ZiB0aGlzIGJveCBpcyBmaXhlZCBwb3NpdGlvbi4KLSAgICAgICAgbW9kZSAmPSB+SXNGaXhlZDsK
KyAgICAgICAgbW9kZS5yZW1vdmUoSXNGaXhlZCk7CiAgICAgfSBlbHNlIGlmIChpc0ZpeGVkUG9z
KQotICAgICAgICBtb2RlIHw9IElzRml4ZWQ7CisgICAgICAgIG1vZGUuYWRkKElzRml4ZWQpOwog
CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KG1vZGUs
IHRyYW5zZm9ybVN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRl
eCBmYTc2N2Y0OGRkMGRkYjU2YjYxODU3NjM1NDU4NDVmNTViMDhjNGYxLi4zNzQ5ZDdkMDQ0ODg5
ODVjOGFiODUwZTZlMGEzZWYxMDU4YmJkMDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCkBAIC02OTcsOSArNjk3LDkgQEAgcHJvdGVjdGVkOgogICAgIAogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKSBjb25zdCB7IHJldHVybiBpc1JlcGxh
Y2VkKCkgJiYgIWlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCk7IH0KIAotICAgIHZvaWQgbWFw
TG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNv
bnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzLCBib29sKiB3YXNG
aXhlZCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0
ZSYsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBib29sKiB3YXNGaXhlZCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVy
KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqLCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0
ZXNGbGFncywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG1hcEFi
c29sdXRlVG9Mb2NhbFBvaW50KE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBUcmFuc2Zv
cm1TdGF0ZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBwYWludFJvb3RCb3hGaWxsTGF5
ZXJzKGNvbnN0IFBhaW50SW5mbyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCAwNmU4Y2MxODllNDQ4ODQ0OGQwYjNmNzkz
ZWIyYzU0ZDk5Njk3Nzc0Li5iOTBiNzA5ZTY2ZDUyYzM3YWYzMTU3ZTkzMDBlMDc1ZmQ0MTc3ZGVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKQEAgLTI2MjksNyArMjYyOSw3IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNo
b3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICByZXR1cm4g
IWNvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKTsKIH0K
IAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFw
Q29vcmRpbmF0ZXNGbGFncyBtb2RlLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNv
bnN0Cit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChP
cHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiBtb2RlLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNm
b3JtU3RhdGUpIGNvbnN0CiB7CiAgICAgUmVuZGVyRWxlbWVudCogY29udGFpbmVyID0gdGhpcy0+
Y29udGFpbmVyKCk7CiAgICAgaWYgKCFjb250YWluZXIpCkBAIC0yNjM5LDggKzI2MzksOCBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29y
ZGluYXRlc0ZsYWdzIG1vZGUsIFRyYQogCiAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQg
PSBvZmZzZXRGcm9tQ29udGFpbmVyKCpjb250YWluZXIsIExheW91dFBvaW50KCkpOwogCi0gICAg
Ym9vbCBwcmVzZXJ2ZTNEID0gbW9kZSAmIFVzZVRyYW5zZm9ybXMgJiYgKGNvbnRhaW5lci0+c3R5
bGUoKS5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCkucHJlc2VydmVzM0QoKSk7Ci0gICAgaWYgKG1v
ZGUgJiBVc2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29u
dGFpbmVyKSkgeworICAgIGJvb2wgcHJlc2VydmUzRCA9IG1vZGUuY29udGFpbnMoVXNlVHJhbnNm
b3JtcykgJiYgKGNvbnRhaW5lci0+c3R5bGUoKS5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCkucHJl
c2VydmVzM0QoKSk7CisgICAgaWYgKG1vZGUuY29udGFpbnMoVXNlVHJhbnNmb3JtcykgJiYgc2hv
dWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb250YWluZXIpKSB7CiAgICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHQ7CiAgICAgICAgIGdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29u
dGFpbmVyLCBjb250YWluZXJPZmZzZXQsIHQpOwogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBs
eVRyYW5zZm9ybSh0LCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFu
c2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDBiN2QwNWM3ZmVi
NmE1OWYzOGQxM2YxOWQ0NmEyNzYyNmY4YTYxMTQuLjIyMmRhZDFiMzhjZjgyM2U4ZjU4NWQ5YmI0
NGQzM2E2MWY3N2Y0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5oCkBAIC0yMTgsNyArMjE4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwg
TGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRp
b25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7CiAKLSAgICB2b2lkIG1hcEFic29sdXRlVG9M
b2NhbFBvaW50KE1hcENvb3JkaW5hdGVzRmxhZ3MsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChPcHRpb25TZXQ8TWFwQ29v
cmRpbmF0ZXNNb2RlPiwgVHJhbnNmb3JtU3RhdGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZv
aWQgc2V0U2VsZWN0aW9uU3RhdGUoSGlnaGxpZ2h0U3RhdGUpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAppbmRleCBh
NzBkMDE0NDcyMjg5YWI0Mjc2MjE2M2FlZjQ2NWMyMGVlNGI3MWMwLi40YzZlOWVhNTJhZDY4YmY5
YzQ2OTM2Yzk3YmE5Zjk3OWIzZTJlNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKQEAgLTkzNyw3ICs5MzcsNyBAQCBMYXlvdXRV
bml0IFJlbmRlckZyYWdtZW50ZWRGbG93OjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RGcmFn
bWVudChjb25zdCBSZW5kZQogICAgIHJldHVybiBjdXJyZW50QmxvY2stPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBibG9ja1JlY3QueSgpIDogYmxvY2tSZWN0LngoKTsKIH0KIAotdm9pZCBS
ZW5kZXJGcmFnbWVudGVkRmxvdzo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9y
bVN0YXRlLCBNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAor
dm9pZCBSZW5kZXJGcmFnbWVudGVkRmxvdzo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRy
YW5zZm9ybVN0YXRlLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiBtb2RlLCBib29sKiB3
YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAodGhpcyA9PSBhbmNlc3RvckNvbnRhaW5lcikKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYWdtZW50ZWRGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21l
bnRlZEZsb3cuaAppbmRleCBkODAxNWQ5Njk5MjRjODgwNzNiYzA4ZTgzZTZhYWQzOTgwNGNmMWU2
Li4xN2ZmMDZmMmZjMTM5NjdjYjhiYjVhMmVmNGZjMjU5ZmZlMzI2YmQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuaApAQCAtMTk1LDcgKzE5
NSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyTGluZXNUb0ZyYWdtZW50TWFwKCk7CiAg
ICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgbWFwTG9jYWxU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzLCBib29sKiB3YXNGaXhlZCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE9w
dGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHVwZGF0ZUZyYWdtZW50c0ZyYWdtZW50ZWRGbG93UG9ydGlvblJlY3Qo
KTsKICAgICBib29sIHNob3VsZFJlcGFpbnQoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKaW5kZXggOGMy
YjExNWQ1MTk4MWEyZmE0NzVhYjE2MjI3ZjZiMzFkZGU0NDI4OC4uNmMwYzIyYWY5YTJmZWMzOTQ0
Yjc4ZjVlZTM0OTBhMTk3YmNmNTMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR2VvbWV0cnlNYXAuY3BwCkBAIC0zNCwxMiArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlbmRlckdlb21ldHJ5TWFwOjpSZW5kZXJHZW9tZXRyeU1hcChNYXBDb29yZGlu
YXRlc0ZsYWdzIGZsYWdzKQotICAgIDogbV9pbnNlcnRpb25Qb3NpdGlvbihub3RGb3VuZCkKLSAg
ICAsIG1fbm9uVW5pZm9ybVN0ZXBzQ291bnQoMCkKLSAgICAsIG1fdHJhbnNmb3JtZWRTdGVwc0Nv
dW50KDApCi0gICAgLCBtX2ZpeGVkU3RlcHNDb3VudCgwKQotICAgICwgbV9tYXBDb29yZGluYXRl
c0ZsYWdzKGZsYWdzKQorUmVuZGVyR2VvbWV0cnlNYXA6OlJlbmRlckdlb21ldHJ5TWFwKE9wdGlv
blNldDxNYXBDb29yZGluYXRlc01vZGU+IGZsYWdzKQorICAgIDogbV9tYXBDb29yZGluYXRlc0Zs
YWdzKGZsYWdzKQogewogfQogCkBAIC0xNzIsOCArMTY4LDExIEBAIHN0YXRpYyBib29sIGNhbk1h
cEJldHdlZW5SZW5kZXJlcnNWaWFMYXllcnMoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYg
cmVuZGVyCiAKIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3Io
Y29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXll
ciwgYm9vbCByZXNwZWN0VHJhbnNmb3JtcykKIHsKLSAgICBNYXBDb29yZGluYXRlc0ZsYWdzIG5l
d0ZsYWdzID0gcmVzcGVjdFRyYW5zZm9ybXMgPyBtX21hcENvb3JkaW5hdGVzRmxhZ3MgOiBtX21h
cENvb3JkaW5hdGVzRmxhZ3MgJiB+VXNlVHJhbnNmb3JtczsKLSAgICBTZXRGb3JTY29wZTxNYXBD
b29yZGluYXRlc0ZsYWdzPiBmbGFnc0NoYW5nZShtX21hcENvb3JkaW5hdGVzRmxhZ3MsIG5ld0Zs
YWdzKTsKKyAgICBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiBuZXdGbGFncyA9IG1fbWFw
Q29vcmRpbmF0ZXNGbGFnczsKKyAgICBpZiAoIXJlc3BlY3RUcmFuc2Zvcm1zKQorICAgICAgICBu
ZXdGbGFncy5yZW1vdmUoVXNlVHJhbnNmb3Jtcyk7CisKKyAgICBTZXRGb3JTY29wZTxPcHRpb25T
ZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPj4gZmxhZ3NDaGFuZ2UobV9tYXBDb29yZGluYXRlc0ZsYWdz
LCBuZXdGbGFncyk7CiAKICAgICBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJl
ciA9IGxheWVyLT5yZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHZW9tZXRyeU1hcC5oCmluZGV4IGVlMTc5MWFlOTVhMWNmMWZkZDY5Y2MxZjY0NjE1NDg2YjIw
ZDE3NzEuLmNiYTg4YzRlYmUyNmIwYTMyYmY5NTI5ZjVmZjZiZGFmNDBlM2Q2ZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oCkBAIC03MywxMCArNzMs
MTAgQEAgc3RydWN0IFJlbmRlckdlb21ldHJ5TWFwU3RlcCB7CiBjbGFzcyBSZW5kZXJHZW9tZXRy
eU1hcCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVuZGVyR2VvbWV0cnlNYXApOwogcHVi
bGljOgotICAgIGV4cGxpY2l0IFJlbmRlckdlb21ldHJ5TWFwKE1hcENvb3JkaW5hdGVzRmxhZ3Mg
PSBVc2VUcmFuc2Zvcm1zKTsKKyAgICBleHBsaWNpdCBSZW5kZXJHZW9tZXRyeU1hcChPcHRpb25T
ZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiA9IFVzZVRyYW5zZm9ybXMpOwogICAgIH5SZW5kZXJHZW9t
ZXRyeU1hcCgpOwogCi0gICAgTWFwQ29vcmRpbmF0ZXNGbGFncyBtYXBDb29yZGluYXRlc0ZsYWdz
KCkgY29uc3QgeyByZXR1cm4gbV9tYXBDb29yZGluYXRlc0ZsYWdzOyB9CisgICAgT3B0aW9uU2V0
PE1hcENvb3JkaW5hdGVzTW9kZT4gbWFwQ29vcmRpbmF0ZXNGbGFncygpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwQ29vcmRpbmF0ZXNGbGFnczsgfQogCiAgICAgRmxvYXRQb2ludCBhYnNvbHV0ZVBvaW50
KGNvbnN0IEZsb2F0UG9pbnQmIHApIGNvbnN0CiAgICAgewpAQCAtMTIzLDEzICsxMjMsMTMgQEAg
cHJpdmF0ZToKIAogICAgIHR5cGVkZWYgVmVjdG9yPFJlbmRlckdlb21ldHJ5TWFwU3RlcCwgMzI+
IFJlbmRlckdlb21ldHJ5TWFwU3RlcHM7CiAKLSAgICBzaXplX3QgbV9pbnNlcnRpb25Qb3NpdGlv
bjsKLSAgICBpbnQgbV9ub25Vbmlmb3JtU3RlcHNDb3VudDsKLSAgICBpbnQgbV90cmFuc2Zvcm1l
ZFN0ZXBzQ291bnQ7Ci0gICAgaW50IG1fZml4ZWRTdGVwc0NvdW50OworICAgIHNpemVfdCBtX2lu
c2VydGlvblBvc2l0aW9uIHsgbm90Rm91bmQgfTsKKyAgICBpbnQgbV9ub25Vbmlmb3JtU3RlcHND
b3VudCB7IDAgfTsKKyAgICBpbnQgbV90cmFuc2Zvcm1lZFN0ZXBzQ291bnQgeyAwIH07CisgICAg
aW50IG1fZml4ZWRTdGVwc0NvdW50IHsgMCB9OwogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcHMg
bV9tYXBwaW5nOwogICAgIExheW91dFNpemUgbV9hY2N1bXVsYXRlZE9mZnNldDsKLSAgICBNYXBD
b29yZGluYXRlc0ZsYWdzIG1fbWFwQ29vcmRpbmF0ZXNGbGFnczsKKyAgICBPcHRpb25TZXQ8TWFw
Q29vcmRpbmF0ZXNNb2RlPiBtX21hcENvb3JkaW5hdGVzRmxhZ3M7CiAjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBib29sIG1fYWNjdW11bGF0ZWRPZmZzZXRNaWdodEJlU2F0dXJhdGVkIHsgZmFsc2Ug
fTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRl
eCA1NzU2MjQ0ZWJlNGEwODRkYTdlM2M5MzhkMmI3OTk1N2JlZWRjYWNlLi44ZDg2MTdhNjE1ZTU1
OGVmODljYjE0MDk3NTJhNWQwYWY2ZTE0ODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcApAQCAtOTk0LDcgKzk5NCw3IEBAIExheW91dFNpemUgUmVuZGVySW5s
aW5lOjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmIGNvbnRhaW5lciwgY29uc3Qg
TGF5CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2Fs
VG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwQ29vcmRpbmF0ZXNGbGFncyBt
b2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRv
Q29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVy
LCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE9wdGlvblNldDxNYXBDb29yZGluYXRl
c01vZGU+IG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChhbmNlc3RvckNv
bnRhaW5lciA9PSB0aGlzKQogICAgICAgICByZXR1cm47CkBAIC0xMDEzLDE4ICsxMDEzLDE4IEBA
IHZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIGFuY2VzdG9yQ29uCiAgICAgaWYgKCFjb250YWluZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtb2RlICYgQXBwbHlDb250YWluZXJGbGlwICYmIGlzPFJlbmRlckJv
eD4oKmNvbnRhaW5lcikpIHsKKyAgICBpZiAobW9kZS5jb250YWlucyhBcHBseUNvbnRhaW5lckZs
aXApICYmIGlzPFJlbmRlckJveD4oKmNvbnRhaW5lcikpIHsKICAgICAgICAgaWYgKGNvbnRhaW5l
ci0+c3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICBM
YXlvdXRQb2ludCBjZW50ZXJQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKTsKICAg
ICAgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUoZG93bmNhc3Q8UmVuZGVyQm94PigqY29udGFp
bmVyKS5mbGlwRm9yV3JpdGluZ01vZGUoY2VudGVyUG9pbnQpIC0gY2VudGVyUG9pbnQpOwogICAg
ICAgICB9Ci0gICAgICAgIG1vZGUgJj0gfkFwcGx5Q29udGFpbmVyRmxpcDsKKyAgICAgICAgbW9k
ZS5yZW1vdmUoQXBwbHlDb250YWluZXJGbGlwKTsKICAgICB9CiAKICAgICBMYXlvdXRTaXplIGNv
bnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIoKmNvbnRhaW5lciwgTGF5b3V0UG9p
bnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSkpOwogCi0gICAgYm9vbCBwcmVzZXJ2ZTNE
ID0gbW9kZSAmIFVzZVRyYW5zZm9ybXMgJiYgKGNvbnRhaW5lci0+c3R5bGUoKS5wcmVzZXJ2ZXMz
RCgpIHx8IHN0eWxlKCkucHJlc2VydmVzM0QoKSk7Ci0gICAgaWYgKG1vZGUgJiBVc2VUcmFuc2Zv
cm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29udGFpbmVyKSkgeworICAg
IGJvb2wgcHJlc2VydmUzRCA9IG1vZGUuY29udGFpbnMoVXNlVHJhbnNmb3JtcykgJiYgKGNvbnRh
aW5lci0+c3R5bGUoKS5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCkucHJlc2VydmVzM0QoKSk7Cisg
ICAgaWYgKG1vZGUuY29udGFpbnMoVXNlVHJhbnNmb3JtcykgJiYgc2hvdWxkVXNlVHJhbnNmb3Jt
RnJvbUNvbnRhaW5lcihjb250YWluZXIpKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHQ7CiAgICAgICAgIGdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29udGFpbmVyLCBjb250YWlu
ZXJPZmZzZXQsIHQpOwogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybSh0LCBw
cmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zv
cm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmgKaW5kZXggNjZmNTRjNzdhMTViMWY3MjQzZjg2YzMyMTVlOTJmOTg3NWU5YzAwZS4u
YTM1MjQzZjRjYzU2ZmM5MTlhNDliYjJiZjBjYzNlZDU1YzliMjkyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtMTMyLDcgKzEzMiw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5l
cihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFp
bmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IGZpbmFsOwogICAgIExheW91dFJlY3QgY29t
cHV0ZVZpc2libGVSZWN0VXNpbmdQYWludE9mZnNldChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7
CiAKLSAgICB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0Zs
YWdzLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBtYXBMb2NhbFRv
Q29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0
b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVy
RnJhZ21lbnRDb250YWluZXIqKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHAKaW5kZXggYjQ4NWM1ZjRkZDdjNTdjMDE5N2E1
NDhkZWE5ZTNiYmZiOTBmZGYzYy4uMGE2MDMzYTdiYjVjN2IxNWJjMmFkZTVkZWY2ZmE0MTNkM2Vl
YzAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uRmxvdy5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCBMYXlvdXRTaXplIFJlbmRlck11bHRpQ29s
dW1uRmxvdzo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiBlbmNsb3NpbmdDbwog
ICAgIHJldHVybiBvZmZzZXQ7CiB9CiAgICAgCi12b2lkIFJlbmRlck11bHRpQ29sdW1uRmxvdzo6
bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlLCBUcmFuc2Zv
cm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0Cit2b2lkIFJlbmRlck11bHRpQ29sdW1uRmxv
dzo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4g
bW9kZSwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlKSBjb25zdAogewogICAgIC8vIEZp
cnN0IGdldCB0aGUgdHJhbnNmb3JtIHN0YXRlJ3MgcG9pbnQgaW50byB0aGUgYmxvY2sgZmxvdyB0
aHJlYWQncyBwaHlzaWNhbCBjb29yZGluYXRlIHNwYWNlLgogICAgIHBhcmVudCgpLT5tYXBBYnNv
bHV0ZVRvTG9jYWxQb2ludChtb2RlLCB0cmFuc2Zvcm1TdGF0ZSk7CkBAIC0zMDksOCArMzA5LDgg
QEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE1h
cENvb3JkaW5hdGVzRmxhZ3MgbW9kZSwgVHIKICAgICAvLyBPbmNlIHdlIGhhdmUgYSBnb29kIGd1
ZXNzIGFzIHRvIHdoaWNoIGZyYWdtZW50IHdlIGhpdCB0ZXN0ZWQgdGhyb3VnaCAoYW5kIHllcywg
dGhpcyB3YXMganVzdCBhIGhldXJpc3RpYywgYnV0IGl0J3MKICAgICAvLyB0aGUgYmVzdCB3ZSBj
b3VsZCBkbyksIHRoZW4gd2UgY2FuIG1hcCBmcm9tIHRoZSBmcmFnbWVudCBpbnRvIHRoZSBmbG93
IHRocmVhZC4KICAgICBMYXlvdXRTaXplIHRyYW5zbGF0aW9uT2Zmc2V0ID0gcGh5c2ljYWxUcmFu
c2xhdGlvbkZyb21GcmFnbWVudFRvRmxvdyhjYW5kaWRhdGVDb2x1bW5TZXQsIGNhbmRpZGF0ZVBv
aW50KSArIGNhbmRpZGF0ZUNvbnRhaW5lck9mZnNldDsKLSAgICBib29sIHByZXNlcnZlM0QgPSBt
b2RlICYgVXNlVHJhbnNmb3JtcyAmJiAocGFyZW50KCktPnN0eWxlKCkucHJlc2VydmVzM0QoKSB8
fCBzdHlsZSgpLnByZXNlcnZlczNEKCkpOwotICAgIGlmIChtb2RlICYgVXNlVHJhbnNmb3JtcyAm
JiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKHBhcmVudCgpKSkgeworICAgIGJvb2wg
cHJlc2VydmUzRCA9IG1vZGUuY29udGFpbnMoVXNlVHJhbnNmb3JtcykgJiYgKHBhcmVudCgpLT5z
dHlsZSgpLnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS5wcmVzZXJ2ZXMzRCgpKTsKKyAgICBpZiAo
bW9kZS5jb250YWlucyhVc2VUcmFuc2Zvcm1zKSAmJiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29u
dGFpbmVyKHBhcmVudCgpKSkgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwogICAg
ICAgICBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKHBhcmVudCgpLCB0cmFuc2xhdGlvbk9mZnNl
dCwgdCk7CiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNmb3JtKHQsIHByZXNlcnZl
M0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRl
OjpGbGF0dGVuVHJhbnNmb3JtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNdWx0aUNvbHVtbkZsb3cuaAppbmRleCBlZDJkYWI3ZTQ3ODZjOGQyM2U2Y2MyMjE2ZDhkODIx
OWM2NWViNzc4Li4wNWQ5ZTc2YWEwNmQ2YjFmMmM5NDM4M2U0OGQ1NTIyYjJiMWIzMDQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5oCkBA
IC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYg
bG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKICAgICAKLSAgICB2b2lkIG1hcEFic29sdXRlVG9M
b2NhbFBvaW50KE1hcENvb3JkaW5hdGVzRmxhZ3MsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChPcHRpb25TZXQ8TWFwQ29v
cmRpbmF0ZXNNb2RlPiwgVHJhbnNmb3JtU3RhdGUmKSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlv
dXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxlbWVudCYsIGNvbnN0IExheW91dFBv
aW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSBudWxscHRyKSBjb25zdCBvdmVycmlk
ZTsKICAgICAKICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSBhcyBjb2x1bW4gYW5kIGZyYWdtZW50
IGZsb3cgdGhyZWFkcyBzdGFydCBuZXN0aW5nLCB0aGlzIHdpbGwgZW5kIHVwIGNoYW5naW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAyNjU4ZDRhOGYy
YjQzYmVmOWE4NWIxMGFmNzZkMGVjNzE4MmZlOTIxLi5hYTU2MjZmYTMzMGZmMGY4NGI1Yzg4MTYw
NjEyZDVhMTEyZDNiZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcApAQCAtNzUxLDcgKzc1MSw3IEBAIEludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkCiAgICAgICAg
IHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHVuaXRlZEJvdW5kaW5nQm94ZXMocXVhZHMpKTsKICAg
ICB9CiAKLSAgICBGbG9hdFBvaW50IGFic1BvcyA9IGxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50
KCksIDAgLyogaWdub3JlIHRyYW5zZm9ybXMgKi8sIHdhc0ZpeGVkKTsKKyAgICBGbG9hdFBvaW50
IGFic1BvcyA9IGxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KCksIHsgfSAvKiBpZ25vcmUgdHJh
bnNmb3JtcyAqLywgd2FzRml4ZWQpOwogICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0czsKICAgICBh
YnNvbHV0ZVJlY3RzKHJlY3RzLCBmbG9vcmVkTGF5b3V0UG9pbnQoYWJzUG9zKSk7CiAKQEAgLTEy
ODYsNyArMTI4Niw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpvdXRwdXRSZW5kZXJTdWJUcmVlQW5k
TWFyayhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IFJlbmRlck9iCiAKICNlbmRpZiAvLyBOREVC
VUcKIAotRmxvYXRQb2ludCBSZW5kZXJPYmplY3Q6OmxvY2FsVG9BYnNvbHV0ZShjb25zdCBGbG9h
dFBvaW50JiBsb2NhbFBvaW50LCBNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdAorRmxvYXRQb2ludCBSZW5kZXJPYmplY3Q6OmxvY2FsVG9BYnNvbHV0ZShjb25z
dCBGbG9hdFBvaW50JiBsb2NhbFBvaW50LCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiBt
b2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBUcmFuc2Zvcm1TdGF0ZSB0cmFuc2Zv
cm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZTo6QXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24sIGxvY2FsUG9p
bnQpOwogICAgIG1hcExvY2FsVG9Db250YWluZXIobnVsbHB0ciwgdHJhbnNmb3JtU3RhdGUsIG1v
ZGUgfCBBcHBseUNvbnRhaW5lckZsaXAsIHdhc0ZpeGVkKTsKQEAgLTEyOTUsNyArMTI5NSw3IEBA
IEZsb2F0UG9pbnQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQWJzb2x1dGUoY29uc3QgRmxvYXRQb2lu
dCYgbG9jYWxQb2ludCwgTWFwQ29vcmRpCiAgICAgcmV0dXJuIHRyYW5zZm9ybVN0YXRlLmxhc3RQ
bGFuYXJQb2ludCgpOwogfQogCi1GbG9hdFBvaW50IFJlbmRlck9iamVjdDo6YWJzb2x1dGVUb0xv
Y2FsKGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRhaW5lclBvaW50LCBNYXBDb29yZGluYXRlc0ZsYWdz
IG1vZGUpIGNvbnN0CitGbG9hdFBvaW50IFJlbmRlck9iamVjdDo6YWJzb2x1dGVUb0xvY2FsKGNv
bnN0IEZsb2F0UG9pbnQmIGNvbnRhaW5lclBvaW50LCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNN
b2RlPiBtb2RlKSBjb25zdAogewogICAgIFRyYW5zZm9ybVN0YXRlIHRyYW5zZm9ybVN0YXRlKFRy
YW5zZm9ybVN0YXRlOjpVbmFwcGx5SW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiwgY29udGFpbmVy
UG9pbnQpOwogICAgIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KG1vZGUsIHRyYW5zZm9ybVN0YXRl
KTsKQEAgLTEzMDQsNyArMTMwNCw3IEBAIEZsb2F0UG9pbnQgUmVuZGVyT2JqZWN0OjphYnNvbHV0
ZVRvTG9jYWwoY29uc3QgRmxvYXRQb2ludCYgY29udGFpbmVyUG9pbnQsIE1hcENvCiAgICAgcmV0
dXJuIHRyYW5zZm9ybVN0YXRlLmxhc3RQbGFuYXJQb2ludCgpOwogfQogCi1GbG9hdFF1YWQgUmVu
ZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWxRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgTWFw
Q29vcmRpbmF0ZXNGbGFncyBtb2RlKSBjb25zdAorRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6YWJz
b2x1dGVUb0xvY2FsUXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIE9wdGlvblNldDxNYXBDb29y
ZGluYXRlc01vZGU+IG1vZGUpIGNvbnN0CiB7CiAgICAgVHJhbnNmb3JtU3RhdGUgdHJhbnNmb3Jt
U3RhdGUoVHJhbnNmb3JtU3RhdGU6OlVuYXBwbHlJbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uLCBx
dWFkLmJvdW5kaW5nQm94KCkuY2VudGVyKCksIHF1YWQpOwogICAgIG1hcEFic29sdXRlVG9Mb2Nh
bFBvaW50KG1vZGUsIHRyYW5zZm9ybVN0YXRlKTsKQEAgLTEzMTIsNyArMTMxMiw3IEBAIEZsb2F0
UXVhZCBSZW5kZXJPYmplY3Q6OmFic29sdXRlVG9Mb2NhbFF1YWQoY29uc3QgRmxvYXRRdWFkJiBx
dWFkLCBNYXBDb29yZGluYXRlCiAgICAgcmV0dXJuIHRyYW5zZm9ybVN0YXRlLmxhc3RQbGFuYXJR
dWFkKCk7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0
ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcENvb3JkaW5hdGVzRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4
ZWQpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUm
IHRyYW5zZm9ybVN0YXRlLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiBtb2RlLCBib29s
KiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAoYW5jZXN0b3JDb250YWluZXIgPT0gdGhpcykK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTMyMywxMCArMTMyMywxMCBAQCB2b2lkIFJlbmRlck9iamVj
dDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNl
c3RvckNvbgogCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGNhbGwgb2Zmc2V0RnJvbUNvbnRh
aW5lciB0byBzaGFyZSBjb2RlLCBidXQgSSdtIG5vdCBzdXJlIGl0J3MgZXZlciBjYWxsZWQuCiAg
ICAgTGF5b3V0UG9pbnQgY2VudGVyUG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSk7
Ci0gICAgaWYgKG1vZGUgJiBBcHBseUNvbnRhaW5lckZsaXAgJiYgaXM8UmVuZGVyQm94PigqcGFy
ZW50KSkgeworICAgIGlmIChtb2RlLmNvbnRhaW5zKEFwcGx5Q29udGFpbmVyRmxpcCkgJiYgaXM8
UmVuZGVyQm94PigqcGFyZW50KSkgewogICAgICAgICBpZiAocGFyZW50LT5zdHlsZSgpLmlzRmxp
cHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3Zl
KGRvd25jYXN0PFJlbmRlckJveD4ocGFyZW50KS0+ZmxpcEZvcldyaXRpbmdNb2RlKExheW91dFBv
aW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKSAtIGNlbnRlclBvaW50KTsKLSAgICAg
ICAgbW9kZSAmPSB+QXBwbHlDb250YWluZXJGbGlwOworICAgICAgICBtb2RlLnJlbW92ZShBcHBs
eUNvbnRhaW5lckZsaXApOwogICAgIH0KIAogICAgIGlmIChpczxSZW5kZXJCb3g+KCpwYXJlbnQp
KQpAQCAtMTM1Myw3ICsxMzUzLDcgQEAgY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6
OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE8KICAgICByZXR1
cm4gY29udGFpbmVyOwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6bWFwQWJzb2x1dGVUb0xvY2Fs
UG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3Jt
U3RhdGUpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQo
T3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4gbW9kZSwgVHJhbnNmb3JtU3RhdGUmIHRyYW5z
Zm9ybVN0YXRlKSBjb25zdAogewogICAgIGlmIChhdXRvKiBwYXJlbnQgPSB0aGlzLT5wYXJlbnQo
KSkgewogICAgICAgICBwYXJlbnQtPm1hcEFic29sdXRlVG9Mb2NhbFBvaW50KG1vZGUsIHRyYW5z
Zm9ybVN0YXRlKTsKQEAgLTEzOTgsNyArMTM5OCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpnZXRU
cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogY29udGFpbmVyT2JqZWN0
CiAjZW5kaWYKIH0KIAotRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclF1
YWQoY29uc3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIGNvbnRhaW5lciwgTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkg
Y29uc3QKK0Zsb2F0UXVhZCBSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0
IEZsb2F0UXVhZCYgbG9jYWxRdWFkLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250
YWluZXIsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+IG1vZGUsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdAogewogICAgIC8vIFRyYWNrIHRoZSBwb2ludCBhdCB0aGUgY2VudGVyIG9mIHRoZSBx
dWFkJ3MgYm91bmRpbmcgYm94LiBBcyBtYXBMb2NhbFRvQ29udGFpbmVyKCkgY2FsbHMgb2Zmc2V0
RnJvbUNvbnRhaW5lcigpLAogICAgIC8vIGl0IHdpbGwgdXNlIHRoYXQgcG9pbnQgYXMgdGhlIHJl
ZmVyZW5jZSBwb2ludCB0byBkZWNpZGUgd2hpY2ggY29sdW1uJ3MgdHJhbnNmb3JtIHRvIGFwcGx5
IGluIG11bHRpcGxlLWNvbHVtbiBibG9ja3MuCkBAIC0xNDA5LDcgKzE0MDksNyBAQCBGbG9hdFF1
YWQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmIGxv
Y2FsUXVhZCwgY29uc3QgUgogICAgIHJldHVybiB0cmFuc2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUXVh
ZCgpOwogfQogCi1GbG9hdFBvaW50IFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclBvaW50
KGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsUG9pbnQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIGNvbnRhaW5lciwgTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkg
Y29uc3QKK0Zsb2F0UG9pbnQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUG9pbnQoY29u
c3QgRmxvYXRQb2ludCYgbG9jYWxQb2ludCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
Y29udGFpbmVyLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiBtb2RlLCBib29sKiB3YXNG
aXhlZCkgY29uc3QKIHsKICAgICBUcmFuc2Zvcm1TdGF0ZSB0cmFuc2Zvcm1TdGF0ZShUcmFuc2Zv
cm1TdGF0ZTo6QXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24sIGxvY2FsUG9pbnQpOwogICAgIG1hcExv
Y2FsVG9Db250YWluZXIoY29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSB8IEFwcGx5Q29u
dGFpbmVyRmxpcCwgd2FzRml4ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCmluZGV4IDJmZDk2ODc5MDIyYTZhM2I4YWNjMzE2YWYxZTE1MDRhNjIzMjc0ZTcuLjIyOGFk
MGU4NGI2OWY3MWNhNTljYTNiMTg0ZDQ0ODUxOGZhZWIwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTUyOCwxOCArNTI4LDE4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrKCkgY29uc3Q7CiAgICAg
UmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9ja0Zvck9iamVjdEluRmxvdygpIGNvbnN0OwogCi0g
ICAgLy8gQ29udmVydCB0aGUgZ2l2ZW4gbG9jYWwgcG9pbnQgdG8gYWJzb2x1dGUgY29vcmRpbmF0
ZXMuIElmIE1hcENvb3JkaW5hdGVzRmxhZ3MgaW5jbHVkZXMgVXNlVHJhbnNmb3JtcywgdGFrZSB0
cmFuc2Zvcm1zIGludG8gYWNjb3VudC4KLSAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFBvaW50IGxv
Y2FsVG9BYnNvbHV0ZShjb25zdCBGbG9hdFBvaW50JiBsb2NhbFBvaW50ID0gRmxvYXRQb2ludCgp
LCBNYXBDb29yZGluYXRlc0ZsYWdzID0gMCwgYm9vbCogd2FzRml4ZWQgPSBudWxscHRyKSBjb25z
dDsKLSAgICBGbG9hdFBvaW50IGFic29sdXRlVG9Mb2NhbChjb25zdCBGbG9hdFBvaW50JiwgTWFw
Q29vcmRpbmF0ZXNGbGFncyA9IDApIGNvbnN0OworICAgIC8vIENvbnZlcnQgdGhlIGdpdmVuIGxv
Y2FsIHBvaW50IHRvIGFic29sdXRlIGNvb3JkaW5hdGVzLiBJZiBPcHRpb25TZXQ8TWFwQ29vcmRp
bmF0ZXNNb2RlPiBpbmNsdWRlcyBVc2VUcmFuc2Zvcm1zLCB0YWtlIHRyYW5zZm9ybXMgaW50byBh
Y2NvdW50LgorICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UG9pbnQgbG9jYWxUb0Fic29sdXRlKGNv
bnN0IEZsb2F0UG9pbnQmIGxvY2FsUG9pbnQgPSBGbG9hdFBvaW50KCksIE9wdGlvblNldDxNYXBD
b29yZGluYXRlc01vZGU+ID0geyB9LCBib29sKiB3YXNGaXhlZCA9IG51bGxwdHIpIGNvbnN0Owor
ICAgIEZsb2F0UG9pbnQgYWJzb2x1dGVUb0xvY2FsKGNvbnN0IEZsb2F0UG9pbnQmLCBPcHRpb25T
ZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiA9IHsgfSkgY29uc3Q7CiAKICAgICAvLyBDb252ZXJ0IGEg
bG9jYWwgcXVhZCB0byBhYnNvbHV0ZSBjb29yZGluYXRlcywgdGFraW5nIHRyYW5zZm9ybXMgaW50
byBhY2NvdW50LgotICAgIEZsb2F0UXVhZCBsb2NhbFRvQWJzb2x1dGVRdWFkKGNvbnN0IEZsb2F0
UXVhZCYsIE1hcENvb3JkaW5hdGVzRmxhZ3MgPSBVc2VUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhl
ZCA9IG51bGxwdHIpIGNvbnN0OworICAgIEZsb2F0UXVhZCBsb2NhbFRvQWJzb2x1dGVRdWFkKGNv
bnN0IEZsb2F0UXVhZCYsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+ID0gVXNlVHJhbnNm
b3JtcywgYm9vbCogd2FzRml4ZWQgPSBudWxscHRyKSBjb25zdDsKICAgICAvLyBDb252ZXJ0IGFu
IGFic29sdXRlIHF1YWQgdG8gbG9jYWwgY29vcmRpbmF0ZXMuCi0gICAgRmxvYXRRdWFkIGFic29s
dXRlVG9Mb2NhbFF1YWQoY29uc3QgRmxvYXRRdWFkJiwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IFVz
ZVRyYW5zZm9ybXMpIGNvbnN0OworICAgIEZsb2F0UXVhZCBhYnNvbHV0ZVRvTG9jYWxRdWFkKGNv
bnN0IEZsb2F0UXVhZCYsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+ID0gVXNlVHJhbnNm
b3JtcykgY29uc3Q7CiAKICAgICAvLyBDb252ZXJ0IGEgbG9jYWwgcXVhZCBpbnRvIHRoZSBjb29y
ZGluYXRlIHN5c3RlbSBvZiBjb250YWluZXIsIHRha2luZyB0cmFuc2Zvcm1zIGludG8gYWNjb3Vu
dC4KLSAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFF1YWQgbG9jYWxUb0NvbnRhaW5lclF1YWQoY29u
c3QgRmxvYXRRdWFkJiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBN
YXBDb29yZGluYXRlc0ZsYWdzID0gVXNlVHJhbnNmb3JtcywgYm9vbCogd2FzRml4ZWQgPSBudWxs
cHRyKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFBvaW50IGxvY2FsVG9Db250YWlu
ZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
Y29udGFpbmVyLCBNYXBDb29yZGluYXRlc0ZsYWdzID0gVXNlVHJhbnNmb3JtcywgYm9vbCogd2Fz
Rml4ZWQgPSBudWxscHRyKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFF1YWQgbG9j
YWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogY29udGFpbmVyLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiA9IFVzZVRy
YW5zZm9ybXMsIGJvb2wqIHdhc0ZpeGVkID0gbnVsbHB0cikgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRQb2ludCBsb2NhbFRvQ29udGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgT3B0aW9uU2V0PE1hcENv
b3JkaW5hdGVzTW9kZT4gPSBVc2VUcmFuc2Zvcm1zLCBib29sKiB3YXNGaXhlZCA9IG51bGxwdHIp
IGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSB0aGUgY29udGFpbmVyKCkg
cmVuZGVyZXIgKGV4Y2x1ZGluZyB0cmFuc2Zvcm1zKS4gSW4gbXVsdGktY29sdW1uIGxheW91dCwK
ICAgICAvLyBkaWZmZXJlbnQgb2Zmc2V0cyBhcHBseSBhdCBkaWZmZXJlbnQgcG9pbnRzLCBzbyBy
ZXR1cm4gdGhlIG9mZnNldCB0aGF0IGFwcGxpZXMgdG8gdGhlIGdpdmVuIHBvaW50LgpAQCAtNzEw
LDggKzcxMCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIE1hcCBwb2ludHMgYW5kIHF1YWRzIHRocm91
Z2ggZWxlbWVudHMsIHBvdGVudGlhbGx5IHZpYSAzZCB0cmFuc2Zvcm1zLiBZb3Ugc2hvdWxkIG5l
dmVyIG5lZWQgdG8gY2FsbCB0aGVzZSBkaXJlY3RseTsgdXNlCiAgICAgLy8gbG9jYWxUb0Fic29s
dXRlL2Fic29sdXRlVG9Mb2NhbCBtZXRob2RzIGluc3RlYWQuCi0gICAgdmlydHVhbCB2b2lkIG1h
cExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzLCBib29sKiB3YXNG
aXhlZCA9IG51bGxwdHIpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9j
YWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENv
b3JkaW5hdGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkID0gbnVsbHB0cikgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE9wdGlvblNldDxNYXBDb29yZGluYXRl
c01vZGU+LCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogCiAgICAgLy8gUHVzaGVzIHN0YXRlIG9u
dG8gUmVuZGVyR2VvbWV0cnlNYXAgYWJvdXQgaG93IHRvIG1hcCBjb29yZGluYXRlcyBmcm9tIHRo
aXMgcmVuZGVyZXIgdG8gaXRzIGNvbnRhaW5lciwgb3IgYW5jZXN0b3JUb1N0b3BBdCAod2hpY2hl
dmVyIGlzIGVuY291bnRlcmVkIGZpcnN0KS4KICAgICAvLyBSZXR1cm5zIHRoZSByZW5kZXJlciB3
aGljaCB3YXMgbWFwcGVkIHRvIChjb250YWluZXIgb3IgYW5jZXN0b3JUb1N0b3BBdCkuCkBAIC0x
MTMxLDcgKzExMzEsNyBAQCBpbmxpbmUgdm9pZCBSZW5kZXJPYmplY3Q6OnNldFBvc2l0aW9uU3Rh
dGUoUG9zaXRpb25UeXBlIHBvc2l0aW9uKQogICAgIG1fYml0ZmllbGRzLnNldFBvc2l0aW9uZWRT
dGF0ZShzdGF0aWNfY2FzdDxpbnQ+KHBvc2l0aW9uKSk7CiB9CiAKLWlubGluZSBGbG9hdFF1YWQg
UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQWJzb2x1dGVRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwg
TWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK2lubGluZSBG
bG9hdFF1YWQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQWJzb2x1dGVRdWFkKGNvbnN0IEZsb2F0UXVh
ZCYgcXVhZCwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4gbW9kZSwgYm9vbCogd2FzRml4
ZWQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGxvY2FsVG9Db250YWluZXJRdWFkKHF1YWQsIG51bGxw
dHIsIG1vZGUsIHdhc0ZpeGVkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3RFbnVtcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdEVudW1zLmgKaW5kZXggMzk5ZWJlYjE1ZDYzNDRmNjlhMjlhN2Y4OTEwZmFjNmQwY2Ux
MGJiZi4uZDRhYzhlZDcyOTlhMTRkOWU5ODQ1OGNmZmQwMzQxNjBiNzUxYTE0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdEVudW1zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdEVudW1zLmgKQEAgLTU5LDYgKzU5LDUg
QEAgZW51bSBNYXBDb29yZGluYXRlc01vZGUgewogICAgIFVzZVRyYW5zZm9ybXMgICAgICAgPSAx
IDw8IDEsCiAgICAgQXBwbHlDb250YWluZXJGbGlwICA9IDEgPDwgMgogfTsKLXR5cGVkZWYgdW5z
aWduZWQgTWFwQ29vcmRpbmF0ZXNGbGFnczsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHAKaW5kZXggYWE5YmI3N2FhNmVlNjJiZDhhODU5ZTI5MDc2OTQwYmEwMjhj
ZmU4Yi4uOGZiZGI1NmMzYTBmNzBkODdiNDU2ZjcwMWI3MWQ5N2QyYTNhZGZmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAgU3Ry
aW5nIFJlbmRlclRoZW1lOjpmb3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5nVGltZShmbG9hdCBj
dXJyZW50VGltZSwgZmxvYXQgZHUKIExheW91dFBvaW50IFJlbmRlclRoZW1lOjp2b2x1bWVTbGlk
ZXJPZmZzZXRGcm9tTXV0ZUJ1dHRvbihjb25zdCBSZW5kZXJCb3gmIG11dGVCdXR0b25Cb3gsIGNv
bnN0IExheW91dFNpemUmIHNpemUpIGNvbnN0CiB7CiAgICAgTGF5b3V0VW5pdCB5ID0gLXNpemUu
aGVpZ2h0KCk7Ci0gICAgRmxvYXRQb2ludCBhYnNQb2ludCA9IG11dGVCdXR0b25Cb3gubG9jYWxU
b0Fic29sdXRlKEZsb2F0UG9pbnQobXV0ZUJ1dHRvbkJveC5vZmZzZXRMZWZ0KCksIHkpLCBJc0Zp
eGVkIHwgVXNlVHJhbnNmb3Jtcyk7CisgICAgRmxvYXRQb2ludCBhYnNQb2ludCA9IG11dGVCdXR0
b25Cb3gubG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQobXV0ZUJ1dHRvbkJveC5vZmZzZXRMZWZ0
KCksIHkpLCB7IElzRml4ZWQsIFVzZVRyYW5zZm9ybXMgfSk7CiAgICAgaWYgKGFic1BvaW50Lnko
KSA8IDApCiAgICAgICAgIHkgPSBtdXRlQnV0dG9uQm94LmhlaWdodCgpOwogICAgIHJldHVybiBM
YXlvdXRQb2ludCgwX2x1LCB5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cAppbmRleCA3MjUyODg0M2NlMWYxYTg2NTc2ZWFmZjAzYWM3MzhlZDY0YjQwMzA4Li5kM2ZhMzdj
Y2EyZDUxYjYzMGJkMTlkYWE1Njc2YmRmZDNiMjk2MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCkBAIC0yMzcsMTcgKzIzNywxNyBAQCBMYXlvdXRVbml0IFJlbmRl
clZpZXc6OmNsaWVudExvZ2ljYWxIZWlnaHRGb3JGaXhlZFBvc2l0aW9uKCkgY29uc3QKICAgICBy
ZXR1cm4gY2xpZW50TG9naWNhbEhlaWdodCgpOwogfQogCi12b2lkIFJlbmRlclZpZXc6Om1hcExv
Y2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250
YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwQ29vcmRpbmF0ZXNGbGFn
cyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyVmlldzo6bWFwTG9jYWxU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0
ZXNNb2RlPiBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAvLyBJZiBhIGNvbnRh
aW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5vdCBudWxscHRyIG9yIHRoZSBSZW5kZXJWaWV3
LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQgYnkgbm93LgogICAgIEFTU0VS
VF9BUkcoYW5jZXN0b3JDb250YWluZXIsICFhbmNlc3RvckNvbnRhaW5lciB8fCBhbmNlc3RvckNv
bnRhaW5lciA9PSB0aGlzKTsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc0ZpeGVkLCAhd2FzRml4ZWQg
fHwgKndhc0ZpeGVkID09IChtb2RlICYgSXNGaXhlZCkpOworICAgIEFTU0VSVF9VTlVTRUQod2Fz
Rml4ZWQsICF3YXNGaXhlZCB8fCAqd2FzRml4ZWQgPT0gKG1vZGUuY29udGFpbnMoSXNGaXhlZCkp
KTsKIAotICAgIGlmIChtb2RlICYgSXNGaXhlZCkKKyAgICBpZiAobW9kZS5jb250YWlucyhJc0Zp
eGVkKSkKICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZSh0b0xheW91dFNpemUoZnJhbWVWaWV3
KCkuc2Nyb2xsUG9zaXRpb25SZXNwZWN0aW5nQ3VzdG9tRml4ZWRQb3NpdGlvbigpKSk7CiAKLSAg
ICBpZiAoIWFuY2VzdG9yQ29udGFpbmVyICYmIG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIHNob3Vs
ZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIobnVsbHB0cikpIHsKKyAgICBpZiAoIWFuY2VzdG9y
Q29udGFpbmVyICYmIG1vZGUuY29udGFpbnMoVXNlVHJhbnNmb3JtcykgJiYgc2hvdWxkVXNlVHJh
bnNmb3JtRnJvbUNvbnRhaW5lcihudWxscHRyKSkgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0OwogICAgICAgICBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG51bGxwdHIsIExheW91
dFNpemUoKSwgdCk7CiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNmb3JtKHQpOwpA
QCAtMjcyLDcgKzI3Miw3IEBAIGNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyVmlldzo6cHVzaE1h
cHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFw
Q29vcmRpbmF0ZXNGbGFncyBtb2RlLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNv
bnN0Cit2b2lkIFJlbmRlclZpZXc6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE9wdGlvblNldDxN
YXBDb29yZGluYXRlc01vZGU+IG1vZGUsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkg
Y29uc3QKIHsKICAgICBpZiAobW9kZSAmIFVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNm
b3JtRnJvbUNvbnRhaW5lcihudWxscHRyKSkgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCB0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggZWEwNzg1NThjODBl
ZDc1ODNhMTgyYzM0MzM2NjM3MDljNjRmYTk3Ni4uM2NlYzA5MzU0N2U5ODg3ZWNjY2U2YzgwZWNk
NTYzMzk5Y2Y5YTIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC0y
MDAsOSArMjAwLDkgQEAgcHVibGljOgogICAgIGNvbnN0IEhhc2hTZXQ8Y29uc3QgUmVuZGVyQm94
Kj4mIGJveGVzV2l0aFNjcm9sbFNuYXBQb3NpdGlvbnMoKSB7IHJldHVybiBtX2JveGVzV2l0aFNj
cm9sbFNuYXBQb3NpdGlvbnM7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIG1hcExvY2FsVG9Db250
YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJh
bnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzLCBib29sKiB3YXNGaXhlZCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0
PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKICAg
ICBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE1hcENvb3Jk
aW5hdGVzRmxhZ3MsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBt
YXBBYnNvbHV0ZVRvTG9jYWxQb2ludChPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiwgVHJh
bnNmb3JtU3RhdGUmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHJlcXVpcmVzQ29sdW1ucyhp
bnQgZGVzaXJlZENvbHVtbkNvdW50KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY29tcHV0
ZUNvbHVtbkNvdW50QW5kV2lkdGgoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCmluZGV4IGYyZDdl
YTAwZjU0YTcyZDFhMjZlMzNmMTAwZWY2ZTI1Njc3NzI4NmIuLmZiYzhhNmFmNDYyOWNhOGU0N2Y2
YmQzNjljOTMxM2EyMTFkN2U5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBA
IGJvb2wgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9y
bVN0YXRlLCBNYXBDb29yZGluYXRlc0ZsYWdzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQg
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5z
Zm9ybVN0YXRlLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0CiB7CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcigqdGhp
cywgYW5jZXN0b3JDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5oCmluZGV4IDNjZjA1OTk5NmE1MzI1NjI1MDk5N2VlZmEzOWRjNTU0NTE0MmUxNWYuLmFkOTMy
MGRjZjU0ZWM2YTE2NzcwMGY3MGUwYzg1ZjNhMTU1YmEzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCkBAIC01Myw3
ICs1Myw3IEBAIHB1YmxpYzoKICAgICBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVu
dCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxv
Y2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwg
SGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIG1hcExvY2FsVG9Db250YWluZXIo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9y
bVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncywgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBPcHRpb25TZXQ8TWFw
Q29vcmRpbmF0ZXNNb2RlPiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNv
bnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBvdmVycmlkZSB7
IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCA3NmRhODQ1OTZiOTZhYTJi
YWJkMGI5MDM0MDc2N2FlNTU4MzVkNjZiLi4wMTkzYjY3MTE4ZWU0MmZkODZiZjdmZmFhZjIzNzIx
MDhhNTI3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmUuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBS
ZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uCiAg
ICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250
YWluZXIoKnRoaXMsIHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CiB9CiAKLXZvaWQgUmVuZGVy
U1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1h
cENvb3JkaW5hdGVzRmxhZ3MsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdJ
bmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
YW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgT3B0aW9u
U2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIFNW
R1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIoKnRoaXMsIGFuY2VzdG9yQ29udGFp
bmVyLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXggMmEwOTBhNDI2ZDRkMmJjNzQ5ODBm
Yzk0ZGMxNjQ4YjY4YThjZjU1NS4uYjJjYjY4YmY3OTE3YmZjZTkzNjYyMDE3YjZjZDg3YjgzOGU4
MjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZS5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXRSZWN0IGNsaXBwZWRP
dmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gY29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0
Q29udGV4dCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0
ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3MsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBmaW5hbDsKKyAg
ICB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
YW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5h
dGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBSZW5kZXJP
YmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBmaW5hbDsKICAg
ICB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkg
Y29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5kZXggZTI4OTczMjQ4NGNiNWYwMmFhMTliYmIyNmI1
NzNhNDM3NmY2MTZjOS4uOTg3ZGY2YTZiZTBiNTM0ODA1MDc4NmJmZTBhNmM1MzM5NWI1YzI4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2Rl
bE9iamVjdC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFJl
bmRlclNWR01vZGVsT2JqZWN0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmUKICAg
ICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRh
aW5lcigqdGhpcywgcmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKIH0KIAotdm9pZCBSZW5kZXJT
VkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRl
LCBNYXBDb29yZGluYXRlc0ZsYWdzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVy
U1ZHTW9kZWxPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0
ZSwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAog
ewogICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIoKnRoaXMsIGFuY2Vz
dG9yQ29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IDYy
NjIxODQ0M2MzMWQxN2NiZDcxM2RlYjEzN2JiYzQxOWFlN2RjYTguLjliMDFmOTFmOTNkODM3ZjYy
NTdhMWIyOGUzMzJmODFlMWMyOTk2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgYWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0Zs
YWdzLCBib29sKiB3YXNGaXhlZCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBtYXBMb2NhbFRvQ29u
dGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBU
cmFuc2Zvcm1TdGF0ZSYsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBib29sKiB3YXNG
aXhlZCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQs
IFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmlu
ZGV4IGZjMzZiZmZiYWRiZTI1NWQxNWY5MzljZTc1MzFjMDYzNjRjMjkzZmUuLmRkNGYyMWU0MDVm
ZTk5ZGM5MjhmMjJhZWJkNjE1MTMxMzNlMjNmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMzk4LDEwICszOTgsMTAgQEAgc3RkOjpv
cHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0
SW5Db250YWluZXIoY29uc3QKIC8vIFRoaXMgbWV0aG9kIGV4cGVjdHMgbG9jYWwgQ1NTIGJveCBj
b29yZGluYXRlcy4KIC8vIENhbGxlcnMgd2l0aCBsb2NhbCBTVkcgdmlld3BvcnQgY29vcmRpbmF0
ZXMgc2hvdWxkIGZpcnN0IGFwcGx5IHRoZSBsb2NhbFRvQm9yZGVyQm94VHJhbnNmb3JtCiAvLyB0
byBjb252ZXJ0IGZyb20gU1ZHIHZpZXdwb3J0IGNvb3JkaW5hdGVzIHRvIGxvY2FsIENTUyBib3gg
Y29vcmRpbmF0ZXMuCi12b2lkIFJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9Db250YWluZXIoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0
YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlLCBib29sKiB3YXNG
aXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3Rh
dGUmIHRyYW5zZm9ybVN0YXRlLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiBtb2RlLCBi
b29sKiB3YXNGaXhlZCkgY29uc3QKIHsKLSAgICBBU1NFUlQobW9kZSAmIH5Jc0ZpeGVkKTsgLy8g
V2Ugc2hvdWxkIGhhdmUgbm8gZml4ZWQgY29udGVudCBpbiB0aGUgU1ZHIHJlbmRlcmluZyB0cmVl
LgotICAgIEFTU0VSVChtb2RlICYgVXNlVHJhbnNmb3Jtcyk7IC8vIG1hcHBpbmcgYSBwb2ludCB0
aHJvdWdoIFNWRyB3L28gcmVzcGVjdGluZyB0cmFzbmZvcm1zIGlzIHVzZWxlc3MuCisgICAgQVNT
RVJUKCFtb2RlLmNvbnRhaW5zKElzRml4ZWQpKTsgLy8gV2Ugc2hvdWxkIGhhdmUgbm8gZml4ZWQg
Y29udGVudCBpbiB0aGUgU1ZHIHJlbmRlcmluZyB0cmVlLgorICAgIEFTU0VSVChtb2RlLmNvbnRh
aW5zKFVzZVRyYW5zZm9ybXMpKTsgLy8gbWFwcGluZyBhIHBvaW50IHRocm91Z2ggU1ZHIHcvbyBy
ZXNwZWN0aW5nIHRyYW5zZm9ybXMgaXMgdXNlbGVzcy4KIAogICAgIFJlbmRlclJlcGxhY2VkOjpt
YXBMb2NhbFRvQ29udGFpbmVyKGFuY2VzdG9yQ29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9k
ZSB8IEFwcGx5Q29udGFpbmVyRmxpcCwgd2FzRml4ZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAppbmRleCAxODY2ZjQyZjAyNzBiNGFhNTViNDJj
OGEwNjI2NDc2NzRiNGE2MTQ4Li5lYTk1YWI4ODAyY2QyOTgwNDFjYjkwYzA1MDBhNzZiMWUyYzFh
NmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jv
b3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApA
QCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93
UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBWaXNp
YmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250
ZXh0KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3Rh
dGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE9wdGlvblNldDxNYXBDb29y
ZGluYXRlc01vZGU+LCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3Qg
UmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0LmNwcAppbmRleCBiZTMyYTNlODYxNDk3OTc3MWU1ZTFmNjAyOTJhMDA3ODM2ZjBiNGNk
Li4xOTJhYjVmNDI2NjNlOTQ0ZTY1NDViYTMzMDM4OTg0NTUxYWJiYmU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTEwNSw3ICsxMDUs
NyBAQCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZUZsb2F0
VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdAogICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0
Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKCp0aGlzLCByZWN0LCBjb250YWlu
ZXIsIGNvbnRleHQpOwogfQogCi12b2lkIFJlbmRlclNWR1RleHQ6Om1hcExvY2FsVG9Db250YWlu
ZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5z
Zm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwQ29vcmRpbmF0ZXNGbGFncywgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1RleHQ6Om1hcExvY2FsVG9Db250YWluZXIoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0
YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wq
IHdhc0ZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250
YWluZXIoKnRoaXMsIGFuY2VzdG9yQ29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAppbmRl
eCA1ZTk1Y2IxOTM3MmE3NzUxZjU3NWJjM2RlOThjZGI2ODIwNDQ4NWVkLi44OTk5YTE1M2NmOGQw
YmZjNTJlMjNkODllNjgzMzVjOTg5ZmI0NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gY29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29u
c3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwg
VmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gY29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0
Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIG1hcExvY2FsVG9Db250YWluZXIo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9y
bVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncywgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBPcHRpb25TZXQ8TWFw
Q29vcmRpbmF0ZXNNb2RlPiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNv
bnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4
IDQ0YjgwYWFlNDk1NGQxMDY4MGQ2OTFhMWRkZDE4ZWE3MDkwYmEzODEuLmJiY2Y3NWFiY2ZmY2Zh
MzI5NjY2MzQ0NWZkOTFhNzg1NzQ0N2U1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQg
U1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgY29uc3QKIAogICAgIHRyYW5zZm9ybVN0YXRlLmFwcGx5VHJhbnNmb3JtKHRy
YW5zZm9ybSk7CiAKLSAgICBNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUgPSBVc2VUcmFuc2Zvcm1z
OworICAgIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+IG1vZGUgPSBVc2VUcmFuc2Zvcm1z
OwogICAgIHBhcmVudC5tYXBMb2NhbFRvQ29udGFpbmVyKGFuY2VzdG9yQ29udGFpbmVyLCB0cmFu
c2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>