<?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>213803</bug_id>
          
          <creation_ts>2020-06-30 11:02:58 -0700</creation_ts>
          <short_desc>Split color conversion functions out of ColorUtilities.h/cpp into their own file.</short_desc>
          <delta_ts>2020-07-03 09:56: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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1667628</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-30 11:02:58 -0700</bug_when>
    <thetext>Split color conversion functions out of ColorUtilities.h/cpp into their own file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667643</commentid>
    <comment_count>1</comment_count>
      <attachid>403212</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-30 11:42:22 -0700</bug_when>
    <thetext>Created attachment 403212
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667708</commentid>
    <comment_count>2</comment_count>
      <attachid>403237</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-30 13:27:30 -0700</bug_when>
    <thetext>Created attachment 403237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668007</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-01 10:55:59 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 403237 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668577</commentid>
    <comment_count>4</comment_count>
      <attachid>403460</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-03 08:05:38 -0700</bug_when>
    <thetext>Created attachment 403460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668589</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-03 09:55:45 -0700</bug_when>
    <thetext>Committed r263901: &lt;https://trac.webkit.org/changeset/263901&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403460.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668590</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-03 09:56:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/65079134&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403212</attachid>
            <date>2020-06-30 11:42:22 -0700</date>
            <delta_ts>2020-06-30 13:27:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213803-20200630114222.patch</filename>
            <type>text/plain</type>
            <size>35375</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTA2LTMwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBjb2xvciBjb252ZXJzaW9u
