<?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>51411</bug_id>
          
          <creation_ts>2010-12-21 11:46:19 -0800</creation_ts>
          <short_desc>Cleanup SVG code according to the webkit style rules 1</short_desc>
          <delta_ts>2010-12-22 05:55:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>kling</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>325115</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-12-21 11:46:19 -0800</bug_when>
    <thetext>I plan to cleanup the SVG code according to the WebKit style rules. It&apos;s often hard to review patches, because our current reviewing rules force a commiter to cleanup existing code for every fix. check-webkit-style mentions style problems in 149 files in the SVG folder. I&apos;d like to reduce it as much as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325157</commentid>
    <comment_count>1</comment_count>
      <attachid>77144</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-12-21 12:58:23 -0800</bug_when>
    <thetext>Created attachment 77144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325420</commentid>
    <comment_count>2</comment_count>
      <attachid>77144</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-12-22 01:00:44 -0800</bug_when>
    <thetext>Comment on attachment 77144
Patch

Excellent, thanks for starting this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325442</commentid>
    <comment_count>3</comment_count>
      <attachid>77144</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-12-22 04:25:47 -0800</bug_when>
    <thetext>Comment on attachment 77144
Patch

Clearing flags on attachment: 77144

Committed r74472: &lt;http://trac.webkit.org/changeset/74472&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325443</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-12-22 04:25:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325460</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-22 05:38:54 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74472 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
editing/selection/extend-by-character-004.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325470</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-12-22 05:55:24 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; http://trac.webkit.org/changeset/74472 might have broken GTK Linux 64-bit Debug
&gt; The following tests are not passing:
&gt; editing/selection/extend-by-character-004.html

unlikely that it is this patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77144</attachid>
            <date>2010-12-21 12:58:23 -0800</date>
            <delta_ts>2010-12-22 04:25:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51411-20101221215819.patch</filename>
            <type>text/plain</type>
            <size>66388</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDQyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMzIEBACisyMDEwLTEyLTIxICBEaXJrIFNjaHVsemUgIDxrcml0QHdiZWtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xl