IGZ1bmN0aW9ucyBvdXQgb2YgQ29sb3JVdGlsaXRpZXMuaC9jcHAgaW50byB0aGVpciBvd24gZmls
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzgw
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVz
IGNvbG9yIGNvbnZlcnNpb24gZnVuY3Rpb25zIChib3RoIGJldHdlZW4gY29sb3Igc3BhY2VzIGxp
a2UgdG9EaXNwbGF5UDMoY29uc3QgU1JHQkEmKQorICAgICAgICBhbmQgYmV0d2VlbiBkaWZmZXJl
bnQgcmVwcmVzZW50YXRpb25zIGxpa2UgdG9IU0xBKGNvbnN0IFNSR0JBJikpIHRvIHRoZWlyIG93
biBmaWxlcy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuY3BwOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHA6CisgICAgICAgIEFkZCBpbmNs
dWRlIG9mIENvbG9yQ29udmVyc2lvbi5oCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9D
b2xvckNvbnZlcnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9D
b2xvckNvbnZlcnNpb24uaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0
aWVzLmg6CisgICAgICAgIE1vdmUgZnVuY3Rpb25zIHRvIHRoZSBuZXcgZmlsZXMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcDoKKyAgICAgICAgQWRk
IGluY2x1ZGUgb2YgQ29sb3JDb252ZXJzaW9uLmgsIHJlbW92ZSB1bm5jZXNzYXJ5IGluY2x1ZGUg
b2YgQ29sb3JVdGlsaXRpZXMuaAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgUmVtb3ZlIHVu
bmNlc3NhcnkgaW5jbHVkZSBvZiBDb2xvclV0aWxpdGllcy5oCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAgICAgIEFkZCBpbmNs
dWRlIG9mIENvbG9yQ29udmVyc2lvbi5oIGFuZCBDb2xvclR5cGVzLmgsIHJlbW92ZSB1bm5jZXNz
YXJ5IGluY2x1ZGUgb2YgQ29sb3JVdGlsaXRpZXMuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2d0ay9Db2xvckd0ay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0NvbG9yRGlyZWN0MkQuY3BwOgorICAgICAgICBSZW1vdmUgdW5uY2Vzc2FyeSBpbmNsdWRlIG9m
IENvbG9yVXRpbGl0aWVzLmguIFVwZGF0ZSB0byB1c2Ugc3RhbmRhcmQgZmxvYXQgLT4gU2ltcGxl
Q29sb3IgaWRpb20KKyAgICAgICAgdXNpbmcgU1JHQkE8ZmxvYXQ+LgorCiAyMDIwLTA2LTMwICBQ
ZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgU2NydW5jaGluZyBhIHZp
ZGVvIHRvIFBpUCBjYW4gcmVzdWx0IGluIGJyb2tlbiBhbmltYXRpb24gYW5kIGxlYXZlIFNhZmFy
aSBpbiBhIGJhZCBzdGF0ZQpJbmRleDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAyNjM3NTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgz
LDYgKzEwODMsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JIYXNoLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjYz
NzU4KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
MDcsNiArMTkwNyw3IEBAIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAorcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRp
ZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDI2Mzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM0NCw2ICsyMzQ0LDcgQEAKIAkJN0NDRUJGQzAxREQ4
RjZBQjAwMkM0MEI4IC8qIFNWR0xlbmd0aFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U1OEQ1MzFERDdCMDkzMDAxMjg1NTIgLyogU1ZHTGVu
Z3RoVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0QwRTJCNTFGODBBNDgy
MDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggKi87IH07CiAJCTdDRDBFMkJGMUY4MEE1NkUw
MDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0NEMEUyQkMxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmgg
Ki87IH07CisJCTdDRDFFNjg0MjRBQjlDQzcwMDg5QzQxOSAvKiBDb2xvckNvbnZlcnNpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRDFFNjgzMjRB
QjlDQzIwMDg5QzQxOSAvKiBDb2xvckNvbnZlcnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0Q0OTRDRDFBODZFQjFEMDAwQTg3RUMgLyog
UmVuZGVyQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NENDk0Q0IxQTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0Q1OERG
QjFGOTU2NUE1MDAxMTI3OTEgLyogU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRUI1N0U5MUY5NTY1MTUwMDA5N0FFQyAvKiBTZXR0aW5n
cy5oICovOyB9OwogCQk3Q0Q1OERGRDFGOTU2NUE4MDAxMTI3OTEgLyogU2V0dGluZ3MuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFQjU3RUExRjk1
NjUxNTAwMDk3QUVDIC8qIFNldHRpbmdzLmNwcCAqLzsgfTsKQEAgLTEwMTkxLDYgKzEwMTkyLDgg
QEAKIAkJN0NEMEUyQkMxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFib3J0U2lnbmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRDBF
MkJEMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBYm9ydFNpZ25hbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRDBFMkJF
MUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWJvcnRTaWduYWwuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0QxRTY4MTI0QUI5Q0MyMDA4OUM0MTkg
LyogQ29sb3JDb252ZXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yQ29udmVyc2lv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDRDFFNjgzMjRBQjlDQzIwMDg5
QzQxOSAvKiBDb2xvckNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDb252ZXJzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRDM0NDBEMUYzMTA4MzYwMDBEQ0Q0
OSAvKiBNdXRhdGlvbkNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNdXRhdGlv
bkNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NEMzQ0MTExRjMx
MDhERDAwMERDRDQ5IC8qIEpTTXV0YXRpb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU011
dGF0aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NEMzQ0MTIx
RjMxMDhFMjAwMERDRDQ5IC8qIEpTTXV0YXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU011dGF0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjU0OTQsNiArMjU0OTcsOCBAQAogCQkJCUIyNzUzNTM4MEIwNTM4MTQwMDJDRTY0RiAvKiBD
b2xvci5jcHAgKi8sCiAJCQkJQjI3NTM1MzkwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmggKi8s
CiAJCQkJN0NBQzZBRUMyNDdGMUM1MTAwRTYxRDU5IC8qIENvbG9yQ29tcG9uZW50cy5oICovLAor
CQkJCTdDRDFFNjgxMjRBQjlDQzIwMDg5QzQxOSAvKiBDb2xvckNvbnZlcnNpb24uY3BwICovLAor
CQkJCTdDRDFFNjgzMjRBQjlDQzIwMDg5QzQxOSAvKiBDb2xvckNvbnZlcnNpb24uaCAqLywKIAkJ
CQkzMTAzQjdERTFEQjAxNTU2MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggKi8sCiAJCQkJN0NBQzZB
RTgyNDdGMDgyMDAwRTYxRDU5IC8qIENvbG9yTWF0cml4LmggKi8sCiAJCQkJOTM4MkRGNTcxMEE4
RDVDOTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCAqLywKQEAgLTMwMDY5LDYgKzMwMDc0LDcgQEAK
IAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNDhEMkFBNTIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRjAyNDdGNDExMDAwRTYxRDU5IC8qIENvbG9yQ29t
cG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0NEMUU2ODQyNEFCOUNDNzAwODlDNDE5IC8q
IENvbG9yQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwM0I3REYxREIwMTU2NzAw
OEJCODkwIC8qIENvbG9ySGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjQxMjUxRjEy
RDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTUxNjlF
NzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmNwcAkocmV2aXNpb24gMjYzNzU4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiQ1NTUGFpbnRJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2Vy
SWRpb21zLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCisjaW5jbHVkZSAiQ29sb3JDb252
ZXJzaW9uLmgiCiAjaW5jbHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTdHlsZUNvbG9yLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCShyZXZpc2lvbiAyNjM3NTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiQXR0ci5oIgogI2ltcG9ydCAiQ1NTU3R5
bGVEZWNsYXJhdGlvbi5oIgorI2ltcG9ydCAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJF
ZGl0aW5nLmgiCiAjaW1wb3J0ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgogI2ltcG9ydCAi
RWxlbWVudFRyYXZlcnNhbC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHJldmlzaW9u
IDI2Mzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgogI2luY2x1ZGUg
IkNhbnZhc1BhdHRlcm4uaCIKKyNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNsdWRl
ICJET01NYXRyaXguaCIKICNpbmNsdWRlICJET01NYXRyaXgyREluaXQuaCIKICNpbmNsdWRlICJE
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwCShyZXZpc2lvbiAyNjM3NTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ2FudmFzR3Jh
ZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCisjaW5jbHVkZSAiQ29sb3JDb252
ZXJzaW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTENh
bnZhc0VsZW1lbnQuaCIKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3LCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCisK
KyNpbmNsdWRlICJDb2xvckNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJDb2xvck1hdHJpeC5oIgor
I2luY2x1ZGUgIkNvbG9yVHlwZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitmbG9hdCBs
aW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCit7CisgICAgaWYgKGMgPCAwLjAwMzEz
MDhmKQorICAgICAgICByZXR1cm4gMTIuOTJmICogYzsKKworICAgIHJldHVybiBjbGFtcFRvPGZs
b2F0PigxLjA1NWYgKiBzdGQ6OnBvdyhjLCAxLjBmIC8gMi40ZikgLSAwLjA1NWYsIDAsIDEpOwor
fQorCitmbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCit7CisgICAgaWYg
KGMgPD0gMC4wNDA0NWYpCisgICAgICAgIHJldHVybiBjIC8gMTIuOTJmOworCisgICAgcmV0dXJu
IGNsYW1wVG88ZmxvYXQ+KHN0ZDo6cG93KChjICsgMC4wNTVmKSAvIDEuMDU1ZiwgMi40ZiksIDAs
IDEpOworfQorCitMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBTUkdCQTxm
bG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB7CisgICAgICAgIHJnYlRvTGluZWFyQ29sb3JD
b21wb25lbnQoY29sb3IucmVkKSwKKyAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChj
b2xvci5ncmVlbiksCisgICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IuYmx1
ZSksCisgICAgICAgIGNvbG9yLmFscGhhCisgICAgfTsKK30KKworU1JHQkE8ZmxvYXQ+IHRvU1JH
QkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4geworICAg
ICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9yLnJlZCksCisgICAgICAgIGxpbmVh
clRvUkdCQ29sb3JDb21wb25lbnQoY29sb3IuZ3JlZW4pLAorICAgICAgICBsaW5lYXJUb1JHQkNv
bG9yQ29tcG9uZW50KGNvbG9yLmJsdWUpLAorICAgICAgICBjb2xvci5hbHBoYQorICAgIH07Cit9
CisKK0xpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgRGlzcGxh
eVAzPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgcmdiVG9MaW5lYXJD
b2xvckNvbXBvbmVudChjb2xvci5yZWQpLAorICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9u
ZW50KGNvbG9yLmdyZWVuKSwKKyAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChjb2xv
ci5ibHVlKSwKKyAgICAgICAgY29sb3IuYWxwaGEKKyAgICB9OworfQorCitEaXNwbGF5UDM8Zmxv
YXQ+IHRvRGlzcGxheVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQorewor
ICAgIHJldHVybiB7CisgICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQoY29sb3IucmVk
KSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChjb2xvci5ncmVlbiksCisgICAg
ICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQoY29sb3IuYmx1ZSksCisgICAgICAgIGNvbG9y
LmFscGhhCisgICAgfTsKK30KKworc3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNS
R0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICAvLyBodHRwczovL2VuLndpa2lw
ZWRpYS5vcmcvd2lraS9TUkdCCisgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20v
aW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbAorICAgIGNvbnN0ZXhwciBDb2xvck1h
dHJpeDwzLCAzPiB4eXpUb0xpbmVhclNSR0JNYXRyaXggeworICAgICAgICAgMy4yNDA0NTQyZiwg
LTEuNTM3MTM4NWYsIC0wLjQ5ODUzMTRmLAorICAgICAgICAtMC45NjkyNjYwZiwgIDEuODc2MDEw
OGYsICAwLjA0MTU1NjBmLAorICAgICAgICAgMC4wNTU2NDM0ZiwgLTAuMjA0MDI1OWYsICAxLjA1
NzIyNTJmCisgICAgfTsKKyAgICByZXR1cm4gYXNMaW5lYXJTUkdCQSh4eXpUb0xpbmVhclNSR0JN
YXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3Ip
KSk7Cit9CisKK3N0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJTUkdCQTxmbG9h
dD4mIGNvbG9yKQoreworICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IK
KyAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0Jf
WFlaX01hdHJpeC5odG1sCisgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhclNS
R0JUb1hZWk1hdHJpeCB7CisgICAgICAgIDAuNDEyNDU2NGYsICAwLjM1NzU3NjFmLCAgMC4xODA0
Mzc1ZiwKKyAgICAgICAgMC4yMTI2NzI5ZiwgIDAuNzE1MTUyMmYsICAwLjA3MjE3NTBmLAorICAg
ICAgICAwLjAxOTMzMzlmLCAgMC4xMTkxOTIwZiwgIDAuOTUwMzA0MWYKKyAgICB9OworICAgIHJl
dHVybiBhc1hZWkEobGluZWFyU1JHQlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25l
bnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworfQorCitzdGF0aWMgTGluZWFyRGlzcGxh
eVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7
CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVy
c2lvbi1jb2RlCisgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5elRvTGluZWFyRGlz
cGxheVAzTWF0cml4IHsKKyAgICAgICAgIDIuNDkzNDk2OTExOTQxNDI1ZiwgIC0wLjkzMTM4MzYx
NzkxOTEyMzlmLCAtMC40MDI3MTA3ODQ0NTA3MTY4ZiwKKyAgICAgICAgLTAuODI5NDg4OTY5NTYx
NTc0N2YsICAxLjc2MjY2NDA2MDMxODM0NjNmLCAgMC4wMjM2MjQ2ODU4NDE5NDM2ZiwKKyAgICAg
ICAgIDAuMDM1ODQ1ODMwMjQzNzg0NWYsIC0wLjA3NjE3MjM4OTI2ODA0MThmLCAgMC45NTY4ODQ1
MjQwMDc2ODcyZgorICAgIH07CisgICAgcmV0dXJuIGFzTGluZWFyRGlzcGxheVAzKHh5elRvTGlu
ZWFyRGlzcGxheVAzTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21w
b25lbnRzKGNvbG9yKSkpOworfQorCitzdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVooY29uc3QgTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCisgICAgY29uc3RleHByIENv
bG9yTWF0cml4PDMsIDM+IGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4IHsKKyAgICAgICAgMC40
ODY1NzA5NDg2NDgyMTYyZiwgMC4yNjU2Njc2OTMxNjkwOTMxZiwgMC4xOTgyMTcyODUyMzQzNjNm
LAorICAgICAgICAwLjIyODk3NDU2NDA2OTc0ODhmLCAwLjY5MTczODUyMTgzNjUwNjRmLCAwLjA3
OTI4NjkxNDA5Mzc0NWYsCisgICAgICAgIDAuMGYsICAgICAgICAgICAgICAgIDAuMDQ1MTEzMzgx
ODU4OTAyNmYsIDEuMDQzOTQ0MzY4OTAwOTc2ZgorICAgIH07CisgICAgcmV0dXJuIGFzWFlaQShs
aW5lYXJEaXNwbGF5UDNUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0Nv
bG9yQ29tcG9uZW50cyhjb2xvcikpKTsKK30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3Qg
RGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvU1JHQkEodG9MaW5lYXJT
UkdCQSh0b1hZWih0b0xpbmVhckRpc3BsYXlQMyhjb2xvcikpKSk7Cit9CisKK0Rpc3BsYXlQMzxm
bG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1
cm4gdG9EaXNwbGF5UDModG9MaW5lYXJEaXNwbGF5UDModG9YWVoodG9MaW5lYXJTUkdCQShjb2xv
cikpKSk7Cit9CisKK0hTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9y
KQoreworICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNl
LgorICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGNvbG9yOworCisgICAgYXV0byBbbWluLCBt
YXhdID0gc3RkOjptaW5tYXgoeyByLCBnLCBiIH0pOworICAgIGZsb2F0IGNocm9tYSA9IG1heCAt
IG1pbjsKKworICAgIGZsb2F0IGh1ZTsKKyAgICBpZiAoIWNocm9tYSkKKyAgICAgICAgaHVlID0g
MDsKKyAgICBlbHNlIGlmIChtYXggPT0gcikKKyAgICAgICAgaHVlID0gKDYwLjBmICogKChnIC0g
YikgLyBjaHJvbWEpKSArIDM2MC4wZjsKKyAgICBlbHNlIGlmIChtYXggPT0gZykKKyAgICAgICAg
aHVlID0gKDYwLjBmICogKChiIC0gcikgLyBjaHJvbWEpKSArIDEyMC4wZjsKKyAgICBlbHNlCisg
ICAgICAgIGh1ZSA9ICg2MC4wZiAqICgociAtIGcpIC8gY2hyb21hKSkgKyAyNDAuMGY7CisKKyAg
ICBpZiAoaHVlID49IDM2MC4wZikKKyAgICAgICAgaHVlIC09IDM2MC4wZjsKKworICAgIGh1ZSAv
PSAzNjAuMGY7CisKKyAgICBmbG9hdCBsaWdodG5lc3MgPSAwLjVmICogKG1heCArIG1pbik7Cisg
ICAgZmxvYXQgc2F0dXJhdGlvbjsKKyAgICBpZiAoIWNocm9tYSkKKyAgICAgICAgc2F0dXJhdGlv
biA9IDA7CisgICAgZWxzZSBpZiAobGlnaHRuZXNzIDw9IDAuNWYpCisgICAgICAgIHNhdHVyYXRp
b24gPSAoY2hyb21hIC8gKG1heCArIG1pbikpOworICAgIGVsc2UKKyAgICAgICAgc2F0dXJhdGlv
biA9IChjaHJvbWEgLyAoMi4wZiAtIChtYXggKyBtaW4pKSk7CisKKyAgICByZXR1cm4geworICAg
ICAgICBodWUsCisgICAgICAgIHNhdHVyYXRpb24sCisgICAgICAgIGxpZ2h0bmVzcywKKyAgICAg
ICAgYWxwaGEKKyAgICB9OworfQorCisvLyBIdWUgaXMgaW4gdGhlIHJhbmdlIDAtNiwgb3RoZXIg
YXJncyBpbiAwLTEuCitzdGF0aWMgZmxvYXQgY2FsY0h1ZShmbG9hdCB0ZW1wMSwgZmxvYXQgdGVt
cDIsIGZsb2F0IGh1ZVZhbCkKK3sKKyAgICBpZiAoaHVlVmFsIDwgMC4wZikKKyAgICAgICAgaHVl
VmFsICs9IDYuMGY7CisgICAgZWxzZSBpZiAoaHVlVmFsID49IDYuMGYpCisgICAgICAgIGh1ZVZh
bCAtPSA2LjBmOworICAgIGlmIChodWVWYWwgPCAxLjBmKQorICAgICAgICByZXR1cm4gdGVtcDEg
KyAodGVtcDIgLSB0ZW1wMSkgKiBodWVWYWw7CisgICAgaWYgKGh1ZVZhbCA8IDMuMGYpCisgICAg
ICAgIHJldHVybiB0ZW1wMjsKKyAgICBpZiAoaHVlVmFsIDwgNC4wZikKKyAgICAgICAgcmV0dXJu
IHRlbXAxICsgKHRlbXAyIC0gdGVtcDEpICogKDQuMGYgLSBodWVWYWwpOworICAgIHJldHVybiB0
ZW1wMTsKK30KKworLy8gRXhwbGFuYXRpb24gb2YgdGhpcyBhbGdvcml0aG0gY2FuIGJlIGZvdW5k
IGluIHRoZSBDU1MgQ29sb3IgNCBNb2R1bGUKKy8vIHNwZWNpZmljYXRpb24gYXQgaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci00LyNoc2wtdG8tcmdiIHdpdGgKKy8vIGZ1cnRoZXIg
ZXhwbGFuYXRpb24gYXZhaWxhYmxlIGF0IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNM
X2NvbG9yX3NwYWNlCitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYgY29s
b3IpCit7CisgICAgYXV0byBbaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhXSA9IGNv
bG9yOworCisgICAgLy8gQ29udmVydCBiYWNrIHRvIFJHQi4KKyAgICBpZiAoIXNhdHVyYXRpb24p
IHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGxpZ2h0bmVzcywKKyAgICAgICAgICAg
IGxpZ2h0bmVzcywKKyAgICAgICAgICAgIGxpZ2h0bmVzcywKKyAgICAgICAgICAgIGFscGhhCisg
ICAgICAgIH07CisgICAgfQorICAgIAorICAgIGZsb2F0IHRlbXAyID0gbGlnaHRuZXNzIDw9IDAu
NWYgPyBsaWdodG5lc3MgKiAoMS4wZiArIHNhdHVyYXRpb24pIDogbGlnaHRuZXNzICsgc2F0dXJh
dGlvbiAtIGxpZ2h0bmVzcyAqIHNhdHVyYXRpb247CisgICAgZmxvYXQgdGVtcDEgPSAyLjBmICog
bGlnaHRuZXNzIC0gdGVtcDI7CisgICAgCisgICAgaHVlICo9IDYuMGY7IC8vIGNhbGNIdWUoKSB3
YW50cyBodWUgaW4gdGhlIDAtNiByYW5nZS4KKyAgICByZXR1cm4geworICAgICAgICBjYWxjSHVl
KHRlbXAxLCB0ZW1wMiwgaHVlICsgMi4wZiksCisgICAgICAgIGNhbGNIdWUodGVtcDEsIHRlbXAy
LCBodWUpLAorICAgICAgICBjYWxjSHVlKHRlbXAxLCB0ZW1wMiwgaHVlIC0gMi4wZiksCisgICAg
ICAgIGFscGhhCisgICAgfTsKK30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8
ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICBhdXRvIFtjLCBtLCB5LCBrLCBhXSA9IGNvbG9yOworICAg
IGZsb2F0IGNvbG9ycyA9IDEgLSBrOworICAgIGZsb2F0IHIgPSBjb2xvcnMgKiAoMS4wZiAtIGMp
OworICAgIGZsb2F0IGcgPSBjb2xvcnMgKiAoMS4wZiAtIG0pOworICAgIGZsb2F0IGIgPSBjb2xv
cnMgKiAoMS4wZiAtIHkpOworICAgIHJldHVybiB7IHIsIGcsIGIsIGEgfTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNywgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDTVlLQTsKK3RlbXBsYXRlPHR5cGVu
YW1lPiBzdHJ1Y3QgRGlzcGxheVAzOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIU0xBOwor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMaW5lYXJEaXNwbGF5UDM7Cit0ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IExpbmVhclNSR0JBOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBTUkdC
QTsKKworLy8gVGhlc2UgYXJlIHRoZSBzdGFuZGFyZCBzUkdCIDwtPiBMaW5lYXJSR0IgLyBEaXNw
bGF5UDMgPC0+IExpbmVhckRpc3BsYXlQMyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAoaHR0cHM6Ly9l
bi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQikuCitmbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9u
ZW50KGZsb2F0KTsKK2Zsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoZmxvYXQpOworCitM
aW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKK1NS
R0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOworCitMaW5lYXJE
aXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4m
KTsKK0Rpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWFyRGlzcGxheVAzPGZs
b2F0PiYpOworCitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7
CitEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworCitX
RUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CitX
RUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYpOwor
CitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjYzNzU4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiwxMjUgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29s
b3JVdGlsaXRpZXMuaCIKIAotI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgotI2luY2x1ZGUg
IkNvbG9yTWF0cml4LmgiCisjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAi
Q29sb3JUeXBlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFRoZXNlIGFyZSB0aGUg
c3RhbmRhcmQgc1JHQiA8LT4gbGluZWFyUkdCIC8gc3RhbmRhcmQgRGlzcGxheVAzIDwtPiBMaW5l
YXJEaXNwbGF5UDMgY29udmVyc2lvbiBmdW5jdGlvbnMgKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL1NSR0IpLgotZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCBjKQot
ewotICAgIGlmIChjIDwgMC4wMDMxMzA4ZikKLSAgICAgICAgcmV0dXJuIDEyLjkyZiAqIGM7Ci0K
LSAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oMS4wNTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIu
NGYpIC0gMC4wNTVmLCAwLCAxKTsKLX0KLQotZmxvYXQgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVu
dChmbG9hdCBjKQotewotICAgIGlmIChjIDw9IDAuMDQwNDVmKQotICAgICAgICByZXR1cm4gYyAv
IDEyLjkyZjsKLQotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6OnBvdygoYyArIDAuMDU1
ZikgLyAxLjA1NWYsIDIuNGYpLCAwLCAxKTsKLX0KLQotTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGlu
ZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICByZXR1cm4gewotICAg
ICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGNvbG9yLnJlZCksCi0gICAgICAgIHJnYlRv
TGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IuZ3JlZW4pLAotICAgICAgICByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50KGNvbG9yLmJsdWUpLAotICAgICAgICBjb2xvci5hbHBoYQotICAgIH07Ci19
Ci0KLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3Ip
Ci17Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChjb2xv
ci5yZWQpLAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9yLmdyZWVuKSwK
LSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChjb2xvci5ibHVlKSwKLSAgICAgICAg
Y29sb3IuYWxwaGEKLSAgICB9OwotfQotCi1MaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFy
RGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewotICAgIHJldHVybiB7
Ci0gICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IucmVkKSwKLSAgICAgICAg
cmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChjb2xvci5ncmVlbiksCi0gICAgICAgIHJnYlRvTGlu
ZWFyQ29sb3JDb21wb25lbnQoY29sb3IuYmx1ZSksCi0gICAgICAgIGNvbG9yLmFscGhhCi0gICAg
fTsKLX0KLQotRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5
UDM8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICByZXR1cm4gewotICAgICAgICBsaW5lYXJUb1JHQkNv
bG9yQ29tcG9uZW50KGNvbG9yLnJlZCksCi0gICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25l
bnQoY29sb3IuZ3JlZW4pLAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9y
LmJsdWUpLAotICAgICAgICBjb2xvci5hbHBoYQotICAgIH07Ci19Ci0KLXN0YXRpYyBMaW5lYXJT
UkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCi17Ci0g
ICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQgotICAgIC8vIGh0dHA6Ly93
d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwK
LSAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6VG9MaW5lYXJTUkdCTWF0cml4IHsK
LSAgICAgICAgIDMuMjQwNDU0MmYsIC0xLjUzNzEzODVmLCAtMC40OTg1MzE0ZiwKLSAgICAgICAg
LTAuOTY5MjY2MGYsICAxLjg3NjAxMDhmLCAgMC4wNDE1NTYwZiwKLSAgICAgICAgIDAuMDU1NjQz
NGYsIC0wLjIwNDAyNTlmLCAgMS4wNTcyMjUyZgotICAgIH07Ci0gICAgcmV0dXJuIGFzTGluZWFy
U1JHQkEoeHl6VG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFz
Q29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwotfQotCi1zdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVoo
Y29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICAvLyBodHRwczovL2VuLndp
a2lwZWRpYS5vcmcvd2lraS9TUkdCCi0gICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5j
b20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbAotICAgIGNvbnN0ZXhwciBDb2xv
ck1hdHJpeDwzLCAzPiBsaW5lYXJTUkdCVG9YWVpNYXRyaXggewotICAgICAgICAwLjQxMjQ1NjRm
LCAgMC4zNTc1NzYxZiwgIDAuMTgwNDM3NWYsCi0gICAgICAgIDAuMjEyNjcyOWYsICAwLjcxNTE1
MjJmLCAgMC4wNzIxNzUwZiwKLSAgICAgICAgMC4wMTkzMzM5ZiwgIDAuMTE5MTkyMGYsICAwLjk1
MDMwNDFmCi0gICAgfTsKLSAgICByZXR1cm4gYXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50
cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKLX0K
LQotc3RhdGljIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3Qg
WFlaQTxmbG9hdD4mIGNvbG9yKQotewotICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9j
c3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQotICAgIGNvbnN0ZXhwciBDb2xvck1hdHJp
eDwzLCAzPiB4eXpUb0xpbmVhckRpc3BsYXlQM01hdHJpeCB7Ci0gICAgICAgICAyLjQ5MzQ5Njkx
MTk0MTQyNWYsICAtMC45MzEzODM2MTc5MTkxMjM5ZiwgLTAuNDAyNzEwNzg0NDUwNzE2OGYsCi0g
ICAgICAgIC0wLjgyOTQ4ODk2OTU2MTU3NDdmLCAgMS43NjI2NjQwNjAzMTgzNDYzZiwgIDAuMDIz
NjI0Njg1ODQxOTQzNmYsCi0gICAgICAgICAwLjAzNTg0NTgzMDI0Mzc4NDVmLCAtMC4wNzYxNzIz
ODkyNjgwNDE4ZiwgIDAuOTU2ODg0NTI0MDA3Njg3MmYKLSAgICB9OwotICAgIHJldHVybiBhc0xp
bmVhckRpc3BsYXlQMyh4eXpUb0xpbmVhckRpc3BsYXlQM01hdHJpeC50cmFuc2Zvcm1lZENvbG9y
Q29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKLX0KLQotc3RhdGljIFhZWkE8
ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewotICAg
IC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24t
Y29kZQotICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBsaW5lYXJEaXNwbGF5UDNUb1hZ
Wk1hdHJpeCB7Ci0gICAgICAgIDAuNDg2NTcwOTQ4NjQ4MjE2MmYsIDAuMjY1NjY3NjkzMTY5MDkz
MWYsIDAuMTk4MjE3Mjg1MjM0MzYzZiwKLSAgICAgICAgMC4yMjg5NzQ1NjQwNjk3NDg4ZiwgMC42
OTE3Mzg1MjE4MzY1MDY0ZiwgMC4wNzkyODY5MTQwOTM3NDVmLAotICAgICAgICAwLjBmLCAgICAg
ICAgICAgICAgICAwLjA0NTExMzM4MTg1ODkwMjZmLCAxLjA0Mzk0NDM2ODkwMDk3NmYKLSAgICB9
OwotICAgIHJldHVybiBhc1hZWkEobGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXgudHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7Ci19Ci0KLVNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewotICAgIHJl
dHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEodG9YWVoodG9MaW5lYXJEaXNwbGF5UDMoY29sb3Ip
KSkpOwotfQotCi1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0
PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKHRv
WFlaKHRvTGluZWFyU1JHQkEoY29sb3IpKSkpOwotfQotCiBmbG9hdCBsaWdodG5lc3MoY29uc3Qg
U1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbG9yOwpA
QCAtMTc0LDExMCArNjAsMTAgQEAgZmxvYXQgY29udHJhc3RSYXRpbyhjb25zdCBTUkdCQTxmbG9h
dD4mIAogICAgIHJldHVybiAobGlnaHRlckx1bWluYW5jZSArIDAuMDUpIC8gKGRhcmtlckx1bWlu
YW5jZSArIDAuMDUpOwogfQogCi1IU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+
JiBjb2xvcikKLXsKLSAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xv
cl9zcGFjZS4KLSAgICBhdXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBjb2xvcjsKLQotICAgIGF1dG8g
W21pbiwgbWF4XSA9IHN0ZDo6bWlubWF4KHsgciwgZywgYiB9KTsKLSAgICBmbG9hdCBjaHJvbWEg
PSBtYXggLSBtaW47Ci0KLSAgICBmbG9hdCBodWU7Ci0gICAgaWYgKCFjaHJvbWEpCi0gICAgICAg
IGh1ZSA9IDA7Ci0gICAgZWxzZSBpZiAobWF4ID09IHIpCi0gICAgICAgIGh1ZSA9ICg2MC4wZiAq
ICgoZyAtIGIpIC8gY2hyb21hKSkgKyAzNjAuMGY7Ci0gICAgZWxzZSBpZiAobWF4ID09IGcpCi0g
ICAgICAgIGh1ZSA9ICg2MC4wZiAqICgoYiAtIHIpIC8gY2hyb21hKSkgKyAxMjAuMGY7Ci0gICAg
ZWxzZQotICAgICAgICBodWUgPSAoNjAuMGYgKiAoKHIgLSBnKSAvIGNocm9tYSkpICsgMjQwLjBm
OwotCi0gICAgaWYgKGh1ZSA+PSAzNjAuMGYpCi0gICAgICAgIGh1ZSAtPSAzNjAuMGY7Ci0KLSAg
ICBodWUgLz0gMzYwLjBmOwotCi0gICAgZmxvYXQgbGlnaHRuZXNzID0gMC41ZiAqIChtYXggKyBt
aW4pOwotICAgIGZsb2F0IHNhdHVyYXRpb247Ci0gICAgaWYgKCFjaHJvbWEpCi0gICAgICAgIHNh
dHVyYXRpb24gPSAwOwotICAgIGVsc2UgaWYgKGxpZ2h0bmVzcyA8PSAwLjVmKQotICAgICAgICBz
YXR1cmF0aW9uID0gKGNocm9tYSAvIChtYXggKyBtaW4pKTsKLSAgICBlbHNlCi0gICAgICAgIHNh
dHVyYXRpb24gPSAoY2hyb21hIC8gKDIuMGYgLSAobWF4ICsgbWluKSkpOwotCi0gICAgcmV0dXJu
IHsKLSAgICAgICAgaHVlLAotICAgICAgICBzYXR1cmF0aW9uLAotICAgICAgICBsaWdodG5lc3Ms
Ci0gICAgICAgIGFscGhhCi0gICAgfTsKLX0KLQotLy8gSHVlIGlzIGluIHRoZSByYW5nZSAwLTYs
IG90aGVyIGFyZ3MgaW4gMC0xLgotc3RhdGljIGZsb2F0IGNhbGNIdWUoZmxvYXQgdGVtcDEsIGZs
b2F0IHRlbXAyLCBmbG9hdCBodWVWYWwpCi17Ci0gICAgaWYgKGh1ZVZhbCA8IDAuMGYpCi0gICAg
ICAgIGh1ZVZhbCArPSA2LjBmOwotICAgIGVsc2UgaWYgKGh1ZVZhbCA+PSA2LjBmKQotICAgICAg
ICBodWVWYWwgLT0gNi4wZjsKLSAgICBpZiAoaHVlVmFsIDwgMS4wZikKLSAgICAgICAgcmV0dXJu
IHRlbXAxICsgKHRlbXAyIC0gdGVtcDEpICogaHVlVmFsOwotICAgIGlmIChodWVWYWwgPCAzLjBm
KQotICAgICAgICByZXR1cm4gdGVtcDI7Ci0gICAgaWYgKGh1ZVZhbCA8IDQuMGYpCi0gICAgICAg
IHJldHVybiB0ZW1wMSArICh0ZW1wMiAtIHRlbXAxKSAqICg0LjBmIC0gaHVlVmFsKTsKLSAgICBy
ZXR1cm4gdGVtcDE7Ci19Ci0KLS8vIEV4cGxhbmF0aW9uIG9mIHRoaXMgYWxnb3JpdGhtIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgQ1NTIENvbG9yIDQgTW9kdWxlCi0vLyBzcGVjaWZpY2F0aW9uIGF0IGh0
dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3ItNC8jaHNsLXRvLXJnYiB3aXRoCi0vLyBm
dXJ0aGVyIGV4cGxhbmF0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93
aWtpL0hTTF9jb2xvcl9zcGFjZQotU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgSFNMQTxmbG9h
dD4mIGNvbG9yKQotewotICAgIGF1dG8gW2h1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBo
YV0gPSBjb2xvcjsKLQotICAgIC8vIENvbnZlcnQgYmFjayB0byBSR0IuCi0gICAgaWYgKCFzYXR1
cmF0aW9uKSB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBsaWdodG5lc3MsCi0gICAg
ICAgICAgICBsaWdodG5lc3MsCi0gICAgICAgICAgICBsaWdodG5lc3MsCi0gICAgICAgICAgICBh
bHBoYQotICAgICAgICB9OwotICAgIH0KLSAgICAKLSAgICBmbG9hdCB0ZW1wMiA9IGxpZ2h0bmVz
cyA8PSAwLjVmID8gbGlnaHRuZXNzICogKDEuMGYgKyBzYXR1cmF0aW9uKSA6IGxpZ2h0bmVzcyAr
IHNhdHVyYXRpb24gLSBsaWdodG5lc3MgKiBzYXR1cmF0aW9uOwotICAgIGZsb2F0IHRlbXAxID0g
Mi4wZiAqIGxpZ2h0bmVzcyAtIHRlbXAyOwotICAgIAotICAgIGh1ZSAqPSA2LjBmOyAvLyBjYWxj
SHVlKCkgd2FudHMgaHVlIGluIHRoZSAwLTYgcmFuZ2UuCi0gICAgcmV0dXJuIHsKLSAgICAgICAg
Y2FsY0h1ZSh0ZW1wMSwgdGVtcDIsIGh1ZSArIDIuMGYpLAotICAgICAgICBjYWxjSHVlKHRlbXAx
LCB0ZW1wMiwgaHVlKSwKLSAgICAgICAgY2FsY0h1ZSh0ZW1wMSwgdGVtcDIsIGh1ZSAtIDIuMGYp
LAotICAgICAgICBhbHBoYQotICAgIH07Ci19Ci0KLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0
IENNWUtBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgYXV0byBbYywgbSwgeSwgaywgYV0gPSBjb2xv
cjsKLSAgICBmbG9hdCBjb2xvcnMgPSAxIC0gazsKLSAgICBmbG9hdCByID0gY29sb3JzICogKDEu
MGYgLSBjKTsKLSAgICBmbG9hdCBnID0gY29sb3JzICogKDEuMGYgLSBtKTsKLSAgICBmbG9hdCBi
ID0gY29sb3JzICogKDEuMGYgLSB5KTsKLSAgICByZXR1cm4geyByLCBnLCBiLCBhIH07Ci19Ci0K
IFNSR0JBPGZsb2F0PiBwcmVtdWx0aXBsaWVkKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCiB7
CiAgICAgYXV0byBbciwgZywgYiwgYV0gPSBjb2xvcjsKLSAgICByZXR1cm4gewotICAgICAgICBy
ICogYSwKLSAgICAgICAgZyAqIGEsCi0gICAgICAgIGIgKiBhLAotICAgICAgICBhCi0gICAgfTsK
KyAgICByZXR1cm4geyByICogYSwgZyAqIGEsIGIgKiBhLCBhIH07CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JVdGlsaXRpZXMuaAkocmV2aXNpb24gMjYzNzU4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAs
MzIgKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IENNWUtBOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEaXNwbGF5UDM7Ci10ZW1w
bGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhTTEE7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExp
bmVhckRpc3BsYXlQMzsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyU1JHQkE7CiB0
ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFNSR0JBOwogCi0vLyAwLTEgY29tcG9uZW50cywgcmVz
dWx0IGlzIGNsYW1wZWQuCi1mbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0KTsK
LWZsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoZmxvYXQpOwotCi1MaW5lYXJTUkdCQTxm
bG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKLVNSR0JBPGZsb2F0PiB0
b1NSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotCi1MaW5lYXJEaXNwbGF5UDM8Zmxv
YXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKLURpc3BsYXlQ
MzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYpOwotCi1T
UkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7Ci1EaXNwbGF5UDM8
ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotCi1XRUJDT1JFX0VYUE9S
VCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9S
VCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYpOwotCi1TUkdCQTxmbG9h
dD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mKTsKLQotCiBmbG9hdCBsaWdodG5lc3MoY29u
c3QgU1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBsdW1pbmFuY2UoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7
CiBmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IFNSR0JBPGZsb2F0PiYsIGNvbnN0IFNSR0JBPGZs
b2F0PiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRD
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RXh0ZW5kZWRDb2xvci5jcHAJKHJldmlzaW9uIDI2Mzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4
ICsyNyw4IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRDb2xvci5oIgogCiAjaW5jbHVkZSAiQ29sb3Iu
aCIKKyNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNsdWRlICJDb2xvclR5cGVzLmgi
Ci0jaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZU51bWJlcnMuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAJKHJldmlzaW9uIDI2Mzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsNyBAQAogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiQ2Fpcm9PcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5o
IgorI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAkocmV2aXNpb24gMjYzNzU4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkJpdG1h
cEltYWdlLmgiCiAjaW5jbHVkZSAiQ2Fpcm9PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiQ29sb3Iu
aCIKLSNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAu
Y3BwCShyZXZpc2lvbiAyNjM3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyAr
MjQsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZFRGlzcGxhY2VtZW50TWFw
LmgiCiAKLSNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTGlnaHRpbmcuY3BwCShyZXZpc2lvbiAyNjM3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRkVMaWdodGluZy5o
IgogCi0jaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJDb2xvckNvbnZlcnNp
b24uaCIKICNpbmNsdWRlICJGRUxpZ2h0aW5nTkVPTi5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9QYXJhbGxlbEpvYnMuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAJ
KHJldmlzaW9uIDI2Mzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVNb3JwaG9sb2d5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAog
I2luY2x1ZGUgIkZFTW9ycGhvbG9neS5oIgogCiAjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgi
Ci0jaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNs
dWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyNjM3NTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDggKzI5LDkgQEAKICNpbmNsdWRlICJBbmltYXRpb25VdGlsaXRpZXMuaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW5jbHVk
ZSAiQ29sb3JNYXRyaXguaCIKLSNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgorI2luY2x1ZGUg
IkNvbG9yVHlwZXMuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJTVkdV
UklSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI2Mzc1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAKLSNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ikxlbmd0aEZ1bmN0aW9ucy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0NvbG9yR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3BwCShyZXZpc2lvbiAyNjM3NTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSwxOSArMjEsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb2xv
ci5oIgogCi0jaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxnZGsvZ2RrLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ29sb3I6OkNvbG9yKGNvbnN0IEdka1JHQkEmIGMp
CitDb2xvcjo6Q29sb3IoY29uc3QgR2RrUkdCQSYgY29sb3IpCiB7Ci0gICAgc2V0U2ltcGxlQ29s
b3IobWFrZVNpbXBsZUNvbG9yKAotICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGMucmVkICogMjU1
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihjLmdyZWVuICogMjU1KSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8aW50PihjLmJsdWUgKiAyNTUpLAotICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGMu
YWxwaGEgKiAyNTUpCi0gICAgKSk7CisgICAgc2V0U2ltcGxlQ29sb3IobWFrZVNpbXBsZUNvbG9y
KFNSR0JBIHsgY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZSwgY29sb3IuYWxwaGEg
fSkpOwogfQogCiBDb2xvcjo6b3BlcmF0b3IgR2RrUkdCQSgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQu
Y3BwCShyZXZpc2lvbiAyNjM3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vQ29sb3JEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAK
IAogI2lmIFBMQVRGT1JNKFdJTikKIAotI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSA8ZDJkMS5oPgogI2luY2x1ZGUgPGQyZDFfMWhlbHBlci5oPgogCkBAIC0zNiw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ29sb3I6OkNvbG9yKEQyRDFfQ09MT1JfRiBjb2xv
cikKIHsKLSAgICBzZXRTaW1wbGVDb2xvcihtYWtlU2ltcGxlQ29sb3IoY29sb3IuciAqIDI1NSwg
Y29sb3IuZyAqIDI1NSwgY29sb3IuYiAqIDI1NSwgY29sb3IuYSAqIDI1NSkpOworICAgIHNldFNp
bXBsZUNvbG9yKG1ha2VTaW1wbGVDb2xvcihTUkdCQSB7IGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9y
LmIsIGNvbG9yLmEgfSkpOwogfQogCiBDb2xvcjo6b3BlcmF0b3IgRDJEMV9DT0xPUl9GKCkgY29u
c3QKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI2Mzc2MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDIwLTA2LTMwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
KworICAgICAgICBTcGxpdCBjb2xvciBjb252ZXJzaW9uIGZ1bmN0aW9ucyBvdXQgb2YgQ29sb3JV
dGlsaXRpZXMuaC9jcHAgaW50byB0aGVpciBvd24gZmlsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzgwMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NvbG9yVGVzdHMuY3BwOgorICAgICAgICBVcGRhdGUgdG8gaW5jbHVkZSBDb2xvckNvbnZlcnNp
b24uaCBhbmQgQ29sb3JUeXBlcy5oIHJhdGhlciB0aGFuIENvbG9yVXRpbGl0aWVzLmgKKwogMjAy
MC0wNi0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJlbW92ZSBXVEY6Ok1ENQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbG9yVGVzdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcAkocmV2aXNpb24gMjYzNzU4KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9yVGVzdHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw4IEBACiAKICNpbmNsdWRlICJUZXN0LmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db2xvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JVdGlsaXRpZXMuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0NvbG9yQ29udmVyc2lvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JUeXBl
cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403237</attachid>
            <date>2020-06-30 13:27:30 -0700</date>
            <delta_ts>2020-07-03 08:05:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213803-20200630132729.patch</filename>
            <type>text/plain</type>
            <size>35455</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzc2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTA2LTMwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBjb2xvciBjb252ZXJzaW9u