YW51cCBTVkcgY29kZSBhY2NvcmRpbmcgdG8gdGhlIHdlYmtpdCBzdHlsZSBydWxlcyAxCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTQxMQorCisgICAg
ICAgIEZpcnN0IHBhdGNoIHRvIGZpeCBpbmRlbnRpb24gYW5kIG90aGVyIHN0eWxlIGlzc3VlcyBh
Y2NvcmRpbmcgdG8gdGhlIFdlYktpdCBzdHlsZSBydWxlcyBpbiB0aGUgU1ZHIGNvZGUuCisKKyAg
ICAgICAgTm8gY2hhbmdlIG9mIGZ1bmN0aW9uYWxpdHkuIAorCisgICAgICAgICogc3ZnL0NvbG9y
RGlzdGFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JEaXN0YW5jZTo6aXNaZXJvKToK
KyAgICAgICAgKiBzdmcvQ29sb3JEaXN0YW5jZS5oOgorICAgICAgICAqIHN2Zy9FbGVtZW50VGlt
ZUNvbnRyb2wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRUaW1lQ29udHJvbDo6fkVsZW1l
bnRUaW1lQ29udHJvbCk6CisgICAgICAgICogc3ZnL0xpbmVhckdyYWRpZW50QXR0cmlidXRlcy5o
OgorICAgICAgICAoV2ViQ29yZTo6TGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzOjpMaW5lYXJHcmFk
aWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGluZWFyR3JhZGllbnRBdHRyaWJ1
dGVzOjp4MSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXM6Onkx
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckdyYWRpZW50QXR0cmlidXRlczo6eDIpOgorICAg
ICAgICAoV2ViQ29yZTo6TGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzOjp5Mik6CisgICAgICAgIChX
ZWJDb3JlOjpMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXM6OnNldFgxKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVhckdyYWRpZW50QXR0cmlidXRlczo6c2V0WTEpOgorICAgICAgICAoV2ViQ29yZTo6
TGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzOjpzZXRYMik6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
YXJHcmFkaWVudEF0dHJpYnV0ZXM6OnNldFkyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckdy
YWRpZW50QXR0cmlidXRlczo6aGFzWDEpOgorICAgICAgICAoV2ViQ29yZTo6TGluZWFyR3JhZGll
bnRBdHRyaWJ1dGVzOjpoYXNZMSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lYXJHcmFkaWVudEF0
dHJpYnV0ZXM6Omhhc1gyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckdyYWRpZW50QXR0cmli
dXRlczo6aGFzWTIpOgorICAgICAgICAqIHN2Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJhZGlhbEdyYWRpZW50QXR0cmlidXRlczo6UmFkaWFsR3JhZGll
bnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlhbEdyYWRpZW50QXR0cmlidXRl
czo6Y3gpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzOjpjeSk6
CisgICAgICAgIChXZWJDb3JlOjpSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXM6OnIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzOjpmeCk6CisgICAgICAgIChXZWJD
b3JlOjpSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXM6OmZ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJh
ZGlhbEdyYWRpZW50QXR0cmlidXRlczo6c2V0Q3gpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaWFs
R3JhZGllbnRBdHRyaWJ1dGVzOjpzZXRDeSk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpYWxHcmFk
aWVudEF0dHJpYnV0ZXM6OnNldFIpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaWFsR3JhZGllbnRB
dHRyaWJ1dGVzOjpzZXRGeCk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpYWxHcmFkaWVudEF0dHJp
YnV0ZXM6OnNldEZ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlhbEdyYWRpZW50QXR0cmlidXRl
czo6aGFzQ3gpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzOjpo
YXNDeSk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXM6Omhhc1Ip
OgorICAgICAgICAoV2ViQ29yZTo6UmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzOjpoYXNGeCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXM6Omhhc0Z5KToKKyAgICAg
ICAgKiBzdmcvU1ZHQW5nbGUuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlQ29sb3JFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW5jZSk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUtleVRpbWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmN1cnJlbnRWYWx1ZXNGb3JW
YWx1ZXNBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6
dXBkYXRlQW5pbWF0aW9uKToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR0NvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xv
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpjcmVhdGVDdXJyZW50Q29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6OmNvbG9yVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdDb2xvcjo6c2V0UkdCQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29s
b3I6OmNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjppc1NWR0NvbG9yKToKKyAg
ICAgICAgKiBzdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdD
dXJzb3JFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHQ3Vy
c29yRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdEZXNjRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRGVzY0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIHN2
Zy9TVkdEb2N1bWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rv
Y3VtZW50Ojppc1NWR0RvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aXNTdHlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudDo6aXNTdHlsZWRUcmFuc2Zvcm1hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ6OmlzU3R5bGVkTG9jYXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1l
bnQ6OmlzU1ZHKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzRmlsdGVyRWZmZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzR3JhZGllbnRTdG9wKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzVGV4dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c3VwcGxlbWVu
dGFsVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmludmFsaWRhdGVT
VkdBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6bmVlZHNQZW5kaW5nUmVzb3Vy
Y2VIYW5kbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpidWlsZFBlbmRpbmdS
ZXNvdXJjZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudEluc3RhbmNlOjpjb3JyZXNwb25kaW5nRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6c2hhZG93VHJlZUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpwYXJlbnROb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6cHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpmaXJzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0VsZW1lbnRJbnN0YW5jZTo6bGFzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Vs
ZW1lbnRJbnN0YW5jZTo6b3duZXJEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50SW5zdGFuY2U6OnRvTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFu
Y2U6OnRvU1ZHRWxlbWVudEluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJ
bnN0YW5jZTo6aGFzQ2hpbGROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5z
dGFuY2U6OnNldEZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3Rh
bmNlOjpzZXRMYXN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNl
OjpzZXROZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6
OnNldFByZXZpb3VzU2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFu
Y2U6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5j
ZTo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZUxp
c3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZUxpc3Q6OmNyZWF0ZSk6
CisgICAgICAgICogc3ZnL1NWR0V4Y2VwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRXhj
ZXB0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRXhjZXB0aW9uOjpTVkdFeGNl
cHRpb24pOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQpOgor
ICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaW5kTGlnaHRzKToKKyAgICAg
ICAgKiBzdmcvU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RW1Vbml0VG9Q
aXhlbCk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNEaXJlY3RSZWZlcmVuY2UpOgorCiAyMDEwLTEyLTIxICBZb25nIExpICA8eW9saUByaW0u
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL3N2
Zy9Db2xvckRpc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9Db2xvckRpc3Rh
bmNlLmNwcAkocmV2aXNpb24gNzQzOTApCisrKyBXZWJDb3JlL3N2Zy9Db2xvckRpc3RhbmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiQ29sb3JEaXN0YW5jZS5oIgorCiAjaW5jbHVkZSAi
Q29sb3IuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC03OCw3ICs3OSw3IEBA
IENvbG9yIENvbG9yRGlzdGFuY2U6OmFkZFRvQ29sb3JBbmRDbGFtcCgKIAogYm9vbCBDb2xvckRp
c3RhbmNlOjppc1plcm8oKSBjb25zdAogewotICAgIHJldHVybiAobV9yZWREaWZmID09IDAgJiYg
bV9ibHVlRGlmZiA9PSAwICYmIG1fZ3JlZW5EaWZmID09IDApOworICAgIHJldHVybiAhbV9yZWRE
aWZmICYmICFtX2JsdWVEaWZmICYmICFtX2dyZWVuRGlmZjsKIH0KIAogZmxvYXQgQ29sb3JEaXN0
YW5jZTo6ZGlzdGFuY2UoKSBjb25zdApJbmRleDogV2ViQ29yZS9zdmcvQ29sb3JEaXN0YW5jZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0NvbG9yRGlzdGFuY2UuaAkocmV2aXNpb24gNzQz
OTApCisrKyBXZWJDb3JlL3N2Zy9Db2xvckRpc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDI4ICsyMywyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi0gICAgY2xhc3MgQ29s
b3I7CitjbGFzcyBDb2xvcjsKKyAgICAKK2NsYXNzIENvbG9yRGlzdGFuY2UgeworcHVibGljOgor
ICAgIENvbG9yRGlzdGFuY2UoKTsKKyAgICBDb2xvckRpc3RhbmNlKGNvbnN0IENvbG9yJiBmcm9t
Q29sb3IsIGNvbnN0IENvbG9yJiB0b0NvbG9yKTsKKyAgICBDb2xvckRpc3RhbmNlKGludCByZWRE
aWZmLCBpbnQgYmx1ZURpZmYsIGludCBncmVlbkRpZmYpOwogCi0gICAgY2xhc3MgQ29sb3JEaXN0
YW5jZSB7Ci0gICAgcHVibGljOgotICAgICAgICBDb2xvckRpc3RhbmNlKCk7Ci0gICAgICAgIENv
bG9yRGlzdGFuY2UoY29uc3QgQ29sb3ImIGZyb21Db2xvciwgY29uc3QgQ29sb3ImIHRvQ29sb3Ip
OwotICAgICAgICBDb2xvckRpc3RhbmNlKGludCByZWREaWZmLCBpbnQgYmx1ZURpZmYsIGludCBn
cmVlbkRpZmYpOwotICAgICAgICAKLSAgICAgICAgQ29sb3JEaXN0YW5jZSBzY2FsZWREaXN0YW5j
ZShmbG9hdCBzY2FsZUZhY3RvcikgY29uc3Q7Ci0gICAgICAgIENvbG9yIGFkZFRvQ29sb3JBbmRD
bGFtcChjb25zdCBDb2xvciYpIGNvbnN0OworICAgIENvbG9yRGlzdGFuY2Ugc2NhbGVkRGlzdGFu
Y2UoZmxvYXQgc2NhbGVGYWN0b3IpIGNvbnN0OworICAgIENvbG9yIGFkZFRvQ29sb3JBbmRDbGFt
cChjb25zdCBDb2xvciYpIGNvbnN0OwogICAgICAgICAKLSAgICAgICAgc3RhdGljIENvbG9yIGFk
ZENvbG9yc0FuZENsYW1wKGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImKTsKKyAgICBzdGF0aWMg
Q29sb3IgYWRkQ29sb3JzQW5kQ2xhbXAoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwogICAg
ICAgICAKLSAgICAgICAgYm9vbCBpc1plcm8oKSBjb25zdDsKLSAgICAgICAgCi0gICAgICAgIGZs
b2F0IGRpc3RhbmNlKCkgY29uc3Q7CisgICAgYm9vbCBpc1plcm8oKSBjb25zdDsKKworICAgIGZs
b2F0IGRpc3RhbmNlKCkgY29uc3Q7CiAgICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHNo
b3J0IG1fcmVkRGlmZjsKLSAgICAgICAgc2hvcnQgbV9ncmVlbkRpZmY7Ci0gICAgICAgIHNob3J0
IG1fYmx1ZURpZmY7Ci0gICAgfTsKK3ByaXZhdGU6CisgICAgc2hvcnQgbV9yZWREaWZmOworICAg
IHNob3J0IG1fZ3JlZW5EaWZmOworICAgIHNob3J0IG1fYmx1ZURpZmY7Cit9OwogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUvc3ZnL0VsZW1lbnRUaW1lQ29udHJvbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0VsZW1lbnRUaW1lQ29udHJvbC5oCShyZXZpc2lv
biA3NDM5MCkKKysrIFdlYkNvcmUvc3ZnL0VsZW1lbnRUaW1lQ29udHJvbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxNCArMzMsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xh
c3MgRWxlbWVudFRpbWVDb250cm9sIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkVs
ZW1lbnRUaW1lQ29udHJvbCgpIHt9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBiZWdpbkVsZW1lbnQo
KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBiZWdpbkVsZW1lbnRBdChmbG9hdCBvZmZzZXQp
ID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGVuZEVsZW1lbnQoKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBlbmRFbGVtZW50QXQoZmxvYXQgb2Zmc2V0KSA9IDA7Ci0gICAgfTsKK2NsYXNz
IEVsZW1lbnRUaW1lQ29udHJvbCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RWxlbWVudFRpbWVD
b250cm9sKCkge30KKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5FbGVtZW50KCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBiZWdpbkVsZW1lbnRBdChmbG9hdCBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZW5kRWxlbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kRWxlbWVudEF0KGZs
b2F0IG9mZnNldCkgPSAwOworfTsKICAgICAgICAgCiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL0xp
bmVhckdyYWRpZW50QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0xpbmVh
ckdyYWRpZW50QXR0cmlidXRlcy5oCShyZXZpc2lvbiA3NDM5MCkKKysrIFdlYkNvcmUvc3ZnL0xp
bmVhckdyYWRpZW50QXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw0NyArMjQsNDcg
QEAKICNpbmNsdWRlICJHcmFkaWVudEF0dHJpYnV0ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotICAgIHN0cnVjdCBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMgOiBHcmFkaWVudEF0dHJpYnV0
ZXMgewotICAgICAgICBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMoKQotICAgICAgICAgICAgOiBt
X3gxKCkKLSAgICAgICAgICAgICwgbV95MSgpCi0gICAgICAgICAgICAsIG1feDIoTGVuZ3RoTW9k
ZVdpZHRoLCAiMTAwJSIpCi0gICAgICAgICAgICAsIG1feTIoKQotICAgICAgICAgICAgLCBtX3gx
U2V0KGZhbHNlKQotICAgICAgICAgICAgLCBtX3kxU2V0KGZhbHNlKQotICAgICAgICAgICAgLCBt
X3gyU2V0KGZhbHNlKQotICAgICAgICAgICAgLCBtX3kyU2V0KGZhbHNlKQotICAgICAgICB7Ci0g
ICAgICAgIH0KLQotICAgICAgICBTVkdMZW5ndGggeDEoKSBjb25zdCB7IHJldHVybiBtX3gxOyB9
Ci0gICAgICAgIFNWR0xlbmd0aCB5MSgpIGNvbnN0IHsgcmV0dXJuIG1feTE7IH0KLSAgICAgICAg
U1ZHTGVuZ3RoIHgyKCkgY29uc3QgeyByZXR1cm4gbV94MjsgfQotICAgICAgICBTVkdMZW5ndGgg
eTIoKSBjb25zdCB7IHJldHVybiBtX3kyOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRYMShjb25zdCBT
VkdMZW5ndGgmIHZhbHVlKSB7IG1feDEgPSB2YWx1ZTsgbV94MVNldCA9IHRydWU7IH0KLSAgICAg
ICAgdm9pZCBzZXRZMShjb25zdCBTVkdMZW5ndGgmIHZhbHVlKSB7IG1feTEgPSB2YWx1ZTsgbV95
MVNldCA9IHRydWU7IH0KLSAgICAgICAgdm9pZCBzZXRYMihjb25zdCBTVkdMZW5ndGgmIHZhbHVl
KSB7IG1feDIgPSB2YWx1ZTsgbV94MlNldCA9IHRydWU7IH0KLSAgICAgICAgdm9pZCBzZXRZMihj
b25zdCBTVkdMZW5ndGgmIHZhbHVlKSB7IG1feTIgPSB2YWx1ZTsgbV95MlNldCA9IHRydWU7IH0K
LQotICAgICAgICBib29sIGhhc1gxKCkgY29uc3QgeyByZXR1cm4gbV94MVNldDsgfQotICAgICAg
ICBib29sIGhhc1kxKCkgY29uc3QgeyByZXR1cm4gbV95MVNldDsgfQotICAgICAgICBib29sIGhh
c1gyKCkgY29uc3QgeyByZXR1cm4gbV94MlNldDsgfQotICAgICAgICBib29sIGhhc1kyKCkgY29u
c3QgeyByZXR1cm4gbV95MlNldDsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gUHJvcGVy
dGllcwotICAgICAgICBTVkdMZW5ndGggbV94MTsKLSAgICAgICAgU1ZHTGVuZ3RoIG1feTE7Ci0g
ICAgICAgIFNWR0xlbmd0aCBtX3gyOwotICAgICAgICBTVkdMZW5ndGggbV95MjsKLQotICAgICAg
ICAvLyBQcm9wZXJ0eSBzdGF0ZXMKLSAgICAgICAgYm9vbCBtX3gxU2V0IDogMTsKLSAgICAgICAg
Ym9vbCBtX3kxU2V0IDogMTsKLSAgICAgICAgYm9vbCBtX3gyU2V0IDogMTsKLSAgICAgICAgYm9v
bCBtX3kyU2V0IDogMTsKLSAgICB9Oworc3RydWN0IExpbmVhckdyYWRpZW50QXR0cmlidXRlcyA6
IEdyYWRpZW50QXR0cmlidXRlcyB7CisgICAgTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzKCkKKyAg
ICAgICAgOiBtX3gxKCkKKyAgICAgICAgLCBtX3kxKCkKKyAgICAgICAgLCBtX3gyKExlbmd0aE1v
ZGVXaWR0aCwgIjEwMCUiKQorICAgICAgICAsIG1feTIoKQorICAgICAgICAsIG1feDFTZXQoZmFs
c2UpCisgICAgICAgICwgbV95MVNldChmYWxzZSkKKyAgICAgICAgLCBtX3gyU2V0KGZhbHNlKQor
ICAgICAgICAsIG1feTJTZXQoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIFNWR0xlbmd0aCB4
MSgpIGNvbnN0IHsgcmV0dXJuIG1feDE7IH0KKyAgICBTVkdMZW5ndGggeTEoKSBjb25zdCB7IHJl
dHVybiBtX3kxOyB9CisgICAgU1ZHTGVuZ3RoIHgyKCkgY29uc3QgeyByZXR1cm4gbV94MjsgfQor
ICAgIFNWR0xlbmd0aCB5MigpIGNvbnN0IHsgcmV0dXJuIG1feTI7IH0KKworICAgIHZvaWQgc2V0
WDEoY29uc3QgU1ZHTGVuZ3RoJiB2YWx1ZSkgeyBtX3gxID0gdmFsdWU7IG1feDFTZXQgPSB0cnVl
OyB9CisgICAgdm9pZCBzZXRZMShjb25zdCBTVkdMZW5ndGgmIHZhbHVlKSB7IG1feTEgPSB2YWx1
ZTsgbV95MVNldCA9IHRydWU7IH0KKyAgICB2b2lkIHNldFgyKGNvbnN0IFNWR0xlbmd0aCYgdmFs
dWUpIHsgbV94MiA9IHZhbHVlOyBtX3gyU2V0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0WTIoY29u
c3QgU1ZHTGVuZ3RoJiB2YWx1ZSkgeyBtX3kyID0gdmFsdWU7IG1feTJTZXQgPSB0cnVlOyB9CisK
KyAgICBib29sIGhhc1gxKCkgY29uc3QgeyByZXR1cm4gbV94MVNldDsgfQorICAgIGJvb2wgaGFz
WTEoKSBjb25zdCB7IHJldHVybiBtX3kxU2V0OyB9CisgICAgYm9vbCBoYXNYMigpIGNvbnN0IHsg
cmV0dXJuIG1feDJTZXQ7IH0KKyAgICBib29sIGhhc1kyKCkgY29uc3QgeyByZXR1cm4gbV95MlNl
dDsgfQorCitwcml2YXRlOgorICAgIC8vIFByb3BlcnRpZXMKKyAgICBTVkdMZW5ndGggbV94MTsK
KyAgICBTVkdMZW5ndGggbV95MTsKKyAgICBTVkdMZW5ndGggbV94MjsKKyAgICBTVkdMZW5ndGgg
bV95MjsKKworICAgIC8vIFByb3BlcnR5IHN0YXRlcworICAgIGJvb2wgbV94MVNldCA6IDE7Cisg
ICAgYm9vbCBtX3kxU2V0IDogMTsKKyAgICBib29sIG1feDJTZXQgOiAxOworICAgIGJvb2wgbV95
MlNldCA6IDE7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUv
c3ZnL1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCShyZXZpc2lvbiA3NDM5MCkKKysrIFdlYkNvcmUv
c3ZnL1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw1NCAr
MjQsNTQgQEAKICNpbmNsdWRlICJHcmFkaWVudEF0dHJpYnV0ZXMuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotICAgIHN0cnVjdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMgOiBHcmFkaWVudEF0
dHJpYnV0ZXMgewotICAgICAgICBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMoKQotICAgICAgICAg
ICAgOiBtX2N4KExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpCi0gICAgICAgICAgICAsIG1fY3koTGVu
Z3RoTW9kZVdpZHRoLCAiNTAlIikKLSAgICAgICAgICAgICwgbV9yKExlbmd0aE1vZGVXaWR0aCwg
IjUwJSIpCi0gICAgICAgICAgICAsIG1fZngoKQotICAgICAgICAgICAgLCBtX2Z5KCkKLSAgICAg
ICAgICAgICwgbV9jeFNldChmYWxzZSkKLSAgICAgICAgICAgICwgbV9jeVNldChmYWxzZSkKLSAg
ICAgICAgICAgICwgbV9yU2V0KGZhbHNlKQotICAgICAgICAgICAgLCBtX2Z4U2V0KGZhbHNlKQot
ICAgICAgICAgICAgLCBtX2Z5U2V0KGZhbHNlKSAKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAg
ICAgICAgU1ZHTGVuZ3RoIGN4KCkgY29uc3QgeyByZXR1cm4gbV9jeDsgfQotICAgICAgICBTVkdM
ZW5ndGggY3koKSBjb25zdCB7IHJldHVybiBtX2N5OyB9Ci0gICAgICAgIFNWR0xlbmd0aCByKCkg
Y29uc3QgeyByZXR1cm4gbV9yOyB9Ci0gICAgICAgIFNWR0xlbmd0aCBmeCgpIGNvbnN0IHsgcmV0
dXJuIG1fZng7IH0KLSAgICAgICAgU1ZHTGVuZ3RoIGZ5KCkgY29uc3QgeyByZXR1cm4gbV9meTsg
fQotCi0gICAgICAgIHZvaWQgc2V0Q3goY29uc3QgU1ZHTGVuZ3RoJiB2YWx1ZSkgeyBtX2N4ID0g
dmFsdWU7IG1fY3hTZXQgPSB0cnVlOyB9Ci0gICAgICAgIHZvaWQgc2V0Q3koY29uc3QgU1ZHTGVu
Z3RoJiB2YWx1ZSkgeyBtX2N5ID0gdmFsdWU7IG1fY3lTZXQgPSB0cnVlOyB9Ci0gICAgICAgIHZv
aWQgc2V0Uihjb25zdCBTVkdMZW5ndGgmIHZhbHVlKSB7IG1fciA9IHZhbHVlOyBtX3JTZXQgPSB0
cnVlOyB9Ci0gICAgICAgIHZvaWQgc2V0RngoY29uc3QgU1ZHTGVuZ3RoJiB2YWx1ZSkgeyBtX2Z4
ID0gdmFsdWU7IG1fZnhTZXQgPSB0cnVlOyB9Ci0gICAgICAgIHZvaWQgc2V0RnkoY29uc3QgU1ZH
TGVuZ3RoJiB2YWx1ZSkgeyBtX2Z5ID0gdmFsdWU7IG1fZnlTZXQgPSB0cnVlOyB9Ci0KLSAgICAg
ICAgYm9vbCBoYXNDeCgpIGNvbnN0IHsgcmV0dXJuIG1fY3hTZXQ7IH0KLSAgICAgICAgYm9vbCBo
YXNDeSgpIGNvbnN0IHsgcmV0dXJuIG1fY3lTZXQ7IH0KLSAgICAgICAgYm9vbCBoYXNSKCkgY29u
c3QgeyByZXR1cm4gbV9yU2V0OyB9Ci0gICAgICAgIGJvb2wgaGFzRngoKSBjb25zdCB7IHJldHVy
biBtX2Z4U2V0OyB9Ci0gICAgICAgIGJvb2wgaGFzRnkoKSBjb25zdCB7IHJldHVybiBtX2Z5U2V0
OyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICAvLyBQcm9wZXJ0aWVzCi0gICAgICAgIFNWR0xl
bmd0aCBtX2N4OwotICAgICAgICBTVkdMZW5ndGggbV9jeTsKLSAgICAgICAgU1ZHTGVuZ3RoIG1f
cjsKLSAgICAgICAgU1ZHTGVuZ3RoIG1fZng7Ci0gICAgICAgIFNWR0xlbmd0aCBtX2Z5OwotCi0g
ICAgICAgIC8vIFByb3BlcnR5IHN0YXRlcwotICAgICAgICBib29sIG1fY3hTZXQgOiAxOwotICAg
ICAgICBib29sIG1fY3lTZXQgOiAxOwotICAgICAgICBib29sIG1fclNldCA6IDE7Ci0gICAgICAg
IGJvb2wgbV9meFNldCA6IDE7Ci0gICAgICAgIGJvb2wgbV9meVNldCA6IDE7Ci0gICAgfTsKK3N0
cnVjdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMgOiBHcmFkaWVudEF0dHJpYnV0ZXMgeworICAg
IFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcygpCisgICAgICAgIDogbV9jeChMZW5ndGhNb2RlV2lk
dGgsICI1MCUiKQorICAgICAgICAsIG1fY3koTGVuZ3RoTW9kZVdpZHRoLCAiNTAlIikKKyAgICAg
ICAgLCBtX3IoTGVuZ3RoTW9kZVdpZHRoLCAiNTAlIikKKyAgICAgICAgLCBtX2Z4KCkKKyAgICAg
ICAgLCBtX2Z5KCkKKyAgICAgICAgLCBtX2N4U2V0KGZhbHNlKQorICAgICAgICAsIG1fY3lTZXQo
ZmFsc2UpCisgICAgICAgICwgbV9yU2V0KGZhbHNlKQorICAgICAgICAsIG1fZnhTZXQoZmFsc2Up
CisgICAgICAgICwgbV9meVNldChmYWxzZSkgCisgICAgeworICAgIH0KKworICAgIFNWR0xlbmd0
aCBjeCgpIGNvbnN0IHsgcmV0dXJuIG1fY3g7IH0KKyAgICBTVkdMZW5ndGggY3koKSBjb25zdCB7
IHJldHVybiBtX2N5OyB9CisgICAgU1ZHTGVuZ3RoIHIoKSBjb25zdCB7IHJldHVybiBtX3I7IH0K
KyAgICBTVkdMZW5ndGggZngoKSBjb25zdCB7IHJldHVybiBtX2Z4OyB9CisgICAgU1ZHTGVuZ3Ro
IGZ5KCkgY29uc3QgeyByZXR1cm4gbV9meTsgfQorCisgICAgdm9pZCBzZXRDeChjb25zdCBTVkdM
ZW5ndGgmIHZhbHVlKSB7IG1fY3ggPSB2YWx1ZTsgbV9jeFNldCA9IHRydWU7IH0KKyAgICB2b2lk
IHNldEN5KGNvbnN0IFNWR0xlbmd0aCYgdmFsdWUpIHsgbV9jeSA9IHZhbHVlOyBtX2N5U2V0ID0g
dHJ1ZTsgfQorICAgIHZvaWQgc2V0Uihjb25zdCBTVkdMZW5ndGgmIHZhbHVlKSB7IG1fciA9IHZh
bHVlOyBtX3JTZXQgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRGeChjb25zdCBTVkdMZW5ndGgmIHZh
bHVlKSB7IG1fZnggPSB2YWx1ZTsgbV9meFNldCA9IHRydWU7IH0KKyAgICB2b2lkIHNldEZ5KGNv
bnN0IFNWR0xlbmd0aCYgdmFsdWUpIHsgbV9meSA9IHZhbHVlOyBtX2Z5U2V0ID0gdHJ1ZTsgfQor
CisgICAgYm9vbCBoYXNDeCgpIGNvbnN0IHsgcmV0dXJuIG1fY3hTZXQ7IH0KKyAgICBib29sIGhh
c0N5KCkgY29uc3QgeyByZXR1cm4gbV9jeVNldDsgfQorICAgIGJvb2wgaGFzUigpIGNvbnN0IHsg
cmV0dXJuIG1fclNldDsgfQorICAgIGJvb2wgaGFzRngoKSBjb25zdCB7IHJldHVybiBtX2Z4U2V0
OyB9CisgICAgYm9vbCBoYXNGeSgpIGNvbnN0IHsgcmV0dXJuIG1fZnlTZXQ7IH0KKworcHJpdmF0
ZToKKyAgICAvLyBQcm9wZXJ0aWVzCisgICAgU1ZHTGVuZ3RoIG1fY3g7CisgICAgU1ZHTGVuZ3Ro
IG1fY3k7CisgICAgU1ZHTGVuZ3RoIG1fcjsKKyAgICBTVkdMZW5ndGggbV9meDsKKyAgICBTVkdM
ZW5ndGggbV9meTsKKworICAgIC8vIFByb3BlcnR5IHN0YXRlcworICAgIGJvb2wgbV9jeFNldCA6
IDE7CisgICAgYm9vbCBtX2N5U2V0IDogMTsKKyAgICBib29sIG1fclNldCA6IDE7CisgICAgYm9v
bCBtX2Z4U2V0IDogMTsKKyAgICBib29sIG1fZnlTZXQgOiAxOworfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmdsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHQW5nbGUuY3BwCShyZXZpc2lvbiA3NDM5MCkKKysrIFdlYkNvcmUv
c3ZnL1NWR0FuZ2xlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQAogI2luY2x1
ZGUgIlNWR0FuZ2xlLmgiCiAKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oCShy
ZXZpc2lvbiA3NDM5MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTQgKzI3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIC8vIFNWR0FuaW1hdGVFbGVtZW50IGltcGxlbWVudHMgc3VwZXJzZXQgb2YgdGhlIGZ1
bmN0aW9uYWxpdHkuCi0gICAgY2xhc3MgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCA6IHB1YmxpYyBT
VkdBbmltYXRlRWxlbWVudCB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTVkdBbmltYXRlQ29sb3JFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBTVkdBbmltYXRlQ29sb3JFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAgIH07CisvLyBTVkdBbmltYXRl
RWxlbWVudCBpbXBsZW1lbnRzIHN1cGVyc2V0IG9mIHRoZSBmdW5jdGlvbmFsaXR5LgorY2xhc3Mg
U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCA6IHB1YmxpYyBTVkdBbmltYXRlRWxlbWVudCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIFNWR0Fu
aW1hdGVDb2xvckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Cit9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDc0MzkwKQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsOCArMTY1LDkgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVu
dDo6Y2FsY3VsYXRlQW5pbWF0ZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJl
dHVybjsKLSAgICB9IGVsc2UgaWYgKG1fcHJvcGVydHlUeXBlID09IFBvaW50c1Byb3BlcnR5KSB7
Ci0gICAgICAgIGlmIChwZXJjZW50YWdlID09IDApCisgICAgfQorICAgIGlmIChtX3Byb3BlcnR5
VHlwZSA9PSBQb2ludHNQcm9wZXJ0eSkgeworICAgICAgICBpZiAoIXBlcmNlbnRhZ2UpCiAgICAg
ICAgICAgICByZXN1bHRzLT5tX2FuaW1hdGVkUG9pbnRzID0gbV9mcm9tUG9pbnRzOwogICAgICAg
ICBlbHNlIGlmIChwZXJjZW50YWdlID09IDEuZikKICAgICAgICAgICAgIHJlc3VsdHMtPm1fYW5p
bWF0ZWRQb2ludHMgPSBtX3RvUG9pbnRzOwpAQCAtMzE4LDcgKzMxOSw4IEBAIGZsb2F0IFNWR0Fu
aW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW4KICAgICAgICAgaWYgKCFwYXJzZU51bWJlclZh
bHVlQW5kVW5pdCh0b1N0cmluZywgdG8sIHVuaXQpKQogICAgICAgICAgICAgcmV0dXJuIC0xLmY7
CiAgICAgICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGZhYnModG8gLSBmcm9tKSk7
Ci0gICAgfSBlbHNlIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBDb2xvclByb3BlcnR5KSB7CisgICAg
fQorICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBDb2xvclByb3BlcnR5KSB7CiAgICAgICAgIENv
bG9yIGZyb20gPSBTVkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcoZnJvbVN0cmluZyk7
CiAgICAgICAgIGlmICghZnJvbS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTEuZjsK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkocmV2aXNpb24gNzQzOTApCisrKyBXZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw0NyArMzIsNDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU1ZHUGF0aFNlZ0xpc3Q7Citj
bGFzcyBTVkdQYXRoU2VnTGlzdDsKIAotICAgIGNsYXNzIFNWR0FuaW1hdGVFbGVtZW50IDogcHVi
bGljIFNWR0FuaW1hdGlvbkVsZW1lbnQgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U1ZHQW5pbWF0ZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKLQotICAgICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlRWxlbWVudCgpOwotCi0g
ICAgcHJvdGVjdGVkOgotICAgICAgICBTVkdBbmltYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKLSAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlc2V0VG9CYXNl
VmFsdWUoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9t
QW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKTsKLSAgICAgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25z
dCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNp
Z25lZCByZXBlYXQsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0KCk7Ci0gICAgICAgIHZpcnR1YWwgZmxvYXQg
Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRvU3RyaW5nKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGVudW0gUHJvcGVydHlUeXBlIHsg
TnVtYmVyUHJvcGVydHksIENvbG9yUHJvcGVydHksIFN0cmluZ1Byb3BlcnR5LCBQYXRoUHJvcGVy
dHksIFBvaW50c1Byb3BlcnR5IH07Ci0gICAgICAgIFByb3BlcnR5VHlwZSBkZXRlcm1pbmVQcm9w
ZXJ0eVR5cGUoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUpIGNvbnN0OwotICAgICAgICBQcm9wZXJ0
eVR5cGUgbV9wcm9wZXJ0eVR5cGU7Ci0gICAgICAgIAotICAgICAgICBkb3VibGUgbV9mcm9tTnVt
YmVyOwotICAgICAgICBkb3VibGUgbV90b051bWJlcjsKLSAgICAgICAgZG91YmxlIG1fYW5pbWF0
ZWROdW1iZXI7Ci0gICAgICAgIFN0cmluZyBtX251bWJlclVuaXQ7Ci0gICAgICAgIENvbG9yIG1f
ZnJvbUNvbG9yOwotICAgICAgICBDb2xvciBtX3RvQ29sb3I7Ci0gICAgICAgIENvbG9yIG1fYW5p
bWF0ZWRDb2xvcjsKLSAgICAgICAgU3RyaW5nIG1fZnJvbVN0cmluZzsKLSAgICAgICAgU3RyaW5n
IG1fdG9TdHJpbmc7Ci0gICAgICAgIFN0cmluZyBtX2FuaW1hdGVkU3RyaW5nOwotICAgICAgICBP
d25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IG1fZnJvbVBhdGg7Ci0gICAgICAgIE93blB0cjxTVkdQ
YXRoQnl0ZVN0cmVhbT4gbV90b1BhdGg7Ci0gICAgICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVh
bT4gbV9hbmltYXRlZFBhdGg7Ci0gICAgICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBtX2FuaW1hdGVk
UGF0aFBvaW50ZXI7Ci0gICAgICAgIFNWR1BvaW50TGlzdCBtX2Zyb21Qb2ludHM7Ci0gICAgICAg
IFNWR1BvaW50TGlzdCBtX3RvUG9pbnRzOwotICAgICAgICBTVkdQb2ludExpc3QgbV9hbmltYXRl
ZFBvaW50czsKLSAgICB9OworY2xhc3MgU1ZHQW5pbWF0ZUVsZW1lbnQgOiBwdWJsaWMgU1ZHQW5p
bWF0aW9uRWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0
ZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAg
IHZpcnR1YWwgflNWR0FuaW1hdGVFbGVtZW50KCk7CisKK3Byb3RlY3RlZDoKKyAgICBTVkdBbmlt
YXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAgIHZpcnR1
YWwgdm9pZCByZXNldFRvQmFzZVZhbHVlKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9v
bCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHRvU3RyaW5nKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5
VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7
CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFn
ZSwgdW5zaWduZWQgcmVwZWF0LCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCk7CisgICAg
dmlydHVhbCB2b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0KCk7CisgICAgdmlydHVhbCBmbG9hdCBj
YWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
dG9TdHJpbmcpOworCitwcml2YXRlOgorICAgIGVudW0gUHJvcGVydHlUeXBlIHsgTnVtYmVyUHJv
cGVydHksIENvbG9yUHJvcGVydHksIFN0cmluZ1Byb3BlcnR5LCBQYXRoUHJvcGVydHksIFBvaW50
c1Byb3BlcnR5IH07CisgICAgUHJvcGVydHlUeXBlIGRldGVybWluZVByb3BlcnR5VHlwZShjb25z
dCBTdHJpbmcmIGF0dHJpYnV0ZSkgY29uc3Q7CisgICAgUHJvcGVydHlUeXBlIG1fcHJvcGVydHlU
eXBlOworCisgICAgZG91YmxlIG1fZnJvbU51bWJlcjsKKyAgICBkb3VibGUgbV90b051bWJlcjsK
KyAgICBkb3VibGUgbV9hbmltYXRlZE51bWJlcjsKKyAgICBTdHJpbmcgbV9udW1iZXJVbml0Owor
ICAgIENvbG9yIG1fZnJvbUNvbG9yOworICAgIENvbG9yIG1fdG9Db2xvcjsKKyAgICBDb2xvciBt
X2FuaW1hdGVkQ29sb3I7CisgICAgU3RyaW5nIG1fZnJvbVN0cmluZzsKKyAgICBTdHJpbmcgbV90
b1N0cmluZzsKKyAgICBTdHJpbmcgbV9hbmltYXRlZFN0cmluZzsKKyAgICBPd25QdHI8U1ZHUGF0
aEJ5dGVTdHJlYW0+IG1fZnJvbVBhdGg7CisgICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBt
X3RvUGF0aDsKKyAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IG1fYW5pbWF0ZWRQYXRoOwor
ICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBtX2FuaW1hdGVkUGF0aFBvaW50ZXI7CisgICAgU1ZHUG9p
bnRMaXN0IG1fZnJvbVBvaW50czsKKyAgICBTVkdQb2ludExpc3QgbV90b1BvaW50czsKKyAgICBT
VkdQb2ludExpc3QgbV9hbmltYXRlZFBvaW50czsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAkocmV2aXNp
b24gNzQzOTApCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUgIlNWR01QYXRoRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVz
LmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCIKICNpbmNsdWRlICJTVkdQYXRo
RWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1BhdGhQYXJzZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAi
U1ZHVHJhbnNmb3JtTGlzdC5oIgotI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5oCShyZXZpc2lv
biA3NDM5MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDQ3ICsyNyw0NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICAKLSAgICBjbGFzcyBTVkdBbmltYXRlTW90aW9uRWxlbWVudCA6IHB1YmxpYyBTVkdB
bmltYXRpb25FbGVtZW50IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBTVkdBbmltYXRlTW90aW9uRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgICAgICB2aXJ0dWFsIGJv
b2wgaGFzVmFsaWRUYXJnZXQoKSBjb25zdDsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVzZXRUb0Jhc2VWYWx1ZShjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgdmlydHVhbCBib29s
IGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0
IFN0cmluZyYgdG9TdHJpbmcpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFu
ZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmlu
Zyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBl
cmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlSZXN1bHRzVG9UYXJnZXQoKTsKLSAgICAgICAg
dmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcs
IGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwotICAgICAgICB2aXJ0dWFsIFBhdGggYW5pbWF0aW9u
UGF0aCgpIGNvbnN0OwotICAgICAgICAKLSAgICAgICAgZW51bSBSb3RhdGVNb2RlIHsKLSAgICAg
ICAgICAgIFJvdGF0ZUFuZ2xlLAotICAgICAgICAgICAgUm90YXRlQXV0bywKLSAgICAgICAgICAg
IFJvdGF0ZUF1dG9SZXZlcnNlCi0gICAgICAgIH07Ci0gICAgICAgIFJvdGF0ZU1vZGUgcm90YXRl
TW9kZSgpIGNvbnN0OwotCi0gICAgICAgIEZsb2F0U2l6ZSBtX2FuaW1hdGVkVHJhbnNsYXRpb247
Ci0gICAgICAgIGZsb2F0IG1fYW5pbWF0ZWRBbmdsZTsKLQotICAgICAgICAvLyBOb3RlOiB3ZSBk
byBub3Qgc3VwcG9ydCBwZXJjZW50YWdlIHZhbHVlcyBmb3IgdG8vZnJvbSBjb29yZHMgYXMgdGhl
IHNwZWMgaW1wbGllcyB3ZSBzaG91bGQgKG9wZXJhIGRvZXNuJ3QgZWl0aGVyKQotICAgICAgICBG
bG9hdFBvaW50IG1fZnJvbVBvaW50OwotICAgICAgICBmbG9hdCBtX2Zyb21BbmdsZTsKLSAgICAg
ICAgRmxvYXRQb2ludCBtX3RvUG9pbnQ7Ci0gICAgICAgIGZsb2F0IG1fdG9BbmdsZTsKLQotICAg
ICAgICB1bnNpZ25lZCBtX2Jhc2VJbmRleEluVHJhbnNmb3JtTGlzdDsKLQotICAgICAgICBQYXRo
IG1fcGF0aDsKLSAgICAgICAgVmVjdG9yPGZsb2F0PiBtX2tleVBvaW50czsKLSAgICAgICAgZmxv
YXQgbV9hbmdsZTsKK2NsYXNzIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50IDogcHVibGljIFNWR0Fu
aW1hdGlvbkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CisKK3ByaXZhdGU6CisgICAgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsaWRUYXJnZXQoKSBj
b25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKKworICAgIHZpcnR1YWwgdm9pZCByZXNldFRvQmFzZVZhbHVlKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBm
cm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2Fs
Y3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiBieVN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUo
ZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0LCBTVkdTTUlMRWxlbWVudCogcmVzdWx0
RWxlbWVudCk7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0KCk7CisgICAg
dmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcs
IGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworICAgIHZpcnR1YWwgUGF0aCBhbmltYXRpb25QYXRo
KCkgY29uc3Q7CisKKyAgICBlbnVtIFJvdGF0ZU1vZGUgeworICAgICAgICBSb3RhdGVBbmdsZSwK
KyAgICAgICAgUm90YXRlQXV0bywKKyAgICAgICAgUm90YXRlQXV0b1JldmVyc2UKICAgICB9Owor
ICAgIFJvdGF0ZU1vZGUgcm90YXRlTW9kZSgpIGNvbnN0OworCisgICAgRmxvYXRTaXplIG1fYW5p
bWF0ZWRUcmFuc2xhdGlvbjsKKyAgICBmbG9hdCBtX2FuaW1hdGVkQW5nbGU7CisKKyAgICAvLyBO
b3RlOiB3ZSBkbyBub3Qgc3VwcG9ydCBwZXJjZW50YWdlIHZhbHVlcyBmb3IgdG8vZnJvbSBjb29y
ZHMgYXMgdGhlIHNwZWMgaW1wbGllcyB3ZSBzaG91bGQgKG9wZXJhIGRvZXNuJ3QgZWl0aGVyKQor
ICAgIEZsb2F0UG9pbnQgbV9mcm9tUG9pbnQ7CisgICAgZmxvYXQgbV9mcm9tQW5nbGU7CisgICAg
RmxvYXRQb2ludCBtX3RvUG9pbnQ7CisgICAgZmxvYXQgbV90b0FuZ2xlOworCisgICAgdW5zaWdu
ZWQgbV9iYXNlSW5kZXhJblRyYW5zZm9ybUxpc3Q7CisKKyAgICBQYXRoIG1fcGF0aDsKKyAgICBW
ZWN0b3I8ZmxvYXQ+IG1fa2V5UG9pbnRzOworICAgIGZsb2F0IG1fYW5nbGU7Cit9OwogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51
bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmgJKHJl
dmlzaW9uIDc0MzkwKQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQAogI2RlZmluZSBTVkdBbmltYXRlZE51bWJlcl9oCiAK
ICNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFy
T2ZmLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oIgorI2luY2x1ZGUg
IlNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDc0Mzkw
KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTczLDcgKzczLDcgQEAgc3RhdGljIHZvaWQgcGFyc2VLZXlUaW1lcyhjb25zdCBTdHJpbmcm
IAogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBpZiAodmVyaWZ5T3JkZXIpIHsKICAg
ICAgICAgICAgIGlmICghbikgewotICAgICAgICAgICAgICAgIGlmICh0aW1lICE9IDApCisgICAg
ICAgICAgICAgICAgaWYgKHRpbWUpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAg
ICAgICAgICAgIH0gZWxzZSBpZiAodGltZSA8IHJlc3VsdC5sYXN0KCkpCiAgICAgICAgICAgICAg
ICAgZ290byBmYWlsOwpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVu
dDo6Y3VycmVudFZhbHVlc0YKICAgICAKICAgICB1bnNpZ25lZCBrZXlUaW1lc0NvdW50ID0gbV9r
ZXlUaW1lcy5zaXplKCk7CiAgICAgQVNTRVJUKCFrZXlUaW1lc0NvdW50IHx8IHZhbHVlc0NvdW50
ID09IGtleVRpbWVzQ291bnQpOwotICAgIEFTU0VSVCgha2V5VGltZXNDb3VudCB8fCAoa2V5VGlt
ZXNDb3VudCA+IDEgJiYgbV9rZXlUaW1lc1swXSA9PSAwKSk7CisgICAgQVNTRVJUKCFrZXlUaW1l
c0NvdW50IHx8IChrZXlUaW1lc0NvdW50ID4gMSAmJiAhbV9rZXlUaW1lc1swXSkpOwogCiAgICAg
dW5zaWduZWQgaW5kZXggPSBjYWxjdWxhdGVLZXlUaW1lc0luZGV4KHBlcmNlbnQpOwogICAgIGlm
IChjYWxjTW9kZSA9PSBDYWxjTW9kZURpc2NyZXRlKSB7CkBAIC01NzIsNyArNTcyLDcgQEAgdm9p
ZCBTVkdBbmltYXRpb25FbGVtZW50Ojp1cGRhdGVBbmltYXRpbwogICAgICAgICBTdHJpbmcgZnJv
bTsKICAgICAgICAgU3RyaW5nIHRvOwogICAgICAgICBjdXJyZW50VmFsdWVzRm9yVmFsdWVzQW5p
bWF0aW9uKHBlcmNlbnQsIGVmZmVjdGl2ZVBlcmNlbnQsIGZyb20sIHRvKTsKLSAgICAgICAgaWYg
KGZyb20gIT0gbV9sYXN0VmFsdWVzQW5pbWF0aW9uRnJvbSB8fCB0byAhPSBtX2xhc3RWYWx1ZXNB
bmltYXRpb25UbyApIHsKKyAgICAgICAgaWYgKGZyb20gIT0gbV9sYXN0VmFsdWVzQW5pbWF0aW9u
RnJvbSB8fCB0byAhPSBtX2xhc3RWYWx1ZXNBbmltYXRpb25UbykgewogICAgICAgICAgICAgbV9h
bmltYXRpb25WYWxpZCA9IGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhmcm9tLCB0byk7CiAgICAg
ICAgICAgICBpZiAoIW1fYW5pbWF0aW9uVmFsaWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3NDM5MCkKKysrIFdl
YkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDEx
ICs3NSwxMSBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhCiAgICAg
aWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6Y2xpcFBhdGhVbml0c0F0dHIgfHwKLSAgICAgICAgU1ZHVGVzdHM6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpIHx8IAotICAgICAgICBTVkdMYW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpIHx8Ci0gICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyCisgICAgICAgIHx8IFNWR1Rlc3RzOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKQorICAgICAgICB8fCBTVkdMYW5nU3BhY2U6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpCisgICAgICAgIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpCisgICAgICAgIHx8IFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKICAgICAgICAgb2Jq
ZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQ29s
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDb2xvci5oCShyZXZpc2lvbiA3NDM5
MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYxICsy
OCw2MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBSR0JDb2xvcjsKK2Ns
YXNzIFJHQkNvbG9yOwogCi0gICAgY2xhc3MgU1ZHQ29sb3IgOiBwdWJsaWMgQ1NTVmFsdWUgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQ29sb3I+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIGNvbG9yKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNWR0NvbG9yKGNvbG9yKSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U1ZHQ29sb3I+IGNyZWF0ZShjb25zdCBDb2xvciYgY29sb3IpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHQ29sb3IoY29sb3IpKTsKLSAgICAgICAg
fQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdDb2xvcj4gY3JlYXRlQ3VycmVudENvbG9y
KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdDb2xvcihT
VkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUikpOwotICAgICAgICB9Ci0KLSAgICAgICAgZW51bSBT
VkdDb2xvclR5cGUgewotICAgICAgICAgICAgU1ZHX0NPTE9SVFlQRV9VTktOT1dOICAgICAgICAg
ICAgICAgICAgID0gMCwKLSAgICAgICAgICAgIFNWR19DT0xPUlRZUEVfUkdCQ09MT1IgICAgICAg
ICAgICAgICAgICA9IDEsCi0gICAgICAgICAgICBTVkdfQ09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NP
TE9SICAgICAgICAgPSAyLAotICAgICAgICAgICAgU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1Ig
ICAgICAgICAgICAgID0gMwotICAgICAgICB9OwotCi0gICAgICAgIC8vICdTVkdDb2xvcicgZnVu
Y3Rpb25zCi0gICAgICAgIHVuc2lnbmVkIHNob3J0IGNvbG9yVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29sb3JUeXBlOyB9Ci0KLSAgICAgICAgUGFzc1JlZlB0cjxSR0JDb2xvcj4gcmdiQ29sb3Io
KSBjb25zdDsKLQotICAgICAgICBzdGF0aWMgQ29sb3IgY29sb3JGcm9tUkdCQ29sb3JTdHJpbmco
Y29uc3QgU3RyaW5nJik7Ci0KLSAgICAgICAgdm9pZCBzZXRSR0JDb2xvcihjb25zdCBTdHJpbmcm
IHJnYkNvbG9yKSB7IEV4Y2VwdGlvbkNvZGUgaWdub3JlZCA9IDA7IHNldFJHQkNvbG9yKHJnYkNv
bG9yLCBpZ25vcmVkKTsgfQotICAgICAgICB2b2lkIHNldFJHQkNvbG9yKGNvbnN0IFN0cmluZyYg
cmdiQ29sb3IsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBzZXRSR0JDb2xvcklDQ0Nv
bG9yKGNvbnN0IFN0cmluZyYgcmdiQ29sb3IsIGNvbnN0IFN0cmluZyYgaWNjQ29sb3IsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBzZXRDb2xvcih1bnNpZ25lZCBzaG9ydCBjb2xvclR5
cGUsIGNvbnN0IFN0cmluZyYgcmdiQ29sb3IsIGNvbnN0IFN0cmluZyYgaWNjQ29sb3IsIEV4Y2Vw
dGlvbkNvZGUmKTsKLQotICAgICAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJldHVy
biBtX2NvbG9yOyB9Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFNWR0NvbG9yKCk7Ci0gICAg
ICAgIFNWR0NvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IpOwotICAgICAgICBTVkdDb2xvcihjb25z
dCBDb2xvciYpOwotCi0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR0NvbG9yKFNWR0NvbG9yVHlwZSk7CitjbGFzcyBTVkdD
b2xvciA6IHB1YmxpYyBDU1NWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
U1ZHQ29sb3I+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbG9yKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTVkdDb2xvcihjb2xvcikpOworICAgIH0KKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdDb2xvcj4gY3JlYXRlKGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHQ29sb3IoY29sb3IpKTsKKyAgICB9CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U1ZHQ29sb3I+IGNyZWF0ZUN1cnJlbnRDb2xvcigpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0NvbG9yKFNWR19DT0xPUlRZUEVfQ1VSUkVOVENP
TE9SKSk7CisgICAgfQorCisgICAgZW51bSBTVkdDb2xvclR5cGUgeworICAgICAgICBTVkdfQ09M
T1JUWVBFX1VOS05PV04gPSAwLAorICAgICAgICBTVkdfQ09MT1JUWVBFX1JHQkNPTE9SID0gMSwK
KyAgICAgICAgU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDIsCisgICAgICAgIFNW
R19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SID0gMworICAgIH07CiAKLSAgICAgICAgc3RhdGljIHZv
aWQgY3JlYXRlKGludCk7IC8vIGNvbXBpbGUtdGltZSBndWFyZCAKKyAgICAvLyAnU1ZHQ29sb3In
IGZ1bmN0aW9ucworICAgIHVuc2lnbmVkIHNob3J0IGNvbG9yVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29sb3JUeXBlOyB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGlzU1ZHQ29sb3IoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgUGFzc1JlZlB0cjxSR0JDb2xvcj4gcmdiQ29sb3IoKSBj
b25zdDsKIAotICAgICAgICBDb2xvciBtX2NvbG9yOwotICAgICAgICB1bnNpZ25lZCBzaG9ydCBt
X2NvbG9yVHlwZTsKLSAgICB9OworICAgIHN0YXRpYyBDb2xvciBjb2xvckZyb21SR0JDb2xvclN0
cmluZyhjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0UkdCQ29sb3IoY29uc3QgU3RyaW5n
JiByZ2JDb2xvcikgeyBFeGNlcHRpb25Db2RlIGlnbm9yZWQgPSAwOyBzZXRSR0JDb2xvcihyZ2JD
b2xvciwgaWdub3JlZCk7IH0KKyAgICB2b2lkIHNldFJHQkNvbG9yKGNvbnN0IFN0cmluZyYgcmdi
Q29sb3IsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFJHQkNvbG9ySUNDQ29sb3IoY29u
c3QgU3RyaW5nJiByZ2JDb2xvciwgY29uc3QgU3RyaW5nJiBpY2NDb2xvciwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgc2V0Q29sb3IodW5zaWduZWQgc2hvcnQgY29sb3JUeXBlLCBjb25zdCBT
dHJpbmcmIHJnYkNvbG9yLCBjb25zdCBTdHJpbmcmIGljY0NvbG9yLCBFeGNlcHRpb25Db2RlJik7
CisKKyAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CisK
K3Byb3RlY3RlZDoKKyAgICBTVkdDb2xvcigpOworICAgIFNWR0NvbG9yKGNvbnN0IFN0cmluZyYg
Y29sb3IpOworICAgIFNWR0NvbG9yKGNvbnN0IENvbG9yJik7CisKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjc3NUZXh0KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgU1ZHQ29sb3IoU1ZHQ29sb3JUeXBl
KTsKKworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZShpbnQpOyAvLyBjb21waWxlLXRpbWUgZ3VhcmQg
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KworICAgIENvbG9yIG1fY29sb3I7CisgICAgdW5zaWduZWQgc2hvcnQgbV9jb2xvclR5cGU7Cit9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0N1cnNv
ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3NDM5MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MywxMCArOTMsMTEgQEAgdm9pZCBTVkdDdXJzb3JFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZwogewogICAgIFNWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOwogCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0ciB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIgfHwKLSAgICAgICAgU1ZHVGVzdHM6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpIHx8Ci0gICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8Ci0gICAgICAgIFNWR1VSSVJlZmVyZW5j
ZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnhBdHRyCisgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cgorICAg
ICAgICB8fCBTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkKKyAgICAgICAgfHwg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkK
KyAgICAgICAgfHwgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewogICAgICAgICBIYXNoU2V0PFNWR0VsZW1lbnQqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2Ns
aWVudHMuYmVnaW4oKTsKICAgICAgICAgSGFzaFNldDxTVkdFbGVtZW50Kj46OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IG1fY2xpZW50cy5lbmQoKTsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQ3Vyc29y
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAko
cmV2aXNpb24gNzQzOTApCisrKyBXZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5o
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5o
IgorI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJT
VkdUZXN0cy5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIlNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdEZXNjRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0Rlc2NFbGVtZW50LmgJKHJldmlzaW9uIDc0MzkwKQorKysgV2ViQ29yZS9zdmcvU1ZHRGVz
Y0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTggKzI3LDE4IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFNWR0Rlc2NFbGVtZW50IDogcHVibGljIFNWR1N0eWxl
ZEVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNl
IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0Rlc2NFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CitjbGFzcyBTVkdEZXNj
RWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU1ZHTGFuZ1NwYWNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
VkdEZXNjRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwog
Ci0gICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OworICAgIFN0cmluZyBkZXNjcmlw
dGlvbigpIGNvbnN0OwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU1ZHRGVzY0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Citwcml2YXRlOgorICAgIFNWR0Rlc2NFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB9OworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyBy
ZXR1cm4gZmFsc2U7IH0KK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gNzQzOTApCisrKyBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJTVkdOYW1lcy5o
IgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdWaWV3U3BlYy5oIgot
I2luY2x1ZGUgIlNWR1pvb21FdmVudC5oIgogI2luY2x1ZGUgIlNWR1pvb21BbmRQYW4uaCIKKyNp
bmNsdWRlICJTVkdab29tRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0Rv
Y3VtZW50LmgJKHJldmlzaW9uIDc0MzkwKQorKysgV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMzYgKzI3LDM2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIGNsYXNzIERPTUltcGxlbWVudGF0aW9uOwotICAgIGNsYXNzIFNWR0VsZW1lbnQ7Ci0g
ICAgY2xhc3MgU1ZHU1ZHRWxlbWVudDsKK2NsYXNzIERPTUltcGxlbWVudGF0aW9uOworY2xhc3Mg
U1ZHRWxlbWVudDsKK2NsYXNzIFNWR1NWR0VsZW1lbnQ7CiAKLSAgICBjbGFzcyBTVkdEb2N1bWVu
dCA6IHB1YmxpYyBEb2N1bWVudCB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0RvY3VtZW50KGZy
YW1lLCB1cmwpKTsKLSAgICAgICAgfQorY2xhc3MgU1ZHRG9jdW1lbnQgOiBwdWJsaWMgRG9jdW1l
bnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0RvY3VtZW50PiBjcmVhdGUo
RnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNWR0RvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICB9CiAKLSAgICAgICAgU1ZH
U1ZHRWxlbWVudCogcm9vdEVsZW1lbnQoKSBjb25zdDsKLSAgICAgICAgCi0gICAgICAgIHZvaWQg
ZGlzcGF0Y2hab29tRXZlbnQoZmxvYXQgcHJldlNjYWxlLCBmbG9hdCBuZXdTY2FsZSk7Ci0gICAg
ICAgIHZvaWQgZGlzcGF0Y2hTY3JvbGxFdmVudCgpOworICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RF
bGVtZW50KCkgY29uc3Q7CiAKLSAgICAgICAgYm9vbCB6b29tQW5kUGFuRW5hYmxlZCgpIGNvbnN0
OworICAgIHZvaWQgZGlzcGF0Y2hab29tRXZlbnQoZmxvYXQgcHJldlNjYWxlLCBmbG9hdCBuZXdT
Y2FsZSk7CisgICAgdm9pZCBkaXNwYXRjaFNjcm9sbEV2ZW50KCk7CiAKLSAgICAgICAgdm9pZCBz
dGFydFBhbihjb25zdCBGbG9hdFBvaW50JiBzdGFydCk7Ci0gICAgICAgIHZvaWQgdXBkYXRlUGFu
KGNvbnN0IEZsb2F0UG9pbnQmIHBvcykgY29uc3Q7CisgICAgYm9vbCB6b29tQW5kUGFuRW5hYmxl
ZCgpIGNvbnN0OwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU1ZHRG9jdW1lbnQoRnJhbWUqLCBj
b25zdCBLVVJMJik7CisgICAgdm9pZCBzdGFydFBhbihjb25zdCBGbG9hdFBvaW50JiBzdGFydCk7
CisgICAgdm9pZCB1cGRhdGVQYW4oY29uc3QgRmxvYXRQb2ludCYgcG9zKSBjb25zdDsKIAotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
K3ByaXZhdGU6CisgICAgU1ZHRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7CiAKLSAgICAg
ICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBpc1NWR0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgICAgIEZsb2F0UG9pbnQgbV90cmFuc2xhdGU7Ci0gICAgfTsKKyAgICB2aXJ0dWFsIGJv
b2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CisKKyAgICBGbG9hdFBv
aW50IG1fdHJhbnNsYXRlOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5oCShyZXZpc2lvbiA3NDM5MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksODYgKzI5LDg2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ICAgIGNsYXNzIENTU0N1cnNvckltYWdlVmFsdWU7Ci0gICAgY2xhc3MgRG9jdW1lbnQ7Ci0gICAg
Y2xhc3MgU1ZHQ3Vyc29yRWxlbWVudDsKLSAgICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7Ci0g
ICAgY2xhc3MgU1ZHRWxlbWVudFJhcmVEYXRhOwotICAgIGNsYXNzIFNWR1NWR0VsZW1lbnQ7Ci0g
ICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTsKK2Ns
YXNzIERvY3VtZW50OworY2xhc3MgU1ZHQ3Vyc29yRWxlbWVudDsKK2NsYXNzIFNWR0VsZW1lbnRJ
bnN0YW5jZTsKK2NsYXNzIFNWR0VsZW1lbnRSYXJlRGF0YTsKK2NsYXNzIFNWR1NWR0VsZW1lbnQ7
CitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAKLSAgICBjbGFzcyBTVkdFbGVtZW50IDogcHVibGlj
IFN0eWxlZEVsZW1lbnQgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U1ZHRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAg
ICAgICB2aXJ0dWFsIH5TVkdFbGVtZW50KCk7CitjbGFzcyBTVkdFbGVtZW50IDogcHVibGljIFN0
eWxlZEVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIH5T
VkdFbGVtZW50KCk7CiAKLSAgICAgICAgU3RyaW5nIHhtbGJhc2UoKSBjb25zdDsKLSAgICAgICAg
dm9pZCBzZXRYbWxiYXNlKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBTdHJp
bmcgeG1sYmFzZSgpIGNvbnN0OworICAgIHZvaWQgc2V0WG1sYmFzZShjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJik7CiAKLSAgICAgICAgU1ZHU1ZHRWxlbWVudCogb3duZXJTVkdFbGVtZW50
KCkgY29uc3Q7Ci0gICAgICAgIFNWR0VsZW1lbnQqIHZpZXdwb3J0RWxlbWVudCgpIGNvbnN0Owor
ICAgIFNWR1NWR0VsZW1lbnQqIG93bmVyU1ZHRWxlbWVudCgpIGNvbnN0OworICAgIFNWR0VsZW1l
bnQqIHZpZXdwb3J0RWxlbWVudCgpIGNvbnN0OwogCi0gICAgICAgIFNWR0RvY3VtZW50RXh0ZW5z
aW9ucyogYWNjZXNzRG9jdW1lbnRTVkdFeHRlbnNpb25zKCkgY29uc3Q7CisgICAgU1ZHRG9jdW1l
bnRFeHRlbnNpb25zKiBhY2Nlc3NEb2N1bWVudFNWR0V4dGVuc2lvbnMoKSBjb25zdDsKIAotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVkTG9jYXRhYmxlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzU1ZHKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzRmlsdGVyRWZmZWN0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzR3JhZGllbnRTdG9w
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzVGV4dENv
bnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1N0eWxl
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU3R5bGVkVHJh
bnNmb3JtYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
U3R5bGVkTG9jYXRhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNTVkcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Zp
bHRlckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
R3JhZGllbnRTdG9wKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNUZXh0Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICAgICAgLy8gRm9y
IFNWR1Rlc3RzCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIC8vIEZvciBTVkdUZXN0cworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJikg
eyB9CiAKLSAgICAgICAgdm9pZCBzZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZShib29sIHNlbmRQ
YXJlbnRMb2FkRXZlbnRzID0gZmFsc2UpOwotICAgICAgICAKLSAgICAgICAgdmlydHVhbCBBZmZp
bmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2
b2lkIHNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExvYWRFdmVudHMg
PSBmYWxzZSk7CiAKLSAgICAgICAgdm9pZCBpbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpIHsgY2xl
YXJBcmVTVkdBdHRyaWJ1dGVzVmFsaWQoKTsgfQorICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3Jt
KiBzdXBwbGVtZW50YWxUcmFuc2Zvcm0oKSB7IHJldHVybiAwOyB9CiAKLSAgICAgICAgY29uc3Qg
SGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiYgaW5zdGFuY2VzRm9yRWxlbWVudCgpIGNvbnN0
OworICAgIHZvaWQgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKSB7IGNsZWFyQXJlU1ZHQXR0cmli
dXRlc1ZhbGlkKCk7IH0KIAotICAgICAgICBib29sIGJvdW5kaW5nQm94KEZsb2F0UmVjdCYsIFNW
R0xvY2F0YWJsZTo6U3R5bGVVcGRhdGVTdHJhdGVneSA9IFNWR0xvY2F0YWJsZTo6QWxsb3dTdHls
ZVVwZGF0ZSkgY29uc3Q7CisgICAgY29uc3QgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiYg
aW5zdGFuY2VzRm9yRWxlbWVudCgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0Q3Vyc29yRWxl
bWVudChTVkdDdXJzb3JFbGVtZW50Kik7Ci0gICAgICAgIHZvaWQgY3Vyc29yRWxlbWVudFJlbW92
ZWQoKTsKLSAgICAgICAgdm9pZCBzZXRDdXJzb3JJbWFnZVZhbHVlKENTU0N1cnNvckltYWdlVmFs
dWUqKTsKLSAgICAgICAgdm9pZCBjdXJzb3JJbWFnZUVsZW1lbnRSZW1vdmVkKCk7CisgICAgYm9v
bCBib3VuZGluZ0JveChGbG9hdFJlY3QmLCBTVkdMb2NhdGFibGU6OlN0eWxlVXBkYXRlU3RyYXRl
Z3kgPSBTVkdMb2NhdGFibGU6OkFsbG93U3R5bGVVcGRhdGUpIGNvbnN0OwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Q7CisgICAgdm9pZCBzZXRDdXJzb3JFbGVtZW50KFNWR0N1cnNvckVsZW1lbnQqKTsK
KyAgICB2b2lkIGN1cnNvckVsZW1lbnRSZW1vdmVkKCk7CisgICAgdm9pZCBzZXRDdXJzb3JJbWFn
ZVZhbHVlKENTU0N1cnNvckltYWdlVmFsdWUqKTsKKyAgICB2b2lkIGN1cnNvckltYWdlRWxlbWVu
dFJlbW92ZWQoKTsKIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgU1ZHRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0
ZWRTVkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKK3Byb3RlY3RlZDoK
KyAgICBTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhdHRy
aWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyA9IGZhbHNlKTsKLSAg
ICAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIAot
ICAgICAgICBTVkdFbGVtZW50UmFyZURhdGEqIHJhcmVTVkdEYXRhKCkgY29uc3Q7Ci0gICAgICAg
IFNWR0VsZW1lbnRSYXJlRGF0YSogZW5zdXJlUmFyZVNWR0RhdGEoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CisgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50
b0RvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRl
KiwgYm9vbCBwcmVzZXJ2ZURlY2xzID0gZmFsc2UpOworICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIAotICAgIHByaXZhdGU6Ci0gICAgICAg
IGZyaWVuZCBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CisgICAgU1ZHRWxlbWVudFJhcmVEYXRh
KiByYXJlU1ZHRGF0YSgpIGNvbnN0OworICAgIFNWR0VsZW1lbnRSYXJlRGF0YSogZW5zdXJlUmFy
ZVNWR0RhdGEoKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBT
VkdFbGVtZW50SW5zdGFuY2U7CiAKLSAgICAgICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkKFN0
cmluZ0ltcGwqIGZlYXR1cmUsIFN0cmluZ0ltcGwqIHZlcnNpb24pIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGJ1aWxkUGVuZGluZ1Jl
c291cmNlKCkgeyB9CisgICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkKFN0cmluZ0ltcGwqIGZl
YXR1cmUsIFN0cmluZ0ltcGwqIHZlcnNpb24pIGNvbnN0OwogCi0gICAgICAgIHZvaWQgbWFwSW5z
dGFuY2VUb0VsZW1lbnQoU1ZHRWxlbWVudEluc3RhbmNlKik7Ci0gICAgICAgIHZvaWQgcmVtb3Zl
SW5zdGFuY2VNYXBwaW5nKFNWR0VsZW1lbnRJbnN0YW5jZSopOworICAgIHZpcnR1YWwgYm9vbCBu
ZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIHsgfQogCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsKLSAgICB9OworICAgIHZvaWQg
bWFwSW5zdGFuY2VUb0VsZW1lbnQoU1ZHRWxlbWVudEluc3RhbmNlKik7CisgICAgdm9pZCByZW1v
dmVJbnN0YW5jZU1hcHBpbmcoU1ZHRWxlbWVudEluc3RhbmNlKik7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7Cit9OwogCiB9CiAKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0VsZW1lbnRJbnN0YW5jZS5oCShyZXZpc2lvbiA3NDM5MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnRJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMzggKzI3LDEzOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBuYW1lc3BhY2UgUHJpdmF0ZSB7IAotICAgICAgICB0
ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+Ci0g
ICAgICAgIHZvaWQgYWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShHZW5lcmljTm9kZSomIGhl
YWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwgR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcik7
Ci0gICAgfTsKLQotICAgIGNsYXNzIFNWR1VzZUVsZW1lbnQ7Ci0gICAgY2xhc3MgU1ZHRWxlbWVu
dEluc3RhbmNlTGlzdDsKLQotICAgIC8vIFNWR0VsZW1lbnRJbnN0YW5jZSBtaW1pY3MgTm9kZSwg
YnV0IHdpdGhvdXQgcHJvdmlkaW5nIGFsbCBpdHMgZnVuY3Rpb25hbGl0eQotICAgIGNsYXNzIFNW
R0VsZW1lbnRJbnN0YW5jZSA6IHB1YmxpYyBUcmVlU2hhcmVkPFNWR0VsZW1lbnRJbnN0YW5jZT4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIEV2ZW50VGFyZ2V0IHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0VsZW1lbnRJbnN0YW5jZT4g
Y3JlYXRlKFNWR1VzZUVsZW1lbnQqIHVzZUVsZW1lbnQsIFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4g
b3JpZ2luYWxFbGVtZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNWR0VsZW1lbnRJbnN0YW5jZSh1c2VFbGVtZW50LCBvcmlnaW5hbEVsZW1lbnQpKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZpcnR1YWwgflNWR0VsZW1lbnRJbnN0YW5jZSgpOwotCi0gICAg
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29s
IHVzZUNhcHR1cmUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2Fw
dHVyZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwot
ICAgICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKLSAgICAgICAgdmlydHVh
bCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwotCi0gICAgICAgIFNWR0Vs
ZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50Lmdl
dCgpOyB9Ci0gICAgICAgIFNWR1VzZUVsZW1lbnQqIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV91c2VFbGVtZW50OyB9Ci0gICAgICAgIFNWR0VsZW1lbnQqIHNoYWRv
d1RyZWVFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dUcmVlRWxlbWVudC5nZXQoKTsg
fQotCi0gICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogcGFyZW50Tm9kZSgpIGNvbnN0IHsgcmV0
dXJuIHBhcmVudCgpOyB9Ci0gICAgICAgIFBhc3NSZWZQdHI8U1ZHRWxlbWVudEluc3RhbmNlTGlz
dD4gY2hpbGROb2RlcygpOwotCi0gICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogcHJldmlvdXNT
aWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c1NpYmxpbmc7IH0KLSAgICAgICAgU1ZH
RWxlbWVudEluc3RhbmNlKiBuZXh0U2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFNpYmxp
bmc7IH0KLQotICAgICAgICBTVkdFbGVtZW50SW5zdGFuY2UqIGZpcnN0Q2hpbGQoKSBjb25zdCB7
IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KLSAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiBsYXN0
Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDaGlsZDsgfQotCi0gICAgICAgIERvY3VtZW50
KiBvd25lckRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50ID8gbV9lbGVtZW50LT5v
d25lckRvY3VtZW50KCkgOiAwOyB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUFs
bEluc3RhbmNlc09mRWxlbWVudChTVkdFbGVtZW50Kik7Ci0KLSAgICAgICAgdXNpbmcgVHJlZVNo
YXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+OjpyZWY7Ci0gICAgICAgIHVzaW5nIFRyZWVTaGFyZWQ8
U1ZHRWxlbWVudEluc3RhbmNlPjo6ZGVyZWY7Ci0KLSAgICAgICAgLy8gRXZlbnRUYXJnZXQgQVBJ
Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3Jy
ZXNwb25kaW5nRWxlbWVudCgpLCBhYm9ydCk7Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBibHVyKTsKLSAg
ICAgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3Bv
bmRpbmdFbGVtZW50KCksIGNoYW5nZSk7Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBjbGljayk7Ci0gICAg
ICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25k
aW5nRWxlbWVudCgpLCBjb250ZXh0bWVudSk7Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBkYmxjbGljayk7
Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3Jy
ZXNwb25kaW5nRWxlbWVudCgpLCBlcnJvcik7Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBmb2N1cyk7Ci0g
ICAgICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNw
b25kaW5nRWxlbWVudCgpLCBpbnB1dCk7Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBrZXlkb3duKTsKLSAg
ICAgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3Bv
bmRpbmdFbGVtZW50KCksIGtleXByZXNzKTsKLSAgICAgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIGtleXVwKTsKLSAg
ICAgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3Bv
bmRpbmdFbGVtZW50KCksIGxvYWQpOwotICAgICAgICBERUZJTkVfRk9SV0FSRElOR19BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwgbW91c2Vkb3duKTsKLSAg
ICAgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3Bv
bmRpbmdFbGVtZW50KCksIG1vdXNlbW92ZSk7Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBtb3VzZW91dCk7
Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3Jy
ZXNwb25kaW5nRWxlbWVudCgpLCBtb3VzZW92ZXIpOwotICAgICAgICBERUZJTkVfRk9SV0FSRElO
R19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwgbW91c2V1
cCk7Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihj
b3JyZXNwb25kaW5nRWxlbWVudCgpLCBtb3VzZXdoZWVsKTsKLSAgICAgICAgREVGSU5FX0ZPUldB
UkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIGJl
Zm9yZWN1dCk7Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBjdXQpOwotICAgICAgICBERUZJTkVfRk9SV0FS
RElOR19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwgYmVm
b3JlY29weSk7Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBjb3B5KTsKLSAgICAgICAgREVGSU5FX0ZPUldB
UkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIGJl
Zm9yZXBhc3RlKTsKLSAgICAgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIHBhc3RlKTsKLSAgICAgICAgREVGSU5FX0ZP
UldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCks
IGRyYWdlbnRlcik7Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBkcmFnb3Zlcik7Ci0gICAgICAgIERFRklO
RV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVu
dCgpLCBkcmFnbGVhdmUpOwotICAgICAgICBERUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwgZHJvcCk7Ci0gICAgICAgIERFRklO
RV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVu
dCgpLCBkcmFnc3RhcnQpOwotICAgICAgICBERUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwgZHJhZyk7Ci0gICAgICAgIERFRklO
RV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVu
dCgpLCBkcmFnZW5kKTsKLSAgICAgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIHJlc2V0KTsKLSAgICAgICAgREVGSU5F
X0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50
KCksIHJlc2l6ZSk7Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBzY3JvbGwpOwotICAgICAgICBERUZJTkVf
Rk9SV0FSRElOR19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0VsZW1lbnQo
KSwgc2VhcmNoKTsKLSAgICAgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIHNlbGVjdCk7Ci0gICAgICAgIERFRklORV9G
T1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgp
LCBzZWxlY3RzdGFydCk7Ci0gICAgICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBzdWJtaXQpOwotICAgICAgICBERUZJ
TkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0VsZW1l
bnQoKSwgdW5sb2FkKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTVkdV
c2VFbGVtZW50OwotCi0gICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVtZW50Kiwg
UGFzc1JlZlB0cjxTVkdFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQpOwotCi0gICAgICAgIHZpcnR1
YWwgTm9kZSogdG9Ob2RlKCkgeyByZXR1cm4gc2hhZG93VHJlZUVsZW1lbnQoKTsgfQotICAgICAg
ICB2aXJ0dWFsIFNWR0VsZW1lbnRJbnN0YW5jZSogdG9TVkdFbGVtZW50SW5zdGFuY2UoKSB7IHJl
dHVybiB0aGlzOyB9Ci0KLSAgICAgICAgdm9pZCBhcHBlbmRDaGlsZChQYXNzUmVmUHRyPFNWR0Vs
ZW1lbnRJbnN0YW5jZT4gY2hpbGQpOwotICAgICAgICB2b2lkIHNldFNoYWRvd1RyZWVFbGVtZW50
KFNWR0VsZW1lbnQqKTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xh
c3MgR2VuZXJpY05vZGVDb250YWluZXI+Ci0gICAgICAgIGZyaWVuZCB2b2lkIGFwcGVuZENoaWxk
VG9Db250YWluZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNvbnRhaW5lciogY29u
dGFpbmVyKTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2Vu
ZXJpY05vZGVDb250YWluZXI+Ci0gICAgICAgIGZyaWVuZCB2b2lkIHJlbW92ZUFsbENoaWxkcmVu
SW5Db250YWluZXIoR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcik7Ci0KLSAgICAgICAg
dGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgot
ICAgICAgICBmcmllbmQgdm9pZCBQcml2YXRlOjphZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVl
KEdlbmVyaWNOb2RlKiYgaGVhZCwgR2VuZXJpY05vZGUqJiB0YWlsLCBHZW5lcmljTm9kZUNvbnRh
aW5lciogY29udGFpbmVyKTsKLQotICAgICAgICBib29sIGhhc0NoaWxkTm9kZXMoKSBjb25zdCB7
IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KLQotICAgICAgICB2b2lkIHNldEZpcnN0Q2hpbGQoU1ZH
RWxlbWVudEluc3RhbmNlKiBjaGlsZCkgeyBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsgfQotICAgICAg
ICB2b2lkIHNldExhc3RDaGlsZChTVkdFbGVtZW50SW5zdGFuY2UqIGNoaWxkKSB7IG1fbGFzdENo
aWxkID0gY2hpbGQ7IH0KLQotICAgICAgICB2b2lkIHNldE5leHRTaWJsaW5nKFNWR0VsZW1lbnRJ
bnN0YW5jZSogc2libGluZykgeyBtX25leHRTaWJsaW5nID0gc2libGluZzsgfQotICAgICAgICB2
b2lkIHNldFByZXZpb3VzU2libGluZyhTVkdFbGVtZW50SW5zdGFuY2UqIHNpYmxpbmcpIHsgbV9w
cmV2aW91c1NpYmxpbmcgPSBzaWJsaW5nOyB9ICAgIAotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KLSAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEq
IGV2ZW50VGFyZ2V0RGF0YSgpOwotICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCk7Ci0KLSAgICAgICAgU1ZHVXNlRWxlbWVudCogbV91c2VFbGVt
ZW50OwotICAgICAgICBSZWZQdHI8U1ZHRWxlbWVudD4gbV9lbGVtZW50OwotICAgICAgICBSZWZQ
dHI8U1ZHRWxlbWVudD4gbV9zaGFkb3dUcmVlRWxlbWVudDsKLQotICAgICAgICBTVkdFbGVtZW50
SW5zdGFuY2UqIG1fcHJldmlvdXNTaWJsaW5nOwotICAgICAgICBTVkdFbGVtZW50SW5zdGFuY2Uq
IG1fbmV4dFNpYmxpbmc7Ci0KLSAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiBtX2ZpcnN0Q2hp
bGQ7Ci0gICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogbV9sYXN0Q2hpbGQ7Ci0gICAgfTsKK25h
bWVzcGFjZSBQcml2YXRlIHsKK3RlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5l
cmljTm9kZUNvbnRhaW5lcj4KK3ZvaWQgYWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShHZW5l
cmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwgR2VuZXJpY05vZGVDb250YWluZXIq
IGNvbnRhaW5lcik7Cit9OworCitjbGFzcyBTVkdVc2VFbGVtZW50OworY2xhc3MgU1ZHRWxlbWVu
dEluc3RhbmNlTGlzdDsKKworLy8gU1ZHRWxlbWVudEluc3RhbmNlIG1pbWljcyBOb2RlLCBidXQg
d2l0aG91dCBwcm92aWRpbmcgYWxsIGl0cyBmdW5jdGlvbmFsaXR5CitjbGFzcyBTVkdFbGVtZW50
SW5zdGFuY2UgOiBwdWJsaWMgVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIEV2ZW50VGFyZ2V0IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTVkdFbGVtZW50SW5zdGFuY2U+IGNyZWF0ZShTVkdVc2VFbGVtZW50
KiB1c2VFbGVtZW50LCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRWxlbWVudEluc3RhbmNlKHVzZUVs
ZW1lbnQsIG9yaWdpbmFsRWxlbWVudCkpOworICAgIH0KKworICAgIHZpcnR1YWwgflNWR0VsZW1l
bnRJbnN0YW5jZSgpOworCisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJv
b2wgdXNlQ2FwdHVyZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJz
KCk7CisgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CisgICAgdmlydHVhbCBi
b29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworCisgICAgU1ZHRWxlbWVudCog
Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0K
KyAgICBTVkdVc2VFbGVtZW50KiBjb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlRWxlbWVudDsgfQorICAgIFNWR0VsZW1lbnQqIHNoYWRvd1RyZWVFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9zaGFkb3dUcmVlRWxlbWVudC5nZXQoKTsgfQorCisgICAgU1ZHRWxl
bWVudEluc3RhbmNlKiBwYXJlbnROb2RlKCkgY29uc3QgeyByZXR1cm4gcGFyZW50KCk7IH0KKyAg
ICBQYXNzUmVmUHRyPFNWR0VsZW1lbnRJbnN0YW5jZUxpc3Q+IGNoaWxkTm9kZXMoKTsKKworICAg
IFNWR0VsZW1lbnRJbnN0YW5jZSogcHJldmlvdXNTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9w
cmV2aW91c1NpYmxpbmc7IH0KKyAgICBTVkdFbGVtZW50SW5zdGFuY2UqIG5leHRTaWJsaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXh0U2libGluZzsgfQorCisgICAgU1ZHRWxlbWVudEluc3RhbmNl
KiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9CisgICAgU1ZHRWxl
bWVudEluc3RhbmNlKiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDaGlsZDsgfQor
CisgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQg
PyBtX2VsZW1lbnQtPm93bmVyRG9jdW1lbnQoKSA6IDA7IH0KKworICAgIHN0YXRpYyB2b2lkIGlu
dmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQoU1ZHRWxlbWVudCopOworCisgICAgdXNpbmcg
VHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+OjpyZWY7CisgICAgdXNpbmcgVHJlZVNoYXJl
ZDxTVkdFbGVtZW50SW5zdGFuY2U+OjpkZXJlZjsKKworICAgIC8vIEV2ZW50VGFyZ2V0IEFQSQor
ICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25k
aW5nRWxlbWVudCgpLCBhYm9ydCk7CisgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIGJsdXIpOworICAgIERFRklORV9G
T1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgp
LCBjaGFuZ2UpOworICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBjbGljayk7CisgICAgREVGSU5FX0ZPUldBUkRJTkdf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIGNvbnRleHRt
ZW51KTsKKyAgICBERUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29y
cmVzcG9uZGluZ0VsZW1lbnQoKSwgZGJsY2xpY2spOworICAgIERFRklORV9GT1JXQVJESU5HX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBlcnJvcik7Cisg
ICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRp
bmdFbGVtZW50KCksIGZvY3VzKTsKKyAgICBERUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwgaW5wdXQpOworICAgIERFRklORV9G
T1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgp
LCBrZXlkb3duKTsKKyAgICBERUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwga2V5cHJlc3MpOworICAgIERFRklORV9GT1JXQVJE
SU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBrZXl1
cCk7CisgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJl
c3BvbmRpbmdFbGVtZW50KCksIGxvYWQpOworICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBtb3VzZWRvd24pOworICAg
IERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5n
RWxlbWVudCgpLCBtb3VzZW1vdmUpOworICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBtb3VzZW91dCk7CisgICAgREVG
SU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVt
ZW50KCksIG1vdXNlb3Zlcik7CisgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIG1vdXNldXApOworICAgIERFRklORV9G
T1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgp
LCBtb3VzZXdoZWVsKTsKKyAgICBERUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwgYmVmb3JlY3V0KTsKKyAgICBERUZJTkVfRk9S
V0FSRElOR19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwg
Y3V0KTsKKyAgICBERUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29y
cmVzcG9uZGluZ0VsZW1lbnQoKSwgYmVmb3JlY29weSk7CisgICAgREVGSU5FX0ZPUldBUkRJTkdf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIGNvcHkpOwor
ICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25k
aW5nRWxlbWVudCgpLCBiZWZvcmVwYXN0ZSk7CisgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIHBhc3RlKTsKKyAgICBE
RUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0Vs
ZW1lbnQoKSwgZHJhZ2VudGVyKTsKKyAgICBERUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwgZHJhZ292ZXIpOworICAgIERFRklO
RV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVu
dCgpLCBkcmFnbGVhdmUpOworICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBkcm9wKTsKKyAgICBERUZJTkVfRk9SV0FS
RElOR19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwgZHJh
Z3N0YXJ0KTsKKyAgICBERUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSwgZHJhZyk7CisgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIGRyYWdlbmQpOwor
ICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb3JyZXNwb25k
aW5nRWxlbWVudCgpLCByZXNldCk7CisgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIHJlc2l6ZSk7CisgICAgREVGSU5F
X0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50
KCksIHNjcm9sbCk7CisgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIHNlYXJjaCk7CisgICAgREVGSU5FX0ZPUldBUkRJ
TkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJlc3BvbmRpbmdFbGVtZW50KCksIHNlbGVj
dCk7CisgICAgREVGSU5FX0ZPUldBUkRJTkdfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvcnJl
c3BvbmRpbmdFbGVtZW50KCksIHNlbGVjdHN0YXJ0KTsKKyAgICBERUZJTkVfRk9SV0FSRElOR19B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ycmVzcG9uZGluZ0VsZW1lbnQoKSwgc3VibWl0KTsK
KyAgICBERUZJTkVfRk9SV0FSRElOR19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ycmVzcG9u
ZGluZ0VsZW1lbnQoKSwgdW5sb2FkKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU1ZH
VXNlRWxlbWVudDsKKworICAgIFNWR0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVtZW50KiwgUGFz
c1JlZlB0cjxTVkdFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQpOworCisgICAgdmlydHVhbCBOb2Rl
KiB0b05vZGUoKSB7IHJldHVybiBzaGFkb3dUcmVlRWxlbWVudCgpOyB9CisgICAgdmlydHVhbCBT
VkdFbGVtZW50SW5zdGFuY2UqIHRvU1ZHRWxlbWVudEluc3RhbmNlKCkgeyByZXR1cm4gdGhpczsg
fQorCisgICAgdm9pZCBhcHBlbmRDaGlsZChQYXNzUmVmUHRyPFNWR0VsZW1lbnRJbnN0YW5jZT4g
Y2hpbGQpOworICAgIHZvaWQgc2V0U2hhZG93VHJlZUVsZW1lbnQoU1ZHRWxlbWVudCopOworCisg
ICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVy
PgorICAgIGZyaWVuZCB2b2lkIGFwcGVuZENoaWxkVG9Db250YWluZXIoR2VuZXJpY05vZGUqIGNo
aWxkLCBHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFpbmVyKTsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KKyAgICBmcmllbmQg
dm9pZCByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29udGFpbmVyKiBj
b250YWluZXIpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVy
aWNOb2RlQ29udGFpbmVyPgorICAgIGZyaWVuZCB2b2lkIFByaXZhdGU6OmFkZENoaWxkTm9kZXNU
b0RlbGV0aW9uUXVldWUoR2VuZXJpY05vZGUqJiBoZWFkLCBHZW5lcmljTm9kZSomIHRhaWwsIEdl
bmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpOworCisgICAgYm9vbCBoYXNDaGlsZE5vZGVz
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9CisKKyAgICB2b2lkIHNldEZpcnN0Q2hp
bGQoU1ZHRWxlbWVudEluc3RhbmNlKiBjaGlsZCkgeyBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsgfQor
ICAgIHZvaWQgc2V0TGFzdENoaWxkKFNWR0VsZW1lbnRJbnN0YW5jZSogY2hpbGQpIHsgbV9sYXN0
Q2hpbGQgPSBjaGlsZDsgfQorCisgICAgdm9pZCBzZXROZXh0U2libGluZyhTVkdFbGVtZW50SW5z
dGFuY2UqIHNpYmxpbmcpIHsgbV9uZXh0U2libGluZyA9IHNpYmxpbmc7IH0KKyAgICB2b2lkIHNl
dFByZXZpb3VzU2libGluZyhTVkdFbGVtZW50SW5zdGFuY2UqIHNpYmxpbmcpIHsgbV9wcmV2aW91
c1NpYmxpbmcgPSBzaWJsaW5nOyB9ICAgIAorCisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBk
ZXJlZigpOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgp
OworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsK
KworICAgIFNWR1VzZUVsZW1lbnQqIG1fdXNlRWxlbWVudDsKKyAgICBSZWZQdHI8U1ZHRWxlbWVu
dD4gbV9lbGVtZW50OworICAgIFJlZlB0cjxTVkdFbGVtZW50PiBtX3NoYWRvd1RyZWVFbGVtZW50
OworCisgICAgU1ZHRWxlbWVudEluc3RhbmNlKiBtX3ByZXZpb3VzU2libGluZzsKKyAgICBTVkdF
bGVtZW50SW5zdGFuY2UqIG1fbmV4dFNpYmxpbmc7CisKKyAgICBTVkdFbGVtZW50SW5zdGFuY2Uq
IG1fZmlyc3RDaGlsZDsKKyAgICBTVkdFbGVtZW50SW5zdGFuY2UqIG1fbGFzdENoaWxkOworfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50
SW5zdGFuY2VMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3Rh
bmNlTGlzdC5oCShyZXZpc2lvbiA3NDM5MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0
YW5jZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMjQgKzIyLDI0IEBACiAKICNpZiBFTkFC
TEUoU1ZHKQogCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlICJTVkdFbGVt
ZW50SW5zdGFuY2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2VMaXN0IDogcHVibGljIFJl
ZkNvdW50ZWQ8U1ZHRWxlbWVudEluc3RhbmNlTGlzdD4gewotICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U1ZHRWxlbWVudEluc3RhbmNlTGlzdD4gY3JlYXRlKFBhc3NSZWZQ
dHI8U1ZHRWxlbWVudEluc3RhbmNlPiByb290KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRWxl
bWVudEluc3RhbmNlTGlzdChyb290KSk7IH0KLSAgICAgICAgdmlydHVhbCB+U1ZHRWxlbWVudElu
c3RhbmNlTGlzdCgpOworY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlTGlzdCA6IHB1YmxpYyBSZWZD
b3VudGVkPFNWR0VsZW1lbnRJbnN0YW5jZUxpc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdFbGVtZW50SW5zdGFuY2VMaXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxTVkdFbGVt
ZW50SW5zdGFuY2U+IHJvb3QpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdFbGVtZW50SW5zdGFu
Y2VMaXN0KHJvb3QpKTsgfQorICAgIHZpcnR1YWwgflNWR0VsZW1lbnRJbnN0YW5jZUxpc3QoKTsK
IAotICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICAgICAgU1ZHRWxlbWVudElu
c3RhbmNlKiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dDsKKyAgICBTVkdFbGVtZW50SW5zdGFuY2UqIGl0ZW0odW5zaWduZWQgaW5kZXgpOwogCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlTGlzdChQYXNzUmVmUHRyPFNWR0Vs
ZW1lbnRJbnN0YW5jZT4pOworcHJpdmF0ZToKKyAgICBTVkdFbGVtZW50SW5zdGFuY2VMaXN0KFBh
c3NSZWZQdHI8U1ZHRWxlbWVudEluc3RhbmNlPik7CiAKLSAgICAgICAgUmVmUHRyPFNWR0VsZW1l
bnRJbnN0YW5jZT4gbV9yb290SW5zdGFuY2U7Ci0gICAgfTsKKyAgICBSZWZQdHI8U1ZHRWxlbWVu
dEluc3RhbmNlPiBtX3Jvb3RJbnN0YW5jZTsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRXhjZXB0aW9uLmgJKHJldmlzaW9uIDc0MzkwKQorKysgV2ViQ29yZS9zdmcvU1ZH
RXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI5ICsyNywyOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdFeGNlcHRpb24gOiBwdWJsaWMgRXhjZXB0aW9u
QmFzZSB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdFeGNlcHRp
b24+IGNyZWF0ZShjb25zdCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0V4Y2VwdGlvbihk
ZXNjcmlwdGlvbikpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBTVkdF
eGNlcHRpb25PZmZzZXQgPSAzMDA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgU1ZHRXhjZXB0
aW9uTWF4ID0gMzk5OwotCi0gICAgICAgIGVudW0gU1ZHRXhjZXB0aW9uQ29kZSB7Ci0gICAgICAg
ICAgICBTVkdfV1JPTkdfVFlQRV9FUlIgICAgICAgICAgPSBTVkdFeGNlcHRpb25PZmZzZXQsCi0g
ICAgICAgICAgICBTVkdfSU5WQUxJRF9WQUxVRV9FUlIgICAgICAgPSBTVkdFeGNlcHRpb25PZmZz
ZXQgKyAxLAotICAgICAgICAgICAgU1ZHX01BVFJJWF9OT1RfSU5WRVJUQUJMRSAgID0gU1ZHRXhj
ZXB0aW9uT2Zmc2V0ICsgMgotICAgICAgICB9OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU1ZH
RXhjZXB0aW9uKGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCi0g
ICAgICAgICAgICA6IEV4Y2VwdGlvbkJhc2UoZGVzY3JpcHRpb24pCi0gICAgICAgIHsKLSAgICAg
ICAgfQorY2xhc3MgU1ZHRXhjZXB0aW9uIDogcHVibGljIEV4Y2VwdGlvbkJhc2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0V4Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IEV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNWR0V4Y2VwdGlvbihkZXNjcmlwdGlvbikpOworICAgIH0KKworICAgIHN0
YXRpYyBjb25zdCBpbnQgU1ZHRXhjZXB0aW9uT2Zmc2V0ID0gMzAwOworICAgIHN0YXRpYyBjb25z
dCBpbnQgU1ZHRXhjZXB0aW9uTWF4ID0gMzk5OworCisgICAgZW51bSBTVkdFeGNlcHRpb25Db2Rl
IHsKKyAgICAgICAgU1ZHX1dST05HX1RZUEVfRVJSID0gU1ZHRXhjZXB0aW9uT2Zmc2V0LAorICAg
ICAgICBTVkdfSU5WQUxJRF9WQUxVRV9FUlIgPSBTVkdFeGNlcHRpb25PZmZzZXQgKyAxLAorICAg
ICAgICBTVkdfTUFUUklYX05PVF9JTlZFUlRBQkxFID0gU1ZHRXhjZXB0aW9uT2Zmc2V0ICsgMgog
ICAgIH07CiAKK3ByaXZhdGU6CisgICAgU1ZHRXhjZXB0aW9uKGNvbnN0IEV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCisgICAgICAgIDogRXhjZXB0aW9uQmFzZShkZXNjcmlw
dGlvbikKKyAgICB7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDc0MzkwKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw3IEBAIHZvaWQgU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQ6OnBhcnNlTWFwcGUKICAgICAgICAgICAgIHNldFR5cGVCYXNlVmFsdWUo
RkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09
ICJsdW1pbmFuY2VUb0FscGhhIikKICAgICAgICAgICAgIHNldFR5cGVCYXNlVmFsdWUoRkVDT0xP
Uk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEEpOwotICAgIH0KLSAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmluQXR0cikKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6aW5BdHRyKQogICAgICAgICBzZXRJbjFCYXNlVmFsdWUodmFsdWUpOwog
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dmFsdWVzQXR0cikgewogICAg
ICAgICBTVkdOdW1iZXJMaXN0IG5ld0xpc3Q7CkBAIC0xMzksNiArMTM4LDYgQEAgUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaQogICAgIHJldHVybiBlZmZlY3QucmVsZWFz
ZSgpOwogfQogCi19IC8vbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA3NDM5MCkKKysrIFdlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQs
MTUgKzc0LDE1IEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFQKICAg
ICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGJsdWU7CiAgICAgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiBhbHBoYTsKICAgICAKLSAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG4g
IT0gMDsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmZlRnVuY1JUYWcpKQotICAgICAgICAgICAgcmVkID0gc3RhdGljX2Nhc3Q8U1ZH
RkVGdW5jUkVsZW1lbnQqPihuKS0+dHJhbnNmZXJGdW5jdGlvbigpOwotICAgICAgICBlbHNlIGlm
IChuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZ1bmNHVGFnKSkKLSAgICAgICAgICAgIGdyZWVu
ID0gc3RhdGljX2Nhc3Q8U1ZHRkVGdW5jR0VsZW1lbnQqPihuKS0+dHJhbnNmZXJGdW5jdGlvbigp
OwotICAgICAgICBlbHNlIGlmIChuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZ1bmNCVGFnKSkK
LSAgICAgICAgICAgYmx1ZSA9IHN0YXRpY19jYXN0PFNWR0ZFRnVuY0JFbGVtZW50Kj4obiktPnRy
YW5zZmVyRnVuY3Rpb24oKTsKLSAgICAgICAgZWxzZSBpZiAobi0+aGFzVGFnTmFtZShTVkdOYW1l
czo6ZmVGdW5jQVRhZykpCi0gICAgICAgICAgICBhbHBoYSA9IHN0YXRpY19jYXN0PFNWR0ZFRnVu
Y0FFbGVtZW50Kj4obiktPnRyYW5zZmVyRnVuY3Rpb24oKTsKKyAgICBmb3IgKE5vZGUqIG5vZGUg
PSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CisgICAg
ICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZ1bmNSVGFnKSkKKyAgICAgICAg
ICAgIHJlZCA9IHN0YXRpY19jYXN0PFNWR0ZFRnVuY1JFbGVtZW50Kj4obm9kZSktPnRyYW5zZmVy
RnVuY3Rpb24oKTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6
ZmVGdW5jR1RhZykpCisgICAgICAgICAgICBncmVlbiA9IHN0YXRpY19jYXN0PFNWR0ZFRnVuY0dF
bGVtZW50Kj4obm9kZSktPnRyYW5zZmVyRnVuY3Rpb24oKTsKKyAgICAgICAgZWxzZSBpZiAobm9k
ZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGdW5jQlRhZykpCisgICAgICAgICAgIGJsdWUgPSBz
dGF0aWNfY2FzdDxTVkdGRUZ1bmNCRWxlbWVudCo+KG5vZGUpLT50cmFuc2ZlckZ1bmN0aW9uKCk7
CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRnVuY0FUYWcp
KQorICAgICAgICAgICAgYWxwaGEgPSBzdGF0aWNfY2FzdDxTVkdGRUZ1bmNBRWxlbWVudCo+KG5v
ZGUpLT50cmFuc2ZlckZ1bmN0aW9uKCk7CiAgICAgfQogICAgIAogICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShmaWx0ZXIsIHJlZCwg
Z3JlZW4sIGJsdWUsIGFscGhhKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gNzQzOTApCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsMTEgKzEzNywx
MSBAQCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnCiAKIFBhc3NSZWZQ
dHI8TGlnaHRTb3VyY2U+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZmluZExpZ2h0cygp
IGNvbnN0CiB7Ci0gICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4
dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAobi0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEaXN0
YW50TGlnaHRUYWcpIHx8Ci0gICAgICAgICAgICBuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVBv
aW50TGlnaHRUYWcpIHx8Ci0gICAgICAgICAgICBuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNw
b3RMaWdodFRhZykpIHsKLSAgICAgICAgICAgIFNWR0ZFTGlnaHRFbGVtZW50KiBsaWdodE5vZGUg
PSBzdGF0aWNfY2FzdDxTVkdGRUxpZ2h0RWxlbWVudCo+KG4pOyAKKyAgICBmb3IgKE5vZGUqIG5v
ZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Cisg
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZURpc3RhbnRMaWdodFRhZykK
KyAgICAgICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlUG9pbnRMaWdodFRh
ZykKKyAgICAgICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlU3BvdExpZ2h0
VGFnKSkgeworICAgICAgICAgICAgU1ZHRkVMaWdodEVsZW1lbnQqIGxpZ2h0Tm9kZSA9IHN0YXRp
Y19jYXN0PFNWR0ZFTGlnaHRFbGVtZW50Kj4obm9kZSk7IAogICAgICAgICAgICAgcmV0dXJuIGxp
Z2h0Tm9kZS0+bGlnaHRTb3VyY2UoKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0ZvbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZvbnQuY3BwCShy
ZXZpc2lvbiA3NDM5MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZvbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxNSArMjcsMTUgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29s
b3IuaCIKLSNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgogI2luY2x1ZGUgIlNWR0FsdEdseXBo
RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZvbnREYXRhLmgiCi0jaW5jbHVkZSAiU1ZHR2x5cGhF
bGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHR2x5cGhNYXAuaCIKICNpbmNsdWRlICJTVkdGb250RWxl
bWVudC5oIgogI2luY2x1ZGUgIlNWR0ZvbnRGYWNlRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0ds
eXBoRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0dseXBoTWFwLmgiCiAjaW5jbHVkZSAiU1ZHTWlz
c2luZ0dseXBoRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAiU2lt
cGxlRm9udERhdGEuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V1RGOjpVbmljb2RlOwpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBpbmxpbmUgZmxvYXQgY29udmVydEVtVW5pdFRvUGl4ZWwoZmxvYXQgZm9udFNpemUsIGZs
b2F0IHVuaXRzUGVyRW0sIGZsb2F0IHZhbHVlKQogewotICAgIGlmICh1bml0c1BlckVtID09IDAu
MGYpCisgICAgaWYgKCF1bml0c1BlckVtKQogICAgICAgICByZXR1cm4gMC4wZjsKIAogICAgIHJl
dHVybiB2YWx1ZSAqIGZvbnRTaXplIC8gdW5pdHNQZXJFbTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3NDM5MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01ODMsNyArNTgzLDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpidWls
ZFNoYWRvd0FuZEluc3RhbgogI2lmZGVmIERVTVBfU0hBRE9XX1RSRUUKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKIAotICAgIFBhc3NSZWZQdHI8WE1MU2VyaWFsaXplcj4gc2VyaWFsaXplciA9
IFhNTFNlcmlhbGl6ZXI6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxYTUxTZXJpYWxpemVyPiBzZXJp
YWxpemVyID0gWE1MU2VyaWFsaXplcjo6Y3JlYXRlKCk7CiAKICAgICBTdHJpbmcgbWFya3VwID0g
c2VyaWFsaXplci0+c2VyaWFsaXplVG9TdHJpbmcoc2hhZG93Um9vdCwgZWMpOwogICAgIEFTU0VS
VCghZWMpOwpAQCAtNjI3LDE1ICs2MjcsMTUgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpkZXRhY2go
KQogICAgIG1fdGFyZ2V0RWxlbWVudEluc3RhbmNlID0gMDsKIH0KIAotc3RhdGljIGJvb2wgaXNE
aXJlY3RSZWZlcmVuY2UoTm9kZSogbikKK3N0YXRpYyBib29sIGlzRGlyZWN0UmVmZXJlbmNlKE5v
ZGUqIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdGhUYWcp
IHx8Ci0gICAgICAgICAgIG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJlY3RUYWcpIHx8Ci0gICAg
ICAgICAgIG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmNpcmNsZVRhZykgfHwKLSAgICAgICAgICAg
bi0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZWxsaXBzZVRhZykgfHwKLSAgICAgICAgICAgbi0+aGFz
VGFnTmFtZShTVkdOYW1lczo6cG9seWdvblRhZykgfHwKLSAgICAgICAgICAgbi0+aGFzVGFnTmFt
ZShTVkdOYW1lczo6cG9seWxpbmVUYWcpIHx8Ci0gICAgICAgICAgIG4tPmhhc1RhZ05hbWUoU1ZH
TmFtZXM6OnRleHRUYWcpOworICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpw
YXRoVGFnKQorICAgICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpyZWN0VGFn
KQorICAgICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpjaXJjbGVUYWcpCisg
ICAgICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmVsbGlwc2VUYWcpCisgICAg
ICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBvbHlnb25UYWcpCisgICAgICAg
ICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnKQorICAgICAgICAg
ICB8fCBub2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0VGFnKTsKIH0KIAogdm9pZCBTVkdV
c2VFbGVtZW50Ojp0b0NsaXBQYXRoKFBhdGgmIHBhdGgpIGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>