IGZ1bmN0aW9ucyBvdXQgb2YgQ29sb3JVdGlsaXRpZXMuaC9jcHAgaW50byB0aGVpciBvd24gZmls
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzgw
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVz
IGNvbG9yIGNvbnZlcnNpb24gZnVuY3Rpb25zIChib3RoIGJldHdlZW4gY29sb3Igc3BhY2VzIGxp
a2UgdG9EaXNwbGF5UDMoY29uc3QgU1JHQkEmKQorICAgICAgICBhbmQgYmV0d2VlbiBkaWZmZXJl
bnQgcmVwcmVzZW50YXRpb25zIGxpa2UgdG9IU0xBKGNvbnN0IFNSR0JBJikpIHRvIHRoZWlyIG93
biBmaWxlcy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuY3BwOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHA6CisgICAgICAgIEFkZCBpbmNs
dWRlIG9mIENvbG9yQ29udmVyc2lvbi5oCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9D
b2xvckNvbnZlcnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9D
b2xvckNvbnZlcnNpb24uaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0
aWVzLmg6CisgICAgICAgIE1vdmUgZnVuY3Rpb25zIHRvIHRoZSBuZXcgZmlsZXMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcDoKKyAgICAgICAgQWRk
IGluY2x1ZGUgb2YgQ29sb3JDb252ZXJzaW9uLmgsIHJlbW92ZSB1bm5jZXNzYXJ5IGluY2x1ZGUg
b2YgQ29sb3JVdGlsaXRpZXMuaAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgUmVtb3ZlIHVu
bmNlc3NhcnkgaW5jbHVkZSBvZiBDb2xvclV0aWxpdGllcy5oCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAgICAgIEFkZCBpbmNs
dWRlIG9mIENvbG9yQ29udmVyc2lvbi5oIGFuZCBDb2xvclR5cGVzLmgsIHJlbW92ZSB1bm5jZXNz
YXJ5IGluY2x1ZGUgb2YgQ29sb3JVdGlsaXRpZXMuaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2d0ay9Db2xvckd0ay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0NvbG9yRGlyZWN0MkQuY3BwOgorICAgICAgICBSZW1vdmUgdW5uY2Vzc2FyeSBpbmNsdWRlIG9m
IENvbG9yVXRpbGl0aWVzLmguIFVwZGF0ZSB0byB1c2Ugc3RhbmRhcmQgZmxvYXQgLT4gU2ltcGxl
Q29sb3IgaWRpb20KKyAgICAgICAgdXNpbmcgU1JHQkE8ZmxvYXQ+LgorCiAyMDIwLTA2LTMwICBQ
ZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgU2NydW5jaGluZyBhIHZp
ZGVvIHRvIFBpUCBjYW4gcmVzdWx0IGluIGJyb2tlbiBhbmltYXRpb24gYW5kIGxlYXZlIFNhZmFy
aSBpbiBhIGJhZCBzdGF0ZQpJbmRleDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAyNjM3NTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgz
LDYgKzEwODMsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JIYXNoLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjYz
NzU4KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
MDcsNiArMTkwNyw3IEBAIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAorcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRp
ZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDI2Mzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM0NCw2ICsyMzQ0LDcgQEAKIAkJN0NDRUJGQzAxREQ4
RjZBQjAwMkM0MEI4IC8qIFNWR0xlbmd0aFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U1OEQ1MzFERDdCMDkzMDAxMjg1NTIgLyogU1ZHTGVu
Z3RoVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0QwRTJCNTFGODBBNDgy
MDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggKi87IH07CiAJCTdDRDBFMkJGMUY4MEE1NkUw
MDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0NEMEUyQkMxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmgg
Ki87IH07CisJCTdDRDFFNjg0MjRBQjlDQzcwMDg5QzQxOSAvKiBDb2xvckNvbnZlcnNpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRDFFNjgzMjRB
QjlDQzIwMDg5QzQxOSAvKiBDb2xvckNvbnZlcnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0Q0OTRDRDFBODZFQjFEMDAwQTg3RUMgLyog
UmVuZGVyQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NENDk0Q0IxQTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0Q1OERG
QjFGOTU2NUE1MDAxMTI3OTEgLyogU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRUI1N0U5MUY5NTY1MTUwMDA5N0FFQyAvKiBTZXR0aW5n
cy5oICovOyB9OwogCQk3Q0Q1OERGRDFGOTU2NUE4MDAxMTI3OTEgLyogU2V0dGluZ3MuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFQjU3RUExRjk1
NjUxNTAwMDk3QUVDIC8qIFNldHRpbmdzLmNwcCAqLzsgfTsKQEAgLTEwMTkxLDYgKzEwMTkyLDgg
QEAKIAkJN0NEMEUyQkMxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFib3J0U2lnbmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRDBF
MkJEMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBYm9ydFNpZ25hbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRDBFMkJF
MUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWJvcnRTaWduYWwuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0QxRTY4MTI0QUI5Q0MyMDA4OUM0MTkg
LyogQ29sb3JDb252ZXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yQ29udmVyc2lv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDRDFFNjgzMjRBQjlDQzIwMDg5
QzQxOSAvKiBDb2xvckNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDb252ZXJzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRDM0NDBEMUYzMTA4MzYwMDBEQ0Q0
OSAvKiBNdXRhdGlvbkNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNdXRhdGlv
bkNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NEMzQ0MTExRjMx
MDhERDAwMERDRDQ5IC8qIEpTTXV0YXRpb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU011
dGF0aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NEMzQ0MTIx
RjMxMDhFMjAwMERDRDQ5IC8qIEpTTXV0YXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU011dGF0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjU0OTQsNiArMjU0OTcsOCBAQAogCQkJCUIyNzUzNTM4MEIwNTM4MTQwMDJDRTY0RiAvKiBD
b2xvci5jcHAgKi8sCiAJCQkJQjI3NTM1MzkwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmggKi8s
CiAJCQkJN0NBQzZBRUMyNDdGMUM1MTAwRTYxRDU5IC8qIENvbG9yQ29tcG9uZW50cy5oICovLAor
CQkJCTdDRDFFNjgxMjRBQjlDQzIwMDg5QzQxOSAvKiBDb2xvckNvbnZlcnNpb24uY3BwICovLAor
CQkJCTdDRDFFNjgzMjRBQjlDQzIwMDg5QzQxOSAvKiBDb2xvckNvbnZlcnNpb24uaCAqLywKIAkJ
CQkzMTAzQjdERTFEQjAxNTU2MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggKi8sCiAJCQkJN0NBQzZB
RTgyNDdGMDgyMDAwRTYxRDU5IC8qIENvbG9yTWF0cml4LmggKi8sCiAJCQkJOTM4MkRGNTcxMEE4
RDVDOTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCAqLywKQEAgLTMwMDY5LDYgKzMwMDc0LDcgQEAK
IAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNDhEMkFBNTIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRjAyNDdGNDExMDAwRTYxRDU5IC8qIENvbG9yQ29t
cG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0NEMUU2ODQyNEFCOUNDNzAwODlDNDE5IC8q
IENvbG9yQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwM0I3REYxREIwMTU2NzAw
OEJCODkwIC8qIENvbG9ySGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjQxMjUxRjEy
RDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTUxNjlF
NzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmNwcAkocmV2aXNpb24gMjYzNzU4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiQ1NTUGFpbnRJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2Vy
SWRpb21zLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCisjaW5jbHVkZSAiQ29sb3JDb252
ZXJzaW9uLmgiCiAjaW5jbHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTdHlsZUNvbG9yLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCShyZXZpc2lvbiAyNjM3NTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiQXR0ci5oIgogI2ltcG9ydCAiQ1NTU3R5
bGVEZWNsYXJhdGlvbi5oIgorI2ltcG9ydCAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJF
ZGl0aW5nLmgiCiAjaW1wb3J0ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgogI2ltcG9ydCAi
RWxlbWVudFRyYXZlcnNhbC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHJldmlzaW9u
IDI2Mzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgogI2luY2x1ZGUg
IkNhbnZhc1BhdHRlcm4uaCIKKyNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNsdWRl
ICJET01NYXRyaXguaCIKICNpbmNsdWRlICJET01NYXRyaXgyREluaXQuaCIKICNpbmNsdWRlICJE
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwCShyZXZpc2lvbiAyNjM3NTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ2FudmFzR3Jh
ZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCisjaW5jbHVkZSAiQ29sb3JDb252
ZXJzaW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTENh
bnZhc0VsZW1lbnQuaCIKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3LCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCisK
KyNpbmNsdWRlICJDb2xvckNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJDb2xvck1hdHJpeC5oIgor
I2luY2x1ZGUgIkNvbG9yVHlwZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitmbG9hdCBs
aW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCit7CisgICAgaWYgKGMgPCAwLjAwMzEz
MDhmKQorICAgICAgICByZXR1cm4gMTIuOTJmICogYzsKKworICAgIHJldHVybiBjbGFtcFRvPGZs
b2F0PigxLjA1NWYgKiBzdGQ6OnBvdyhjLCAxLjBmIC8gMi40ZikgLSAwLjA1NWYsIDAsIDEpOwor
fQorCitmbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCit7CisgICAgaWYg
KGMgPD0gMC4wNDA0NWYpCisgICAgICAgIHJldHVybiBjIC8gMTIuOTJmOworCisgICAgcmV0dXJu
IGNsYW1wVG88ZmxvYXQ+KHN0ZDo6cG93KChjICsgMC4wNTVmKSAvIDEuMDU1ZiwgMi40ZiksIDAs
IDEpOworfQorCitMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBTUkdCQTxm
bG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB7CisgICAgICAgIHJnYlRvTGluZWFyQ29sb3JD
b21wb25lbnQoY29sb3IucmVkKSwKKyAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChj
b2xvci5ncmVlbiksCisgICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IuYmx1
ZSksCisgICAgICAgIGNvbG9yLmFscGhhCisgICAgfTsKK30KKworU1JHQkE8ZmxvYXQ+IHRvU1JH
QkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4geworICAg
ICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9yLnJlZCksCisgICAgICAgIGxpbmVh
clRvUkdCQ29sb3JDb21wb25lbnQoY29sb3IuZ3JlZW4pLAorICAgICAgICBsaW5lYXJUb1JHQkNv
bG9yQ29tcG9uZW50KGNvbG9yLmJsdWUpLAorICAgICAgICBjb2xvci5hbHBoYQorICAgIH07Cit9
CisKK0xpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgRGlzcGxh
eVAzPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgcmdiVG9MaW5lYXJD
b2xvckNvbXBvbmVudChjb2xvci5yZWQpLAorICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9u
ZW50KGNvbG9yLmdyZWVuKSwKKyAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChjb2xv
ci5ibHVlKSwKKyAgICAgICAgY29sb3IuYWxwaGEKKyAgICB9OworfQorCitEaXNwbGF5UDM8Zmxv
YXQ+IHRvRGlzcGxheVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQorewor
ICAgIHJldHVybiB7CisgICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQoY29sb3IucmVk
KSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChjb2xvci5ncmVlbiksCisgICAg
ICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQoY29sb3IuYmx1ZSksCisgICAgICAgIGNvbG9y
LmFscGhhCisgICAgfTsKK30KKworc3RhdGljIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNS
R0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICAvLyBodHRwczovL2VuLndpa2lw
ZWRpYS5vcmcvd2lraS9TUkdCCisgICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20v
aW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbAorICAgIGNvbnN0ZXhwciBDb2xvck1h
dHJpeDwzLCAzPiB4eXpUb0xpbmVhclNSR0JNYXRyaXggeworICAgICAgICAgMy4yNDA0NTQyZiwg
LTEuNTM3MTM4NWYsIC0wLjQ5ODUzMTRmLAorICAgICAgICAtMC45NjkyNjYwZiwgIDEuODc2MDEw
OGYsICAwLjA0MTU1NjBmLAorICAgICAgICAgMC4wNTU2NDM0ZiwgLTAuMjA0MDI1OWYsICAxLjA1
NzIyNTJmCisgICAgfTsKKyAgICByZXR1cm4gYXNMaW5lYXJTUkdCQSh4eXpUb0xpbmVhclNSR0JN
YXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3Ip
KSk7Cit9CisKK3N0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBMaW5lYXJTUkdCQTxmbG9h
dD4mIGNvbG9yKQoreworICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IK
KyAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0Jf
WFlaX01hdHJpeC5odG1sCisgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhclNS
R0JUb1hZWk1hdHJpeCB7CisgICAgICAgIDAuNDEyNDU2NGYsICAwLjM1NzU3NjFmLCAgMC4xODA0
Mzc1ZiwKKyAgICAgICAgMC4yMTI2NzI5ZiwgIDAuNzE1MTUyMmYsICAwLjA3MjE3NTBmLAorICAg
ICAgICAwLjAxOTMzMzlmLCAgMC4xMTkxOTIwZiwgIDAuOTUwMzA0MWYKKyAgICB9OworICAgIHJl
dHVybiBhc1hZWkEobGluZWFyU1JHQlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25l
bnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworfQorCitzdGF0aWMgTGluZWFyRGlzcGxh
eVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7
CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVy
c2lvbi1jb2RlCisgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5elRvTGluZWFyRGlz
cGxheVAzTWF0cml4IHsKKyAgICAgICAgIDIuNDkzNDk2OTExOTQxNDI1ZiwgIC0wLjkzMTM4MzYx
NzkxOTEyMzlmLCAtMC40MDI3MTA3ODQ0NTA3MTY4ZiwKKyAgICAgICAgLTAuODI5NDg4OTY5NTYx
NTc0N2YsICAxLjc2MjY2NDA2MDMxODM0NjNmLCAgMC4wMjM2MjQ2ODU4NDE5NDM2ZiwKKyAgICAg
ICAgIDAuMDM1ODQ1ODMwMjQzNzg0NWYsIC0wLjA3NjE3MjM4OTI2ODA0MThmLCAgMC45NTY4ODQ1
MjQwMDc2ODcyZgorICAgIH07CisgICAgcmV0dXJuIGFzTGluZWFyRGlzcGxheVAzKHh5elRvTGlu
ZWFyRGlzcGxheVAzTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21w
b25lbnRzKGNvbG9yKSkpOworfQorCitzdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVooY29uc3QgTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCisgICAgY29uc3RleHByIENv
bG9yTWF0cml4PDMsIDM+IGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4IHsKKyAgICAgICAgMC40
ODY1NzA5NDg2NDgyMTYyZiwgMC4yNjU2Njc2OTMxNjkwOTMxZiwgMC4xOTgyMTcyODUyMzQzNjNm
LAorICAgICAgICAwLjIyODk3NDU2NDA2OTc0ODhmLCAwLjY5MTczODUyMTgzNjUwNjRmLCAwLjA3
OTI4NjkxNDA5Mzc0NWYsCisgICAgICAgIDAuMGYsICAgICAgICAgICAgICAgIDAuMDQ1MTEzMzgx
ODU4OTAyNmYsIDEuMDQzOTQ0MzY4OTAwOTc2ZgorICAgIH07CisgICAgcmV0dXJuIGFzWFlaQShs
aW5lYXJEaXNwbGF5UDNUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0Nv
bG9yQ29tcG9uZW50cyhjb2xvcikpKTsKK30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3Qg
RGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvU1JHQkEodG9MaW5lYXJT
UkdCQSh0b1hZWih0b0xpbmVhckRpc3BsYXlQMyhjb2xvcikpKSk7Cit9CisKK0Rpc3BsYXlQMzxm
bG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1
cm4gdG9EaXNwbGF5UDModG9MaW5lYXJEaXNwbGF5UDModG9YWVoodG9MaW5lYXJTUkdCQShjb2xv
cikpKSk7Cit9CisKK0hTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9y
KQoreworICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNl
LgorICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGNvbG9yOworCisgICAgYXV0byBbbWluLCBt
YXhdID0gc3RkOjptaW5tYXgoeyByLCBnLCBiIH0pOworICAgIGZsb2F0IGNocm9tYSA9IG1heCAt
IG1pbjsKKworICAgIGZsb2F0IGh1ZTsKKyAgICBpZiAoIWNocm9tYSkKKyAgICAgICAgaHVlID0g
MDsKKyAgICBlbHNlIGlmIChtYXggPT0gcikKKyAgICAgICAgaHVlID0gKDYwLjBmICogKChnIC0g
YikgLyBjaHJvbWEpKSArIDM2MC4wZjsKKyAgICBlbHNlIGlmIChtYXggPT0gZykKKyAgICAgICAg
aHVlID0gKDYwLjBmICogKChiIC0gcikgLyBjaHJvbWEpKSArIDEyMC4wZjsKKyAgICBlbHNlCisg
ICAgICAgIGh1ZSA9ICg2MC4wZiAqICgociAtIGcpIC8gY2hyb21hKSkgKyAyNDAuMGY7CisKKyAg
ICBpZiAoaHVlID49IDM2MC4wZikKKyAgICAgICAgaHVlIC09IDM2MC4wZjsKKworICAgIGh1ZSAv
PSAzNjAuMGY7CisKKyAgICBmbG9hdCBsaWdodG5lc3MgPSAwLjVmICogKG1heCArIG1pbik7Cisg
ICAgZmxvYXQgc2F0dXJhdGlvbjsKKyAgICBpZiAoIWNocm9tYSkKKyAgICAgICAgc2F0dXJhdGlv
biA9IDA7CisgICAgZWxzZSBpZiAobGlnaHRuZXNzIDw9IDAuNWYpCisgICAgICAgIHNhdHVyYXRp
b24gPSAoY2hyb21hIC8gKG1heCArIG1pbikpOworICAgIGVsc2UKKyAgICAgICAgc2F0dXJhdGlv
biA9IChjaHJvbWEgLyAoMi4wZiAtIChtYXggKyBtaW4pKSk7CisKKyAgICByZXR1cm4geworICAg
ICAgICBodWUsCisgICAgICAgIHNhdHVyYXRpb24sCisgICAgICAgIGxpZ2h0bmVzcywKKyAgICAg
ICAgYWxwaGEKKyAgICB9OworfQorCisvLyBIdWUgaXMgaW4gdGhlIHJhbmdlIDAtNiwgb3RoZXIg
YXJncyBpbiAwLTEuCitzdGF0aWMgZmxvYXQgY2FsY0h1ZShmbG9hdCB0ZW1wMSwgZmxvYXQgdGVt
cDIsIGZsb2F0IGh1ZVZhbCkKK3sKKyAgICBpZiAoaHVlVmFsIDwgMC4wZikKKyAgICAgICAgaHVl
VmFsICs9IDYuMGY7CisgICAgZWxzZSBpZiAoaHVlVmFsID49IDYuMGYpCisgICAgICAgIGh1ZVZh
bCAtPSA2LjBmOworICAgIGlmIChodWVWYWwgPCAxLjBmKQorICAgICAgICByZXR1cm4gdGVtcDEg
KyAodGVtcDIgLSB0ZW1wMSkgKiBodWVWYWw7CisgICAgaWYgKGh1ZVZhbCA8IDMuMGYpCisgICAg
ICAgIHJldHVybiB0ZW1wMjsKKyAgICBpZiAoaHVlVmFsIDwgNC4wZikKKyAgICAgICAgcmV0dXJu
IHRlbXAxICsgKHRlbXAyIC0gdGVtcDEpICogKDQuMGYgLSBodWVWYWwpOworICAgIHJldHVybiB0
ZW1wMTsKK30KKworLy8gRXhwbGFuYXRpb24gb2YgdGhpcyBhbGdvcml0aG0gY2FuIGJlIGZvdW5k
IGluIHRoZSBDU1MgQ29sb3IgNCBNb2R1bGUKKy8vIHNwZWNpZmljYXRpb24gYXQgaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci00LyNoc2wtdG8tcmdiIHdpdGgKKy8vIGZ1cnRoZXIg
ZXhwbGFuYXRpb24gYXZhaWxhYmxlIGF0IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNM
X2NvbG9yX3NwYWNlCitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYgY29s
b3IpCit7CisgICAgYXV0byBbaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhXSA9IGNv
bG9yOworCisgICAgLy8gQ29udmVydCBiYWNrIHRvIFJHQi4KKyAgICBpZiAoIXNhdHVyYXRpb24p
IHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGxpZ2h0bmVzcywKKyAgICAgICAgICAg
IGxpZ2h0bmVzcywKKyAgICAgICAgICAgIGxpZ2h0bmVzcywKKyAgICAgICAgICAgIGFscGhhCisg
ICAgICAgIH07CisgICAgfQorICAgIAorICAgIGZsb2F0IHRlbXAyID0gbGlnaHRuZXNzIDw9IDAu
NWYgPyBsaWdodG5lc3MgKiAoMS4wZiArIHNhdHVyYXRpb24pIDogbGlnaHRuZXNzICsgc2F0dXJh
dGlvbiAtIGxpZ2h0bmVzcyAqIHNhdHVyYXRpb247CisgICAgZmxvYXQgdGVtcDEgPSAyLjBmICog
bGlnaHRuZXNzIC0gdGVtcDI7CisgICAgCisgICAgaHVlICo9IDYuMGY7IC8vIGNhbGNIdWUoKSB3
YW50cyBodWUgaW4gdGhlIDAtNiByYW5nZS4KKyAgICByZXR1cm4geworICAgICAgICBjYWxjSHVl
KHRlbXAxLCB0ZW1wMiwgaHVlICsgMi4wZiksCisgICAgICAgIGNhbGNIdWUodGVtcDEsIHRlbXAy
LCBodWUpLAorICAgICAgICBjYWxjSHVlKHRlbXAxLCB0ZW1wMiwgaHVlIC0gMi4wZiksCisgICAg
ICAgIGFscGhhCisgICAgfTsKK30KKworU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgQ01ZS0E8
ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICBhdXRvIFtjLCBtLCB5LCBrLCBhXSA9IGNvbG9yOworICAg
IGZsb2F0IGNvbG9ycyA9IDEgLSBrOworICAgIGZsb2F0IHIgPSBjb2xvcnMgKiAoMS4wZiAtIGMp
OworICAgIGZsb2F0IGcgPSBjb2xvcnMgKiAoMS4wZiAtIG0pOworICAgIGZsb2F0IGIgPSBjb2xv
cnMgKiAoMS4wZiAtIHkpOworICAgIHJldHVybiB7IHIsIGcsIGIsIGEgfTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNywgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDTVlLQTsKK3RlbXBsYXRlPHR5cGVu
YW1lPiBzdHJ1Y3QgRGlzcGxheVAzOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIU0xBOwor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMaW5lYXJEaXNwbGF5UDM7Cit0ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IExpbmVhclNSR0JBOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBTUkdC
QTsKKworLy8gVGhlc2UgYXJlIHRoZSBzdGFuZGFyZCBzUkdCIDwtPiBMaW5lYXJSR0IgLyBEaXNw
bGF5UDMgPC0+IExpbmVhckRpc3BsYXlQMyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAoaHR0cHM6Ly9l
bi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQikuCitmbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9u
ZW50KGZsb2F0KTsKK2Zsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoZmxvYXQpOworCitM
aW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKK1NS
R0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOworCitMaW5lYXJE
aXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4m
KTsKK0Rpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWFyRGlzcGxheVAzPGZs
b2F0PiYpOworCitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7
CitEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworCitX
RUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CitX
RUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYpOwor
CitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjYzNzU4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiwxMjUgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29s
b3JVdGlsaXRpZXMuaCIKIAotI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgotI2luY2x1ZGUg
IkNvbG9yTWF0cml4LmgiCisjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAi
Q29sb3JUeXBlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFRoZXNlIGFyZSB0aGUg
c3RhbmRhcmQgc1JHQiA8LT4gbGluZWFyUkdCIC8gc3RhbmRhcmQgRGlzcGxheVAzIDwtPiBMaW5l
YXJEaXNwbGF5UDMgY29udmVyc2lvbiBmdW5jdGlvbnMgKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL1NSR0IpLgotZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCBjKQot
ewotICAgIGlmIChjIDwgMC4wMDMxMzA4ZikKLSAgICAgICAgcmV0dXJuIDEyLjkyZiAqIGM7Ci0K
LSAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oMS4wNTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIu
NGYpIC0gMC4wNTVmLCAwLCAxKTsKLX0KLQotZmxvYXQgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVu
dChmbG9hdCBjKQotewotICAgIGlmIChjIDw9IDAuMDQwNDVmKQotICAgICAgICByZXR1cm4gYyAv
IDEyLjkyZjsKLQotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6OnBvdygoYyArIDAuMDU1
ZikgLyAxLjA1NWYsIDIuNGYpLCAwLCAxKTsKLX0KLQotTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGlu
ZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICByZXR1cm4gewotICAg
ICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGNvbG9yLnJlZCksCi0gICAgICAgIHJnYlRv
TGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IuZ3JlZW4pLAotICAgICAgICByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50KGNvbG9yLmJsdWUpLAotICAgICAgICBjb2xvci5hbHBoYQotICAgIH07Ci19
Ci0KLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3Ip
Ci17Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChjb2xv
ci5yZWQpLAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9yLmdyZWVuKSwK
LSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChjb2xvci5ibHVlKSwKLSAgICAgICAg
Y29sb3IuYWxwaGEKLSAgICB9OwotfQotCi1MaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFy
RGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewotICAgIHJldHVybiB7
Ci0gICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IucmVkKSwKLSAgICAgICAg
cmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChjb2xvci5ncmVlbiksCi0gICAgICAgIHJnYlRvTGlu
ZWFyQ29sb3JDb21wb25lbnQoY29sb3IuYmx1ZSksCi0gICAgICAgIGNvbG9yLmFscGhhCi0gICAg
fTsKLX0KLQotRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5
UDM8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICByZXR1cm4gewotICAgICAgICBsaW5lYXJUb1JHQkNv
bG9yQ29tcG9uZW50KGNvbG9yLnJlZCksCi0gICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25l
bnQoY29sb3IuZ3JlZW4pLAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9y
LmJsdWUpLAotICAgICAgICBjb2xvci5hbHBoYQotICAgIH07Ci19Ci0KLXN0YXRpYyBMaW5lYXJT
UkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCi17Ci0g
ICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQgotICAgIC8vIGh0dHA6Ly93
d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwK
LSAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6VG9MaW5lYXJTUkdCTWF0cml4IHsK
LSAgICAgICAgIDMuMjQwNDU0MmYsIC0xLjUzNzEzODVmLCAtMC40OTg1MzE0ZiwKLSAgICAgICAg
LTAuOTY5MjY2MGYsICAxLjg3NjAxMDhmLCAgMC4wNDE1NTYwZiwKLSAgICAgICAgIDAuMDU1NjQz
NGYsIC0wLjIwNDAyNTlmLCAgMS4wNTcyMjUyZgotICAgIH07Ci0gICAgcmV0dXJuIGFzTGluZWFy
U1JHQkEoeHl6VG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFz
Q29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwotfQotCi1zdGF0aWMgWFlaQTxmbG9hdD4gdG9YWVoo
Y29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICAvLyBodHRwczovL2VuLndp
a2lwZWRpYS5vcmcvd2lraS9TUkdCCi0gICAgLy8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5j
b20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbAotICAgIGNvbnN0ZXhwciBDb2xv
ck1hdHJpeDwzLCAzPiBsaW5lYXJTUkdCVG9YWVpNYXRyaXggewotICAgICAgICAwLjQxMjQ1NjRm
LCAgMC4zNTc1NzYxZiwgIDAuMTgwNDM3NWYsCi0gICAgICAgIDAuMjEyNjcyOWYsICAwLjcxNTE1
MjJmLCAgMC4wNzIxNzUwZiwKLSAgICAgICAgMC4wMTkzMzM5ZiwgIDAuMTE5MTkyMGYsICAwLjk1
MDMwNDFmCi0gICAgfTsKLSAgICByZXR1cm4gYXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50
cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKLX0K
LQotc3RhdGljIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3Qg
WFlaQTxmbG9hdD4mIGNvbG9yKQotewotICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9j
c3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQotICAgIGNvbnN0ZXhwciBDb2xvck1hdHJp
eDwzLCAzPiB4eXpUb0xpbmVhckRpc3BsYXlQM01hdHJpeCB7Ci0gICAgICAgICAyLjQ5MzQ5Njkx
MTk0MTQyNWYsICAtMC45MzEzODM2MTc5MTkxMjM5ZiwgLTAuNDAyNzEwNzg0NDUwNzE2OGYsCi0g
ICAgICAgIC0wLjgyOTQ4ODk2OTU2MTU3NDdmLCAgMS43NjI2NjQwNjAzMTgzNDYzZiwgIDAuMDIz
NjI0Njg1ODQxOTQzNmYsCi0gICAgICAgICAwLjAzNTg0NTgzMDI0Mzc4NDVmLCAtMC4wNzYxNzIz
ODkyNjgwNDE4ZiwgIDAuOTU2ODg0NTI0MDA3Njg3MmYKLSAgICB9OwotICAgIHJldHVybiBhc0xp
bmVhckRpc3BsYXlQMyh4eXpUb0xpbmVhckRpc3BsYXlQM01hdHJpeC50cmFuc2Zvcm1lZENvbG9y
Q29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKLX0KLQotc3RhdGljIFhZWkE8
ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewotICAg
IC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24t
Y29kZQotICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBsaW5lYXJEaXNwbGF5UDNUb1hZ
Wk1hdHJpeCB7Ci0gICAgICAgIDAuNDg2NTcwOTQ4NjQ4MjE2MmYsIDAuMjY1NjY3NjkzMTY5MDkz
MWYsIDAuMTk4MjE3Mjg1MjM0MzYzZiwKLSAgICAgICAgMC4yMjg5NzQ1NjQwNjk3NDg4ZiwgMC42
OTE3Mzg1MjE4MzY1MDY0ZiwgMC4wNzkyODY5MTQwOTM3NDVmLAotICAgICAgICAwLjBmLCAgICAg
ICAgICAgICAgICAwLjA0NTExMzM4MTg1ODkwMjZmLCAxLjA0Mzk0NDM2ODkwMDk3NmYKLSAgICB9
OwotICAgIHJldHVybiBhc1hZWkEobGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXgudHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7Ci19Ci0KLVNSR0JB
PGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQotewotICAgIHJl
dHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEodG9YWVoodG9MaW5lYXJEaXNwbGF5UDMoY29sb3Ip
KSkpOwotfQotCi1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0
PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKHRv
WFlaKHRvTGluZWFyU1JHQkEoY29sb3IpKSkpOwotfQotCiBmbG9hdCBsaWdodG5lc3MoY29uc3Qg
U1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbG9yOwpA
QCAtMTc0LDExMCArNjAsMTAgQEAgZmxvYXQgY29udHJhc3RSYXRpbyhjb25zdCBTUkdCQTxmbG9h
dD4mIAogICAgIHJldHVybiAobGlnaHRlckx1bWluYW5jZSArIDAuMDUpIC8gKGRhcmtlckx1bWlu
YW5jZSArIDAuMDUpOwogfQogCi1IU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+
JiBjb2xvcikKLXsKLSAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xv
cl9zcGFjZS4KLSAgICBhdXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBjb2xvcjsKLQotICAgIGF1dG8g
W21pbiwgbWF4XSA9IHN0ZDo6bWlubWF4KHsgciwgZywgYiB9KTsKLSAgICBmbG9hdCBjaHJvbWEg
PSBtYXggLSBtaW47Ci0KLSAgICBmbG9hdCBodWU7Ci0gICAgaWYgKCFjaHJvbWEpCi0gICAgICAg
IGh1ZSA9IDA7Ci0gICAgZWxzZSBpZiAobWF4ID09IHIpCi0gICAgICAgIGh1ZSA9ICg2MC4wZiAq
ICgoZyAtIGIpIC8gY2hyb21hKSkgKyAzNjAuMGY7Ci0gICAgZWxzZSBpZiAobWF4ID09IGcpCi0g
ICAgICAgIGh1ZSA9ICg2MC4wZiAqICgoYiAtIHIpIC8gY2hyb21hKSkgKyAxMjAuMGY7Ci0gICAg
ZWxzZQotICAgICAgICBodWUgPSAoNjAuMGYgKiAoKHIgLSBnKSAvIGNocm9tYSkpICsgMjQwLjBm
OwotCi0gICAgaWYgKGh1ZSA+PSAzNjAuMGYpCi0gICAgICAgIGh1ZSAtPSAzNjAuMGY7Ci0KLSAg
ICBodWUgLz0gMzYwLjBmOwotCi0gICAgZmxvYXQgbGlnaHRuZXNzID0gMC41ZiAqIChtYXggKyBt
aW4pOwotICAgIGZsb2F0IHNhdHVyYXRpb247Ci0gICAgaWYgKCFjaHJvbWEpCi0gICAgICAgIHNh
dHVyYXRpb24gPSAwOwotICAgIGVsc2UgaWYgKGxpZ2h0bmVzcyA8PSAwLjVmKQotICAgICAgICBz
YXR1cmF0aW9uID0gKGNocm9tYSAvIChtYXggKyBtaW4pKTsKLSAgICBlbHNlCi0gICAgICAgIHNh
dHVyYXRpb24gPSAoY2hyb21hIC8gKDIuMGYgLSAobWF4ICsgbWluKSkpOwotCi0gICAgcmV0dXJu
IHsKLSAgICAgICAgaHVlLAotICAgICAgICBzYXR1cmF0aW9uLAotICAgICAgICBsaWdodG5lc3Ms
Ci0gICAgICAgIGFscGhhCi0gICAgfTsKLX0KLQotLy8gSHVlIGlzIGluIHRoZSByYW5nZSAwLTYs
IG90aGVyIGFyZ3MgaW4gMC0xLgotc3RhdGljIGZsb2F0IGNhbGNIdWUoZmxvYXQgdGVtcDEsIGZs
b2F0IHRlbXAyLCBmbG9hdCBodWVWYWwpCi17Ci0gICAgaWYgKGh1ZVZhbCA8IDAuMGYpCi0gICAg
ICAgIGh1ZVZhbCArPSA2LjBmOwotICAgIGVsc2UgaWYgKGh1ZVZhbCA+PSA2LjBmKQotICAgICAg
ICBodWVWYWwgLT0gNi4wZjsKLSAgICBpZiAoaHVlVmFsIDwgMS4wZikKLSAgICAgICAgcmV0dXJu
IHRlbXAxICsgKHRlbXAyIC0gdGVtcDEpICogaHVlVmFsOwotICAgIGlmIChodWVWYWwgPCAzLjBm
KQotICAgICAgICByZXR1cm4gdGVtcDI7Ci0gICAgaWYgKGh1ZVZhbCA8IDQuMGYpCi0gICAgICAg
IHJldHVybiB0ZW1wMSArICh0ZW1wMiAtIHRlbXAxKSAqICg0LjBmIC0gaHVlVmFsKTsKLSAgICBy
ZXR1cm4gdGVtcDE7Ci19Ci0KLS8vIEV4cGxhbmF0aW9uIG9mIHRoaXMgYWxnb3JpdGhtIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgQ1NTIENvbG9yIDQgTW9kdWxlCi0vLyBzcGVjaWZpY2F0aW9uIGF0IGh0
dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3ItNC8jaHNsLXRvLXJnYiB3aXRoCi0vLyBm
dXJ0aGVyIGV4cGxhbmF0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93
aWtpL0hTTF9jb2xvcl9zcGFjZQotU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgSFNMQTxmbG9h
dD4mIGNvbG9yKQotewotICAgIGF1dG8gW2h1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBo
YV0gPSBjb2xvcjsKLQotICAgIC8vIENvbnZlcnQgYmFjayB0byBSR0IuCi0gICAgaWYgKCFzYXR1
cmF0aW9uKSB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBsaWdodG5lc3MsCi0gICAg
ICAgICAgICBsaWdodG5lc3MsCi0gICAgICAgICAgICBsaWdodG5lc3MsCi0gICAgICAgICAgICBh
bHBoYQotICAgICAgICB9OwotICAgIH0KLSAgICAKLSAgICBmbG9hdCB0ZW1wMiA9IGxpZ2h0bmVz
cyA8PSAwLjVmID8gbGlnaHRuZXNzICogKDEuMGYgKyBzYXR1cmF0aW9uKSA6IGxpZ2h0bmVzcyAr
IHNhdHVyYXRpb24gLSBsaWdodG5lc3MgKiBzYXR1cmF0aW9uOwotICAgIGZsb2F0IHRlbXAxID0g
Mi4wZiAqIGxpZ2h0bmVzcyAtIHRlbXAyOwotICAgIAotICAgIGh1ZSAqPSA2LjBmOyAvLyBjYWxj
SHVlKCkgd2FudHMgaHVlIGluIHRoZSAwLTYgcmFuZ2UuCi0gICAgcmV0dXJuIHsKLSAgICAgICAg
Y2FsY0h1ZSh0ZW1wMSwgdGVtcDIsIGh1ZSArIDIuMGYpLAotICAgICAgICBjYWxjSHVlKHRlbXAx
LCB0ZW1wMiwgaHVlKSwKLSAgICAgICAgY2FsY0h1ZSh0ZW1wMSwgdGVtcDIsIGh1ZSAtIDIuMGYp
LAotICAgICAgICBhbHBoYQotICAgIH07Ci19Ci0KLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0
IENNWUtBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgYXV0byBbYywgbSwgeSwgaywgYV0gPSBjb2xv
cjsKLSAgICBmbG9hdCBjb2xvcnMgPSAxIC0gazsKLSAgICBmbG9hdCByID0gY29sb3JzICogKDEu
MGYgLSBjKTsKLSAgICBmbG9hdCBnID0gY29sb3JzICogKDEuMGYgLSBtKTsKLSAgICBmbG9hdCBi
ID0gY29sb3JzICogKDEuMGYgLSB5KTsKLSAgICByZXR1cm4geyByLCBnLCBiLCBhIH07Ci19Ci0K
IFNSR0JBPGZsb2F0PiBwcmVtdWx0aXBsaWVkKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCiB7
CiAgICAgYXV0byBbciwgZywgYiwgYV0gPSBjb2xvcjsKLSAgICByZXR1cm4gewotICAgICAgICBy
ICogYSwKLSAgICAgICAgZyAqIGEsCi0gICAgICAgIGIgKiBhLAotICAgICAgICBhCi0gICAgfTsK
KyAgICByZXR1cm4geyByICogYSwgZyAqIGEsIGIgKiBhLCBhIH07CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JVdGlsaXRpZXMuaAkocmV2aXNpb24gMjYzNzU4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAs
MzIgKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZT4g
c3RydWN0IENNWUtBOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEaXNwbGF5UDM7Ci10ZW1w
bGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhTTEE7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExp
bmVhckRpc3BsYXlQMzsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGluZWFyU1JHQkE7CiB0
ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFNSR0JBOwogCi0vLyAwLTEgY29tcG9uZW50cywgcmVz
dWx0IGlzIGNsYW1wZWQuCi1mbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0KTsK
LWZsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoZmxvYXQpOwotCi1MaW5lYXJTUkdCQTxm
bG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKLVNSR0JBPGZsb2F0PiB0
b1NSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotCi1MaW5lYXJEaXNwbGF5UDM8Zmxv
YXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKLURpc3BsYXlQ
MzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYpOwotCi1T
UkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7Ci1EaXNwbGF5UDM8
ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwotCi1XRUJDT1JFX0VYUE9S
VCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9S
VCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYpOwotCi1TUkdCQTxmbG9h
dD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mKTsKLQotCiBmbG9hdCBsaWdodG5lc3MoY29u
c3QgU1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBsdW1pbmFuY2UoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7
CiBmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IFNSR0JBPGZsb2F0PiYsIGNvbnN0IFNSR0JBPGZs
b2F0PiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRD
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RXh0ZW5kZWRDb2xvci5jcHAJKHJldmlzaW9uIDI2Mzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4
ICsyNyw4IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRDb2xvci5oIgogCiAjaW5jbHVkZSAiQ29sb3Iu
aCIKKyNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNsdWRlICJDb2xvclR5cGVzLmgi
Ci0jaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZU51bWJlcnMuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAJKHJldmlzaW9uIDI2Mzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsNyBAQAogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiQ2Fpcm9PcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5o
IgorI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAkocmV2aXNpb24gMjYzNzU4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkJpdG1h
cEltYWdlLmgiCiAjaW5jbHVkZSAiQ2Fpcm9PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiQ29sb3Iu
aCIKLSNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAu
Y3BwCShyZXZpc2lvbiAyNjM3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyAr
MjQsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZFRGlzcGxhY2VtZW50TWFw
LmgiCiAKLSNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTGlnaHRpbmcuY3BwCShyZXZpc2lvbiAyNjM3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRkVMaWdodGluZy5o
IgogCi0jaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJDb2xvckNvbnZlcnNp
b24uaCIKICNpbmNsdWRlICJGRUxpZ2h0aW5nTkVPTi5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9QYXJhbGxlbEpvYnMuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAJ
KHJldmlzaW9uIDI2Mzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVNb3JwaG9sb2d5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAog
I2luY2x1ZGUgIkZFTW9ycGhvbG9neS5oIgogCiAjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgi
Ci0jaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNs
dWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyNjM3NTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDggKzI5LDkgQEAKICNpbmNsdWRlICJBbmltYXRpb25VdGlsaXRpZXMuaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW5jbHVk
ZSAiQ29sb3JNYXRyaXguaCIKLSNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgorI2luY2x1ZGUg
IkNvbG9yVHlwZXMuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJTVkdV
UklSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI2Mzc1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAKLSNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ikxlbmd0aEZ1bmN0aW9ucy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0NvbG9yR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3BwCShyZXZpc2lvbiAyNjM3NTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSwxOSArMjEsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb2xv
ci5oIgogCi0jaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxnZGsvZ2RrLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ29sb3I6OkNvbG9yKGNvbnN0IEdka1JHQkEmIGMp
CitDb2xvcjo6Q29sb3IoY29uc3QgR2RrUkdCQSYgY29sb3IpCiB7Ci0gICAgc2V0U2ltcGxlQ29s
b3IobWFrZVNpbXBsZUNvbG9yKAotICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGMucmVkICogMjU1
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihjLmdyZWVuICogMjU1KSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8aW50PihjLmJsdWUgKiAyNTUpLAotICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGMu
YWxwaGEgKiAyNTUpCi0gICAgKSk7CisgICAgc2V0U2ltcGxlQ29sb3IobWFrZVNpbXBsZUNvbG9y
KFNSR0JBIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLnJlZCksIHN0YXRpY19jYXN0PGZsb2F0
Pihjb2xvci5ncmVlbiksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci5ibHVlKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGNvbG9yLmFscGhhKSB9KSk7CiB9CiAKIENvbG9yOjpvcGVyYXRvciBHZGtSR0JB
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Db2xv
ckRpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI2Mzc1OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Db2xvckRpcmVjdDJELmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgUExBVEZPUk0oV0lOKQogCi0jaW5jbHVkZSAi
Q29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxkMmQxLmg+CiAjaW5jbHVkZSA8ZDJkMV8xaGVs
cGVyLmg+CiAKQEAgLTM2LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb2xvcjo6
Q29sb3IoRDJEMV9DT0xPUl9GIGNvbG9yKQogewotICAgIHNldFNpbXBsZUNvbG9yKG1ha2VTaW1w
bGVDb2xvcihjb2xvci5yICogMjU1LCBjb2xvci5nICogMjU1LCBjb2xvci5iICogMjU1LCBjb2xv
ci5hICogMjU1KSk7CisgICAgc2V0U2ltcGxlQ29sb3IobWFrZVNpbXBsZUNvbG9yKFNSR0JBIHsg
Y29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSB9KSk7CiB9CiAKIENvbG9yOjpvcGVy
YXRvciBEMkQxX0NPTE9SX0YoKSBjb25zdApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYzNzYwKQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDYtMzAgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IGNvbG9yIGNvbnZlcnNpb24g
ZnVuY3Rpb25zIG91dCBvZiBDb2xvclV0aWxpdGllcy5oL2NwcCBpbnRvIHRoZWlyIG93biBmaWxl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODAz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JUZXN0cy5jcHA6CisgICAgICAgIFVwZGF0ZSB0
byBpbmNsdWRlIENvbG9yQ29udmVyc2lvbi5oIGFuZCBDb2xvclR5cGVzLmggcmF0aGVyIHRoYW4g
Q29sb3JVdGlsaXRpZXMuaAorCiAyMDIwLTA2LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFdURjo6TUQ1CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JUZXN0cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9yVGVzdHMuY3BwCShyZXZp
c2lvbiAyNjM3NTgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JU
ZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDggQEAKIAogI2luY2x1ZGUgIlRl
c3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db2xv
clV0aWxpdGllcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JDb252ZXJzaW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9Db2xvclR5cGVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403460</attachid>
            <date>2020-07-03 08:05:38 -0700</date>
            <delta_ts>2020-07-03 09:55:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213803-20200703080537.patch</filename>
            <type>text/plain</type>
            <size>35652</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzg5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTA3LTAzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBjb2xvciBjb252ZXJzaW9u
IGZ1bmN0aW9ucyBvdXQgb2YgQ29sb3JVdGlsaXRpZXMuaC9jcHAgaW50byB0aGVpciBvd24gZmls
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzgw
MworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBNb3ZlcyBj
b2xvciBjb252ZXJzaW9uIGZ1bmN0aW9ucyAoYm90aCBiZXR3ZWVuIGNvbG9yIHNwYWNlcyBsaWtl
IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBJikKKyAgICAgICAgYW5kIGJldHdlZW4gZGlmZmVyZW50
IHJlcHJlc2VudGF0aW9ucyBsaWtlIHRvSFNMQShjb25zdCBTUkdCQSYpKSB0byB0aGVpciBvd24g
ZmlsZXMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
QWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW06Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwOgorICAgICAgICBBZGQgaW5jbHVk
ZSBvZiBDb2xvckNvbnZlcnNpb24uaAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGll
cy5oOgorICAgICAgICBNb3ZlIGZ1bmN0aW9ucyB0byB0aGUgbmV3IGZpbGVzLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6CisgICAgICAgIEFkZCBp
bmNsdWRlIG9mIENvbG9yQ29udmVyc2lvbi5oLCByZW1vdmUgdW5uY2Vzc2FyeSBpbmNsdWRlIG9m
IENvbG9yVXRpbGl0aWVzLmgKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIFJlbW92ZSB1bm5j
ZXNzYXJ5IGluY2x1ZGUgb2YgQ29sb3JVdGlsaXRpZXMuaAorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICBBZGQgaW5jbHVk
ZSBvZiBDb2xvckNvbnZlcnNpb24uaCBhbmQgQ29sb3JUeXBlcy5oLCByZW1vdmUgdW5uY2Vzc2Fy
eSBpbmNsdWRlIG9mIENvbG9yVXRpbGl0aWVzLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ndGsvQ29sb3JHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9D
b2xvckRpcmVjdDJELmNwcDoKKyAgICAgICAgUmVtb3ZlIHVubmNlc3NhcnkgaW5jbHVkZSBvZiBD
b2xvclV0aWxpdGllcy5oLiBVcGRhdGUgdG8gdXNlIHN0YW5kYXJkIGZsb2F0IC0+IFNpbXBsZUNv
bG9yIGlkaW9tCisgICAgICAgIHVzaW5nIFNSR0JBPGZsb2F0Pi4KKwogMjAyMC0wNy0wMyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFSZWNvcmRlci5z
dGFydCgpIE1ldGhvZCBpcyBJZ25vcmluZyB0aGUgInRpbWVzbGljZSIgUGFyYW1ldGVyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI2Mzg5MykKKysrIFNvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEwODMsNiArMTA4Myw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252
ZXJzaW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckhhc2guaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yTWF0cml4LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlh
bGl6YXRpb24uaApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI2Mzg5MykKKysrIFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOTA4LDYgKzE5MDgsNyBA
QCBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252
ZXJzaW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTZXJpYWxpemF0aW9uLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjM4OTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTIyNTIsNiArMjI1Miw3IEBACiAJCTdDNEM5NkREMUFENDQ4MzUwMDM2NUE2MCAvKiBKU1dy
aXRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5oICovOyB9
OwogCQk3QzRDOTZERjFBRDQ0ODM1MDAzNjM1NzIgLyogSlNSZWFkYWJsZVN0cmVhbUJZT0JSZWFk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEM5
NkRCMUFENDQ4MzUwMDM2MzU3MiAvKiBKU1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5oICovOyB9
OwogCQk3QzRDOTZERjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
NEM5NkRCMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5o
ICovOyB9OworCQk3QzUxNEUwMzI0QUY4MDVFMDA1MDcxMEYgLyogQ29sb3JDb252ZXJzaW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUxNEUwMDI0
QUY4MDU4MDA1MDcxMEYgLyogQ29sb3JDb252ZXJzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0M1MTZBRDQxRjM1MjUyMDAwMzRCNkJGIC8q
IERPTVByb21pc2VQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M1MTZBRDIxRjM1MjUyMDAwMzRCNkJGIC8qIERPTVByb21pc2VQcm94eS5oICov
OyB9OwogCQk3QzUyMjI5NjFFMURBRTAzMDAyQ0I4RjcgLyogSURMVHlwZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTIyMjk1MUUxREFERjgwMDJD
QjhGNyAvKiBJRExUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdDNTIyMjk5MUUxREFFMUMwMDJDQjhGNyAvKiBBY3RpdmVET01DYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MjIy
OTgxRTFEQUUxNjAwMkNCOEY3IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMDIxLDYgKzEwMDIyLDggQEAK
IAkJN0M0Qzk2REIxQUQ0NDgzNTAwMzYzNTcyIC8qIEpTUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1CWU9C
UmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNEM5NkRCMUFENDQ4MzUw
MDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzRFREQ3MzFBN0I2MDc4MDAxOThDNEQgLyogRm9u
dENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRm9udENv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzUxNEUwMDI0QUY4MDU4MDA1
MDcxMEYgLyogQ29sb3JDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yQ29udmVyc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzUxNEUwMjI0QUY4MDU4MDA1MDcx
MEYgLyogQ29sb3JDb252ZXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yQ29udmVy
c2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTE2QUQyMUYzNTI1MjAw
MDM0QjZCRiAvKiBET01Qcm9taXNlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUHJvbWlzZVBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTIyMjk1MUUxREFERjgwMDJD
QjhGNyAvKiBJRExUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJRExU
eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzUyMjI5NzFFMURBRTE2MDAy
Q0I4RjcgLyogQWN0aXZlRE9NQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQWN0aXZlRE9NQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjU1MDgsNiArMjU1MTEsOCBAQAogCQkJCTdDMUI0QTY1MjRBOTk3NTkwMDMzNzI3
RiAvKiBDb2xvckJsZW5kaW5nLmNwcCAqLywKIAkJCQk3QzFCNEE2NzI0QTk5NzY2MDAzMzcyN0Yg
LyogQ29sb3JCbGVuZGluZy5oICovLAogCQkJCTdDQUM2QUVDMjQ3RjFDNTEwMEU2MUQ1OSAvKiBD
b2xvckNvbXBvbmVudHMuaCAqLywKKwkJCQk3QzUxNEUwMjI0QUY4MDU4MDA1MDcxMEYgLyogQ29s
b3JDb252ZXJzaW9uLmNwcCAqLywKKwkJCQk3QzUxNEUwMDI0QUY4MDU4MDA1MDcxMEYgLyogQ29s
b3JDb252ZXJzaW9uLmggKi8sCiAJCQkJMzEwM0I3REUxREIwMTU1NjAwOEJCODkwIC8qIENvbG9y
SGFzaC5oICovLAogCQkJCTdDQUM2QUU4MjQ3RjA4MjAwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5o
ICovLAogCQkJCTdDRDFFNjkyMjRBQkY2MjQwMDg5QzQxOSAvKiBDb2xvclNlcmlhbGl6YXRpb24u
Y3BwICovLApAQCAtMzM5MTIsNiArMzM5MTcsNyBAQAogCQkJCTkxMjc4RDYyMjFERURBRjAwMEI1
NzE4NCAvKiBXb3JrZXJBdWRpdEFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUE3RDM1MzFG
NDM4RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTVCODFDQ0QxRkFBNDRERTAwMzdEMUU2IC8qIFdvcmtlckNvbnNvbGVBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M1MTRFMDMyNEFGODA1RTAwNTA3MTBGIC8qIENvbG9y
Q29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1NjM5RDExQzZGMDlFMzAwODA2RDhF
IC8qIFdvcmtlckNvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0NFMUZB
QTQ0REUwMDM3RDFFNiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTJCMzQ5RTFGQTQxNzAzMDA4QjYyNDYgLyogV29ya2VyRGVidWdnZXJQcm94eS5oIGluIEhl
YWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNjM4OTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJDU1NQYWludEltYWdlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIK
KyNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVk
ZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlN0eWxlQ29sb3IuaCIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0JKHJl
dmlzaW9uIDI2Mzg5MykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJBdHRy
LmgiCiAjaW1wb3J0ICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCisjaW1wb3J0ICJDb2xvckNvbnZl
cnNpb24uaCIKICNpbXBvcnQgIkNvbG9yU2VyaWFsaXphdGlvbi5oIgogI2ltcG9ydCAiRWRpdGlu
Zy5oIgogI2ltcG9ydCAiRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuY3BwCShyZXZpc2lvbiAyNjM4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFz
R3JhZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCisjaW5jbHVkZSAiQ29sb3JD
b252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiQ29sb3JTZXJpYWxpemF0aW9uLmgiCiAjaW5jbHVkZSAi
RE9NTWF0cml4LmgiCiAjaW5jbHVkZSAiRE9NTWF0cml4MkRJbml0LmgiCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCShyZXZpc2lvbiAyNjM4OTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5j
bHVkZSAiQ2FudmFzR3JhZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCisjaW5j
bHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZB
UykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LCAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3JD
b252ZXJzaW9uLmgiCisKKyNpbmNsdWRlICJDb2xvckNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJD
b2xvck1hdHJpeC5oIgorI2luY2x1ZGUgIkNvbG9yVHlwZXMuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitmbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCit7CisgICAg
aWYgKGMgPCAwLjAwMzEzMDhmKQorICAgICAgICByZXR1cm4gMTIuOTJmICogYzsKKworICAgIHJl
dHVybiBjbGFtcFRvPGZsb2F0PigxLjA1NWYgKiBzdGQ6OnBvdyhjLCAxLjBmIC8gMi40ZikgLSAw
LjA1NWYsIDAsIDEpOworfQorCitmbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0
IGMpCit7CisgICAgaWYgKGMgPD0gMC4wNDA0NWYpCisgICAgICAgIHJldHVybiBjIC8gMTIuOTJm
OworCisgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KHN0ZDo6cG93KChjICsgMC4wNTVmKSAvIDEu
MDU1ZiwgMi40ZiksIDAsIDEpOworfQorCitMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdC
QShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB7CisgICAgICAgIHJn
YlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IucmVkKSwKKyAgICAgICAgcmdiVG9MaW5lYXJD
b2xvckNvbXBvbmVudChjb2xvci5ncmVlbiksCisgICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21w
b25lbnQoY29sb3IuYmx1ZSksCisgICAgICAgIGNvbG9yLmFscGhhCisgICAgfTsKK30KKworU1JH
QkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAg
ICByZXR1cm4geworICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9yLnJlZCks
CisgICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQoY29sb3IuZ3JlZW4pLAorICAgICAg
ICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9yLmJsdWUpLAorICAgICAgICBjb2xvci5h
bHBoYQorICAgIH07Cit9CisKK0xpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5
UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHsKKyAgICAg
ICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChjb2xvci5yZWQpLAorICAgICAgICByZ2JUb0xp
bmVhckNvbG9yQ29tcG9uZW50KGNvbG9yLmdyZWVuKSwKKyAgICAgICAgcmdiVG9MaW5lYXJDb2xv
ckNvbXBvbmVudChjb2xvci5ibHVlKSwKKyAgICAgICAgY29sb3IuYWxwaGEKKyAgICB9OworfQor
CitEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9h
dD4mIGNvbG9yKQoreworICAgIHJldHVybiB7CisgICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21w
b25lbnQoY29sb3IucmVkKSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChjb2xv
ci5ncmVlbiksCisgICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQoY29sb3IuYmx1ZSks
CisgICAgICAgIGNvbG9yLmFscGhhCisgICAgfTsKK30KKworc3RhdGljIExpbmVhclNSR0JBPGZs
b2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICAvLyBo
dHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCisgICAgLy8gaHR0cDovL3d3dy5icnVj
ZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbAorICAgIGNv
bnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiB4eXpUb0xpbmVhclNSR0JNYXRyaXggeworICAgICAg
ICAgMy4yNDA0NTQyZiwgLTEuNTM3MTM4NWYsIC0wLjQ5ODUzMTRmLAorICAgICAgICAtMC45Njky
NjYwZiwgIDEuODc2MDEwOGYsICAwLjA0MTU1NjBmLAorICAgICAgICAgMC4wNTU2NDM0ZiwgLTAu
MjA0MDI1OWYsICAxLjA1NzIyNTJmCisgICAgfTsKKyAgICByZXR1cm4gYXNMaW5lYXJTUkdCQSh4
eXpUb0xpbmVhclNSR0JNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNv
bXBvbmVudHMoY29sb3IpKSk7Cit9CisKK3N0YXRpYyBYWVpBPGZsb2F0PiB0b1hZWihjb25zdCBM
aW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQoreworICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlh
Lm9yZy93aWtpL1NSR0IKKyAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRl
eC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCisgICAgY29uc3RleHByIENvbG9yTWF0cml4
PDMsIDM+IGxpbmVhclNSR0JUb1hZWk1hdHJpeCB7CisgICAgICAgIDAuNDEyNDU2NGYsICAwLjM1
NzU3NjFmLCAgMC4xODA0Mzc1ZiwKKyAgICAgICAgMC4yMTI2NzI5ZiwgIDAuNzE1MTUyMmYsICAw
LjA3MjE3NTBmLAorICAgICAgICAwLjAxOTMzMzlmLCAgMC4xMTkxOTIwZiwgIDAuOTUwMzA0MWYK
KyAgICB9OworICAgIHJldHVybiBhc1hZWkEobGluZWFyU1JHQlRvWFlaTWF0cml4LnRyYW5zZm9y
bWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworfQorCitzdGF0
aWMgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZs
b2F0PiYgY29sb3IpCit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xv
ci8jY29sb3ItY29udmVyc2lvbi1jb2RlCisgICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+
IHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4IHsKKyAgICAgICAgIDIuNDkzNDk2OTExOTQxNDI1
ZiwgIC0wLjkzMTM4MzYxNzkxOTEyMzlmLCAtMC40MDI3MTA3ODQ0NTA3MTY4ZiwKKyAgICAgICAg
LTAuODI5NDg4OTY5NTYxNTc0N2YsICAxLjc2MjY2NDA2MDMxODM0NjNmLCAgMC4wMjM2MjQ2ODU4
NDE5NDM2ZiwKKyAgICAgICAgIDAuMDM1ODQ1ODMwMjQzNzg0NWYsIC0wLjA3NjE3MjM4OTI2ODA0
MThmLCAgMC45NTY4ODQ1MjQwMDc2ODcyZgorICAgIH07CisgICAgcmV0dXJuIGFzTGluZWFyRGlz
cGxheVAzKHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25l
bnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworfQorCitzdGF0aWMgWFlaQTxmbG9hdD4g
dG9YWVooY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit7CisgICAgLy8gaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCisg
ICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4
IHsKKyAgICAgICAgMC40ODY1NzA5NDg2NDgyMTYyZiwgMC4yNjU2Njc2OTMxNjkwOTMxZiwgMC4x
OTgyMTcyODUyMzQzNjNmLAorICAgICAgICAwLjIyODk3NDU2NDA2OTc0ODhmLCAwLjY5MTczODUy
MTgzNjUwNjRmLCAwLjA3OTI4NjkxNDA5Mzc0NWYsCisgICAgICAgIDAuMGYsICAgICAgICAgICAg
ICAgIDAuMDQ1MTEzMzgxODU4OTAyNmYsIDEuMDQzOTQ0MzY4OTAwOTc2ZgorICAgIH07CisgICAg
cmV0dXJuIGFzWFlaQShsaW5lYXJEaXNwbGF5UDNUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9y
Q29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKK30KKworU1JHQkE8ZmxvYXQ+
IHRvU1JHQkEoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRv
U1JHQkEodG9MaW5lYXJTUkdCQSh0b1hZWih0b0xpbmVhckRpc3BsYXlQMyhjb2xvcikpKSk7Cit9
CisKK0Rpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xv
cikKK3sKKyAgICByZXR1cm4gdG9EaXNwbGF5UDModG9MaW5lYXJEaXNwbGF5UDModG9YWVoodG9M
aW5lYXJTUkdCQShjb2xvcikpKSk7Cit9CisKK0hTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBTUkdC
QTxmbG9hdD4mIGNvbG9yKQoreworICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kv
SFNMX2NvbG9yX3NwYWNlLgorICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGNvbG9yOworCisg
ICAgYXV0byBbbWluLCBtYXhdID0gc3RkOjptaW5tYXgoeyByLCBnLCBiIH0pOworICAgIGZsb2F0
IGNocm9tYSA9IG1heCAtIG1pbjsKKworICAgIGZsb2F0IGh1ZTsKKyAgICBpZiAoIWNocm9tYSkK
KyAgICAgICAgaHVlID0gMDsKKyAgICBlbHNlIGlmIChtYXggPT0gcikKKyAgICAgICAgaHVlID0g
KDYwLjBmICogKChnIC0gYikgLyBjaHJvbWEpKSArIDM2MC4wZjsKKyAgICBlbHNlIGlmIChtYXgg
PT0gZykKKyAgICAgICAgaHVlID0gKDYwLjBmICogKChiIC0gcikgLyBjaHJvbWEpKSArIDEyMC4w
ZjsKKyAgICBlbHNlCisgICAgICAgIGh1ZSA9ICg2MC4wZiAqICgociAtIGcpIC8gY2hyb21hKSkg
KyAyNDAuMGY7CisKKyAgICBpZiAoaHVlID49IDM2MC4wZikKKyAgICAgICAgaHVlIC09IDM2MC4w
ZjsKKworICAgIGh1ZSAvPSAzNjAuMGY7CisKKyAgICBmbG9hdCBsaWdodG5lc3MgPSAwLjVmICog
KG1heCArIG1pbik7CisgICAgZmxvYXQgc2F0dXJhdGlvbjsKKyAgICBpZiAoIWNocm9tYSkKKyAg
ICAgICAgc2F0dXJhdGlvbiA9IDA7CisgICAgZWxzZSBpZiAobGlnaHRuZXNzIDw9IDAuNWYpCisg
ICAgICAgIHNhdHVyYXRpb24gPSAoY2hyb21hIC8gKG1heCArIG1pbikpOworICAgIGVsc2UKKyAg
ICAgICAgc2F0dXJhdGlvbiA9IChjaHJvbWEgLyAoMi4wZiAtIChtYXggKyBtaW4pKSk7CisKKyAg
ICByZXR1cm4geworICAgICAgICBodWUsCisgICAgICAgIHNhdHVyYXRpb24sCisgICAgICAgIGxp
Z2h0bmVzcywKKyAgICAgICAgYWxwaGEKKyAgICB9OworfQorCisvLyBIdWUgaXMgaW4gdGhlIHJh
bmdlIDAtNiwgb3RoZXIgYXJncyBpbiAwLTEuCitzdGF0aWMgZmxvYXQgY2FsY0h1ZShmbG9hdCB0
ZW1wMSwgZmxvYXQgdGVtcDIsIGZsb2F0IGh1ZVZhbCkKK3sKKyAgICBpZiAoaHVlVmFsIDwgMC4w
ZikKKyAgICAgICAgaHVlVmFsICs9IDYuMGY7CisgICAgZWxzZSBpZiAoaHVlVmFsID49IDYuMGYp
CisgICAgICAgIGh1ZVZhbCAtPSA2LjBmOworICAgIGlmIChodWVWYWwgPCAxLjBmKQorICAgICAg
ICByZXR1cm4gdGVtcDEgKyAodGVtcDIgLSB0ZW1wMSkgKiBodWVWYWw7CisgICAgaWYgKGh1ZVZh
bCA8IDMuMGYpCisgICAgICAgIHJldHVybiB0ZW1wMjsKKyAgICBpZiAoaHVlVmFsIDwgNC4wZikK
KyAgICAgICAgcmV0dXJuIHRlbXAxICsgKHRlbXAyIC0gdGVtcDEpICogKDQuMGYgLSBodWVWYWwp
OworICAgIHJldHVybiB0ZW1wMTsKK30KKworLy8gRXhwbGFuYXRpb24gb2YgdGhpcyBhbGdvcml0
aG0gY2FuIGJlIGZvdW5kIGluIHRoZSBDU1MgQ29sb3IgNCBNb2R1bGUKKy8vIHNwZWNpZmljYXRp
b24gYXQgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci00LyNoc2wtdG8tcmdiIHdp
dGgKKy8vIGZ1cnRoZXIgZXhwbGFuYXRpb24gYXZhaWxhYmxlIGF0IGh0dHA6Ly9lbi53aWtpcGVk
aWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlCitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBI
U0xBPGZsb2F0PiYgY29sb3IpCit7CisgICAgYXV0byBbaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5l
c3MsIGFscGhhXSA9IGNvbG9yOworCisgICAgLy8gQ29udmVydCBiYWNrIHRvIFJHQi4KKyAgICBp
ZiAoIXNhdHVyYXRpb24pIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGxpZ2h0bmVz
cywKKyAgICAgICAgICAgIGxpZ2h0bmVzcywKKyAgICAgICAgICAgIGxpZ2h0bmVzcywKKyAgICAg
ICAgICAgIGFscGhhCisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIGZsb2F0IHRlbXAyID0g
bGlnaHRuZXNzIDw9IDAuNWYgPyBsaWdodG5lc3MgKiAoMS4wZiArIHNhdHVyYXRpb24pIDogbGln
aHRuZXNzICsgc2F0dXJhdGlvbiAtIGxpZ2h0bmVzcyAqIHNhdHVyYXRpb247CisgICAgZmxvYXQg
dGVtcDEgPSAyLjBmICogbGlnaHRuZXNzIC0gdGVtcDI7CisgICAgCisgICAgaHVlICo9IDYuMGY7
IC8vIGNhbGNIdWUoKSB3YW50cyBodWUgaW4gdGhlIDAtNiByYW5nZS4KKyAgICByZXR1cm4gewor
ICAgICAgICBjYWxjSHVlKHRlbXAxLCB0ZW1wMiwgaHVlICsgMi4wZiksCisgICAgICAgIGNhbGNI
dWUodGVtcDEsIHRlbXAyLCBodWUpLAorICAgICAgICBjYWxjSHVlKHRlbXAxLCB0ZW1wMiwgaHVl
IC0gMi4wZiksCisgICAgICAgIGFscGhhCisgICAgfTsKK30KKworU1JHQkE8ZmxvYXQ+IHRvU1JH
QkEoY29uc3QgQ01ZS0E8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICBhdXRvIFtjLCBtLCB5LCBrLCBh
XSA9IGNvbG9yOworICAgIGZsb2F0IGNvbG9ycyA9IDEgLSBrOworICAgIGZsb2F0IHIgPSBjb2xv
cnMgKiAoMS4wZiAtIGMpOworICAgIGZsb2F0IGcgPSBjb2xvcnMgKiAoMS4wZiAtIG0pOworICAg
IGZsb2F0IGIgPSBjb2xvcnMgKiAoMS4wZiAtIHkpOworICAgIHJldHVybiB7IHIsIGcsIGIsIGEg
fTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNywg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDTVlLQTsK
K3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGlzcGxheVAzOwordGVtcGxhdGU8dHlwZW5hbWU+
IHN0cnVjdCBIU0xBOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMaW5lYXJEaXNwbGF5UDM7
Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhclNSR0JBOwordGVtcGxhdGU8dHlwZW5h
bWU+IHN0cnVjdCBTUkdCQTsKKworLy8gVGhlc2UgYXJlIHRoZSBzdGFuZGFyZCBzUkdCIDwtPiBM
aW5lYXJSR0IgLyBEaXNwbGF5UDMgPC0+IExpbmVhckRpc3BsYXlQMyBjb252ZXJzaW9uIGZ1bmN0
aW9ucyAoaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQikuCitmbG9hdCBsaW5lYXJU
b1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0KTsKK2Zsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25l
bnQoZmxvYXQpOworCitMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBTUkdC
QTxmbG9hdD4mKTsKK1NSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0
PiYpOworCitMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IERp
c3BsYXlQMzxmbG9hdD4mKTsKK0Rpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiYpOworCitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBEaXNw
bGF5UDM8ZmxvYXQ+Jik7CitEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JB
PGZsb2F0PiYpOworCitXRUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JH
QkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBI
U0xBPGZsb2F0PiYpOworCitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4m
KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjYzODkz
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMjUgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKIAotI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50
cy5oIgotI2luY2x1ZGUgIkNvbG9yTWF0cml4LmgiCisjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9u
LmgiCiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8v
IFRoZXNlIGFyZSB0aGUgc3RhbmRhcmQgc1JHQiA8LT4gbGluZWFyUkdCIC8gc3RhbmRhcmQgRGlz
cGxheVAzIDwtPiBMaW5lYXJEaXNwbGF5UDMgY29udmVyc2lvbiBmdW5jdGlvbnMgKGh0dHBzOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IpLgotZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBv
bmVudChmbG9hdCBjKQotewotICAgIGlmIChjIDwgMC4wMDMxMzA4ZikKLSAgICAgICAgcmV0dXJu
IDEyLjkyZiAqIGM7Ci0KLSAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oMS4wNTVmICogc3RkOjpw
b3coYywgMS4wZiAvIDIuNGYpIC0gMC4wNTVmLCAwLCAxKTsKLX0KLQotZmxvYXQgcmdiVG9MaW5l
YXJDb2xvckNvbXBvbmVudChmbG9hdCBjKQotewotICAgIGlmIChjIDw9IDAuMDQwNDVmKQotICAg
ICAgICByZXR1cm4gYyAvIDEyLjkyZjsKLQotICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6
OnBvdygoYyArIDAuMDU1ZikgLyAxLjA1NWYsIDIuNGYpLCAwLCAxKTsKLX0KLQotTGluZWFyU1JH
QkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAg
ICByZXR1cm4gewotICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGNvbG9yLnJlZCks
Ci0gICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IuZ3JlZW4pLAotICAgICAg
ICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGNvbG9yLmJsdWUpLAotICAgICAgICBjb2xvci5h
bHBoYQotICAgIH07Ci19Ci0KLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNSR0JB
PGZsb2F0PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgbGluZWFyVG9SR0JDb2xv
ckNvbXBvbmVudChjb2xvci5yZWQpLAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50
KGNvbG9yLmdyZWVuKSwKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChjb2xvci5i
bHVlKSwKLSAgICAgICAgY29sb3IuYWxwaGEKLSAgICB9OwotfQotCi1MaW5lYXJEaXNwbGF5UDM8
ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQot
ewotICAgIHJldHVybiB7Ci0gICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3Iu
cmVkKSwKLSAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChjb2xvci5ncmVlbiksCi0g
ICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IuYmx1ZSksCi0gICAgICAgIGNv
bG9yLmFscGhhCi0gICAgfTsKLX0KLQotRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25z
dCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICByZXR1cm4gewotICAgICAg
ICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9yLnJlZCksCi0gICAgICAgIGxpbmVhclRv
UkdCQ29sb3JDb21wb25lbnQoY29sb3IuZ3JlZW4pLAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9y
Q29tcG9uZW50KGNvbG9yLmJsdWUpLAotICAgICAgICBjb2xvci5hbHBoYQotICAgIH07Ci19Ci0K
LXN0YXRpYyBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0
PiYgY29sb3IpCi17Ci0gICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQgot
ICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9Y
WVpfTWF0cml4Lmh0bWwKLSAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6VG9MaW5l
YXJTUkdCTWF0cml4IHsKLSAgICAgICAgIDMuMjQwNDU0MmYsIC0xLjUzNzEzODVmLCAtMC40OTg1
MzE0ZiwKLSAgICAgICAgLTAuOTY5MjY2MGYsICAxLjg3NjAxMDhmLCAgMC4wNDE1NTYwZiwKLSAg
ICAgICAgIDAuMDU1NjQzNGYsIC0wLjIwNDAyNTlmLCAgMS4wNTcyMjUyZgotICAgIH07Ci0gICAg
cmV0dXJuIGFzTGluZWFyU1JHQkEoeHl6VG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29s
b3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwotfQotCi1zdGF0aWMgWFla
QTxmbG9hdD4gdG9YWVooY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICAv
LyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCi0gICAgLy8gaHR0cDovL3d3dy5i
cnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbAotICAg
IGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBsaW5lYXJTUkdCVG9YWVpNYXRyaXggewotICAg
ICAgICAwLjQxMjQ1NjRmLCAgMC4zNTc1NzYxZiwgIDAuMTgwNDM3NWYsCi0gICAgICAgIDAuMjEy
NjcyOWYsICAwLjcxNTE1MjJmLCAgMC4wNzIxNzUwZiwKLSAgICAgICAgMC4wMTkzMzM5ZiwgIDAu
MTE5MTkyMGYsICAwLjk1MDMwNDFmCi0gICAgfTsKLSAgICByZXR1cm4gYXNYWVpBKGxpbmVhclNS
R0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50
cyhjb2xvcikpKTsKLX0KLQotc3RhdGljIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJE
aXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQotewotICAgIC8vIGh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy9jc3MtY29sb3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQotICAgIGNvbnN0
ZXhwciBDb2xvck1hdHJpeDwzLCAzPiB4eXpUb0xpbmVhckRpc3BsYXlQM01hdHJpeCB7Ci0gICAg
ICAgICAyLjQ5MzQ5NjkxMTk0MTQyNWYsICAtMC45MzEzODM2MTc5MTkxMjM5ZiwgLTAuNDAyNzEw
Nzg0NDUwNzE2OGYsCi0gICAgICAgIC0wLjgyOTQ4ODk2OTU2MTU3NDdmLCAgMS43NjI2NjQwNjAz
MTgzNDYzZiwgIDAuMDIzNjI0Njg1ODQxOTQzNmYsCi0gICAgICAgICAwLjAzNTg0NTgzMDI0Mzc4
NDVmLCAtMC4wNzYxNzIzODkyNjgwNDE4ZiwgIDAuOTU2ODg0NTI0MDA3Njg3MmYKLSAgICB9Owot
ICAgIHJldHVybiBhc0xpbmVhckRpc3BsYXlQMyh4eXpUb0xpbmVhckRpc3BsYXlQM01hdHJpeC50
cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKLX0K
LQotc3RhdGljIFhZWkE8ZmxvYXQ+IHRvWFlaKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4m
IGNvbG9yKQotewotICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3IvI2Nv
bG9yLWNvbnZlcnNpb24tY29kZQotICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBsaW5l
YXJEaXNwbGF5UDNUb1hZWk1hdHJpeCB7Ci0gICAgICAgIDAuNDg2NTcwOTQ4NjQ4MjE2MmYsIDAu
MjY1NjY3NjkzMTY5MDkzMWYsIDAuMTk4MjE3Mjg1MjM0MzYzZiwKLSAgICAgICAgMC4yMjg5NzQ1
NjQwNjk3NDg4ZiwgMC42OTE3Mzg1MjE4MzY1MDY0ZiwgMC4wNzkyODY5MTQwOTM3NDVmLAotICAg
ICAgICAwLjBmLCAgICAgICAgICAgICAgICAwLjA0NTExMzM4MTg1ODkwMjZmLCAxLjA0Mzk0NDM2
ODkwMDk3NmYKLSAgICB9OwotICAgIHJldHVybiBhc1hZWkEobGluZWFyRGlzcGxheVAzVG9YWVpN
YXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3Ip
KSk7Ci19Ci0KLVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNv
bG9yKQotewotICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEodG9YWVoodG9MaW5lYXJE
aXNwbGF5UDMoY29sb3IpKSkpOwotfQotCi1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNv
bnN0IFNSR0JBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGlu
ZWFyRGlzcGxheVAzKHRvWFlaKHRvTGluZWFyU1JHQkEoY29sb3IpKSkpOwotfQotCiBmbG9hdCBs
aWdodG5lc3MoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBhdXRvIFtyLCBnLCBi
LCBhXSA9IGNvbG9yOwpAQCAtMTc0LDExMCArNjAsMTAgQEAgZmxvYXQgY29udHJhc3RSYXRpbyhj
b25zdCBTUkdCQTxmbG9hdD4mIAogICAgIHJldHVybiAobGlnaHRlckx1bWluYW5jZSArIDAuMDUp
IC8gKGRhcmtlckx1bWluYW5jZSArIDAuMDUpOwogfQogCi1IU0xBPGZsb2F0PiB0b0hTTEEoY29u
c3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKLXsKLSAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KLSAgICBhdXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBjb2xv
cjsKLQotICAgIGF1dG8gW21pbiwgbWF4XSA9IHN0ZDo6bWlubWF4KHsgciwgZywgYiB9KTsKLSAg
ICBmbG9hdCBjaHJvbWEgPSBtYXggLSBtaW47Ci0KLSAgICBmbG9hdCBodWU7Ci0gICAgaWYgKCFj
aHJvbWEpCi0gICAgICAgIGh1ZSA9IDA7Ci0gICAgZWxzZSBpZiAobWF4ID09IHIpCi0gICAgICAg
IGh1ZSA9ICg2MC4wZiAqICgoZyAtIGIpIC8gY2hyb21hKSkgKyAzNjAuMGY7Ci0gICAgZWxzZSBp
ZiAobWF4ID09IGcpCi0gICAgICAgIGh1ZSA9ICg2MC4wZiAqICgoYiAtIHIpIC8gY2hyb21hKSkg
KyAxMjAuMGY7Ci0gICAgZWxzZQotICAgICAgICBodWUgPSAoNjAuMGYgKiAoKHIgLSBnKSAvIGNo
cm9tYSkpICsgMjQwLjBmOwotCi0gICAgaWYgKGh1ZSA+PSAzNjAuMGYpCi0gICAgICAgIGh1ZSAt
PSAzNjAuMGY7Ci0KLSAgICBodWUgLz0gMzYwLjBmOwotCi0gICAgZmxvYXQgbGlnaHRuZXNzID0g
MC41ZiAqIChtYXggKyBtaW4pOwotICAgIGZsb2F0IHNhdHVyYXRpb247Ci0gICAgaWYgKCFjaHJv
bWEpCi0gICAgICAgIHNhdHVyYXRpb24gPSAwOwotICAgIGVsc2UgaWYgKGxpZ2h0bmVzcyA8PSAw
LjVmKQotICAgICAgICBzYXR1cmF0aW9uID0gKGNocm9tYSAvIChtYXggKyBtaW4pKTsKLSAgICBl
bHNlCi0gICAgICAgIHNhdHVyYXRpb24gPSAoY2hyb21hIC8gKDIuMGYgLSAobWF4ICsgbWluKSkp
OwotCi0gICAgcmV0dXJuIHsKLSAgICAgICAgaHVlLAotICAgICAgICBzYXR1cmF0aW9uLAotICAg
ICAgICBsaWdodG5lc3MsCi0gICAgICAgIGFscGhhCi0gICAgfTsKLX0KLQotLy8gSHVlIGlzIGlu
IHRoZSByYW5nZSAwLTYsIG90aGVyIGFyZ3MgaW4gMC0xLgotc3RhdGljIGZsb2F0IGNhbGNIdWUo
ZmxvYXQgdGVtcDEsIGZsb2F0IHRlbXAyLCBmbG9hdCBodWVWYWwpCi17Ci0gICAgaWYgKGh1ZVZh
bCA8IDAuMGYpCi0gICAgICAgIGh1ZVZhbCArPSA2LjBmOwotICAgIGVsc2UgaWYgKGh1ZVZhbCA+
PSA2LjBmKQotICAgICAgICBodWVWYWwgLT0gNi4wZjsKLSAgICBpZiAoaHVlVmFsIDwgMS4wZikK
LSAgICAgICAgcmV0dXJuIHRlbXAxICsgKHRlbXAyIC0gdGVtcDEpICogaHVlVmFsOwotICAgIGlm
IChodWVWYWwgPCAzLjBmKQotICAgICAgICByZXR1cm4gdGVtcDI7Ci0gICAgaWYgKGh1ZVZhbCA8
IDQuMGYpCi0gICAgICAgIHJldHVybiB0ZW1wMSArICh0ZW1wMiAtIHRlbXAxKSAqICg0LjBmIC0g
aHVlVmFsKTsKLSAgICByZXR1cm4gdGVtcDE7Ci19Ci0KLS8vIEV4cGxhbmF0aW9uIG9mIHRoaXMg
YWxnb3JpdGhtIGNhbiBiZSBmb3VuZCBpbiB0aGUgQ1NTIENvbG9yIDQgTW9kdWxlCi0vLyBzcGVj
aWZpY2F0aW9uIGF0IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3ItNC8jaHNsLXRv
LXJnYiB3aXRoCi0vLyBmdXJ0aGVyIGV4cGxhbmF0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8vZW4u
d2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZQotU1JHQkE8ZmxvYXQ+IHRvU1JHQkEo
Y29uc3QgSFNMQTxmbG9hdD4mIGNvbG9yKQotewotICAgIGF1dG8gW2h1ZSwgc2F0dXJhdGlvbiwg
bGlnaHRuZXNzLCBhbHBoYV0gPSBjb2xvcjsKLQotICAgIC8vIENvbnZlcnQgYmFjayB0byBSR0Iu
Ci0gICAgaWYgKCFzYXR1cmF0aW9uKSB7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBs
aWdodG5lc3MsCi0gICAgICAgICAgICBsaWdodG5lc3MsCi0gICAgICAgICAgICBsaWdodG5lc3Ms
Ci0gICAgICAgICAgICBhbHBoYQotICAgICAgICB9OwotICAgIH0KLSAgICAKLSAgICBmbG9hdCB0
ZW1wMiA9IGxpZ2h0bmVzcyA8PSAwLjVmID8gbGlnaHRuZXNzICogKDEuMGYgKyBzYXR1cmF0aW9u
KSA6IGxpZ2h0bmVzcyArIHNhdHVyYXRpb24gLSBsaWdodG5lc3MgKiBzYXR1cmF0aW9uOwotICAg
IGZsb2F0IHRlbXAxID0gMi4wZiAqIGxpZ2h0bmVzcyAtIHRlbXAyOwotICAgIAotICAgIGh1ZSAq
PSA2LjBmOyAvLyBjYWxjSHVlKCkgd2FudHMgaHVlIGluIHRoZSAwLTYgcmFuZ2UuCi0gICAgcmV0
dXJuIHsKLSAgICAgICAgY2FsY0h1ZSh0ZW1wMSwgdGVtcDIsIGh1ZSArIDIuMGYpLAotICAgICAg
ICBjYWxjSHVlKHRlbXAxLCB0ZW1wMiwgaHVlKSwKLSAgICAgICAgY2FsY0h1ZSh0ZW1wMSwgdGVt
cDIsIGh1ZSAtIDIuMGYpLAotICAgICAgICBhbHBoYQotICAgIH07Ci19Ci0KLVNSR0JBPGZsb2F0
PiB0b1NSR0JBKGNvbnN0IENNWUtBPGZsb2F0PiYgY29sb3IpCi17Ci0gICAgYXV0byBbYywgbSwg
eSwgaywgYV0gPSBjb2xvcjsKLSAgICBmbG9hdCBjb2xvcnMgPSAxIC0gazsKLSAgICBmbG9hdCBy
ID0gY29sb3JzICogKDEuMGYgLSBjKTsKLSAgICBmbG9hdCBnID0gY29sb3JzICogKDEuMGYgLSBt
KTsKLSAgICBmbG9hdCBiID0gY29sb3JzICogKDEuMGYgLSB5KTsKLSAgICByZXR1cm4geyByLCBn
LCBiLCBhIH07Ci19Ci0KIFNSR0JBPGZsb2F0PiBwcmVtdWx0aXBsaWVkKGNvbnN0IFNSR0JBPGZs
b2F0PiYgY29sb3IpCiB7CiAgICAgYXV0byBbciwgZywgYiwgYV0gPSBjb2xvcjsKLSAgICByZXR1
cm4gewotICAgICAgICByICogYSwKLSAgICAgICAgZyAqIGEsCi0gICAgICAgIGIgKiBhLAotICAg
ICAgICBhCi0gICAgfTsKKyAgICByZXR1cm4geyByICogYSwgZyAqIGEsIGIgKiBhLCBhIH07CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkocmV2aXNpb24gMjYzODkzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsMzIgKzMxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1w
bGF0ZTx0eXBlbmFtZT4gc3RydWN0IENNWUtBOwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBE
aXNwbGF5UDM7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhTTEE7Ci10ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IExpbmVhckRpc3BsYXlQMzsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3Qg
TGluZWFyU1JHQkE7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IFNSR0JBOwogCi0vLyAwLTEg
Y29tcG9uZW50cywgcmVzdWx0IGlzIGNsYW1wZWQuCi1mbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29t
cG9uZW50KGZsb2F0KTsKLWZsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoZmxvYXQpOwot
Ci1MaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBTUkdCQTxmbG9hdD4mKTsK
LVNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYpOwotCi1MaW5l
YXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9h
dD4mKTsKLURpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWFyRGlzcGxheVAz
PGZsb2F0PiYpOwotCi1TUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+
Jik7Ci1EaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwot
Ci1XRUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7
Ci1XRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBIU0xBPGZsb2F0PiYp
OwotCi1TUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBDTVlLQTxmbG9hdD4mKTsKLQotCiBmbG9h
dCBsaWdodG5lc3MoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBsdW1pbmFuY2UoY29uc3Qg
U1JHQkE8ZmxvYXQ+Jik7CiBmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IFNSR0JBPGZsb2F0PiYs
IGNvbnN0IFNSR0JBPGZsb2F0PiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAJKHJldmlzaW9uIDI2Mzg5MykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRDb2xvci5oIgogCiAj
aW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNsdWRl
ICJDb2xvclR5cGVzLmgiCi0jaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkocmV2aXNpb24gMjYzODkzKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiQml0bWFwSW1h
Z2UuaCIKICNpbmNsdWRlICJDYWlyb09wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJDb2xvci5oIgot
I2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5oIgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCShyZXZp
c2lvbiAyNjM4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3
ICszMyw2IEBACiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJDYWlyb09wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5oIgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVu
dE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJKHJldmlzaW9uIDI2Mzg5MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRkVEaXNwbGFjZW1lbnRNYXAuaCIKIAotI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVz
LmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSW1hZ2VEYXRhLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAJKHJldmlzaW9uIDI2Mzg5
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJGRUxpZ2h0aW5nLmgiCiAKLSNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5o
IgorI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZFTGlnaHRpbmdORU9O
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSm9icy5o
PgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBo
b2xvZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAkocmV2aXNpb24gMjYzODkzKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiRkVNb3JwaG9sb2d5LmgiCiAKICNp
bmNsdWRlICJDb2xvckNvbXBvbmVudHMuaCIKLSNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgog
I2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgPHd0
Zi9QYXJhbGxlbEpvYnMuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAJKHJldmlzaW9u
IDI2Mzg5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOSBAQAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJDb2xvckJsZW5kaW5nLmgiCisjaW5jbHVkZSAiQ29sb3JD
b252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiQ29sb3JNYXRyaXguaCIKLSNpbmNsdWRlICJDb2xvclV0
aWxpdGllcy5oIgorI2luY2x1ZGUgIkNvbG9yVHlwZXMuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZl
Y3QuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0U3RyZWFtLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI2
Mzg5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAKLSNpbmNsdWRlICJD
b2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCiAjaW5jbHVkZSAi
SW50U2l6ZS5oIgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0NvbG9yR3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3BwCShyZXZpc2lv
biAyNjM4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JH
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxOSArMjEsMTMgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDb2xvci5oIgogCi0jaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIK
ICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ29sb3I6OkNv
bG9yKGNvbnN0IEdka1JHQkEmIGMpCitDb2xvcjo6Q29sb3IoY29uc3QgR2RrUkdCQSYgY29sb3Ip
CiB7Ci0gICAgc2V0U2ltcGxlQ29sb3IobWFrZVNpbXBsZUNvbG9yKAotICAgICAgICBzdGF0aWNf
Y2FzdDxpbnQ+KGMucmVkICogMjU1KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihjLmdyZWVu
ICogMjU1KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihjLmJsdWUgKiAyNTUpLAotICAgICAg
ICBzdGF0aWNfY2FzdDxpbnQ+KGMuYWxwaGEgKiAyNTUpCi0gICAgKSk7CisgICAgc2V0U2ltcGxl
Q29sb3IobWFrZVNpbXBsZUNvbG9yKFNSR0JBIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLnJl
ZCksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci5ncmVlbiksIHN0YXRpY19jYXN0PGZsb2F0Pihj
b2xvci5ibHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLmFscGhhKSB9KSk7CiB9CiAKIENv
bG9yOjpvcGVyYXRvciBHZGtSR0JBKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Db2xvckRpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHAJKHJldmlzaW9u
IDI2Mzg5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Db2xvckRp
cmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgUExBVEZP
Uk0oV0lOKQogCi0jaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxkMmQxLmg+
CiAjaW5jbHVkZSA8ZDJkMV8xaGVscGVyLmg+CiAKQEAgLTM2LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBDb2xvcjo6Q29sb3IoRDJEMV9DT0xPUl9GIGNvbG9yKQogewotICAgIHNl
dFNpbXBsZUNvbG9yKG1ha2VTaW1wbGVDb2xvcihjb2xvci5yICogMjU1LCBjb2xvci5nICogMjU1
LCBjb2xvci5iICogMjU1LCBjb2xvci5hICogMjU1KSk7CisgICAgc2V0U2ltcGxlQ29sb3IobWFr
ZVNpbXBsZUNvbG9yKFNSR0JBIHsgY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSB9
KSk7CiB9CiAKIENvbG9yOjpvcGVyYXRvciBEMkQxX0NPTE9SX0YoKSBjb25zdApJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYz
ODkzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMjAtMDctMDMgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFNw
bGl0IGNvbG9yIGNvbnZlcnNpb24gZnVuY3Rpb25zIG91dCBvZiBDb2xvclV0aWxpdGllcy5oL2Nw
cCBpbnRvIHRoZWlyIG93biBmaWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEzODAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9yVGVzdHMuY3Bw
OgorICAgICAgICBVcGRhdGUgdG8gaW5jbHVkZSBDb2xvckNvbnZlcnNpb24uaCBhbmQgQ29sb3JU
eXBlcy5oIHJhdGhlciB0aGFuIENvbG9yVXRpbGl0aWVzLmgKKwogMjAyMC0wNy0wMiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVwZGF0ZSBN
YWMgQ01ha2UgYnVpbGQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9D
b2xvclRlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvQ29sb3JUZXN0cy5jcHAJKHJldmlzaW9uIDI2Mzg5MykKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsOCBAQAogCiAjaW5jbHVkZSAiVGVzdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3Iu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Db2xvckNvbnZlcnNpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yVHlwZXMuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>