<?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>56173</bug_id>
          
          <creation_ts>2011-03-11 00:45:45 -0800</creation_ts>
          <short_desc>Web Inspector: split InjectedScriptHost into InjectedScriptManager and InjectedScriptHost</short_desc>
          <delta_ts>2011-03-11 05:27:47 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>buildbot</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>365860</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-11 00:45:45 -0800</bug_when>
    <thetext>Web Inspector: split InjectedScriptHost into InjectedScriptManager and InjectedScriptHost. InjectedScriptHost should only be used by the injected script  to access native parts of web inspector. All script managing stuff should go into InjectedScriptManager. Also the plan is to have InspectorController own InjectedScriptManager along with agents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365864</commentid>
    <comment_count>1</comment_count>
      <attachid>85443</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-11 00:59:01 -0800</bug_when>
    <thetext>Created attachment 85443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365866</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-11 01:10:31 -0800</bug_when>
    <thetext>Attachment 85443 did not build on chromium:
Build output: http://queues.webkit.org/results/8132182</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365872</commentid>
    <comment_count>3</comment_count>
      <attachid>85443</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-11 01:18:57 -0800</bug_when>
    <thetext>Comment on attachment 85443
Patch

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

&gt; Source/WebCore/bindings/js/JSInjectedScriptManager.cpp:2
&gt; + * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.

I think this is all Google-originating code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365878</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-11 01:24:41 -0800</bug_when>
    <thetext>Attachment 85443 did not build on win:
Build output: http://queues.webkit.org/results/8133212</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365899</commentid>
    <comment_count>5</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-11 02:38:37 -0800</bug_when>
    <thetext>Committed r80837: &lt;http://trac.webkit.org/changeset/80837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365900</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-11 02:51:11 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80837 might have broken Qt Linux Release minimal, Qt Windows 32-bit Release, and Chromium Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365938</commentid>
    <comment_count>7</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-11 05:07:19 -0800</bug_when>
    <thetext>Reopening since the change was rolled out in r80839.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365939</commentid>
    <comment_count>8</comment_count>
      <attachid>85461</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-11 05:14:57 -0800</bug_when>
    <thetext>Created attachment 85461
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365942</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-11 05:27:47 -0800</bug_when>
    <thetext>Committed r80844: &lt;http://trac.webkit.org/changeset/80844&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85443</attachid>
            <date>2011-03-11 00:59:01 -0800</date>
            <delta_ts>2011-03-11 01:18:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56173-20110311115858.patch</filename>
            <type>text/plain</type>
            <size>96074</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA4MzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDU2NWNk
MTJiM2UyMTg5OTJmMDY1MWMzY2EzZjJlNjM5N2IxMzA1NC4uM2QzZjY3MGZlY2ZhMWJhMzQwZDVi
YmIyZDk5ZTRlZWZmYzNiYjIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU0MCw2ICs1NDAs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSW50OEFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorICAgIGJpbmRpbmdzL2pzL0pT
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFt
ZUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcApAQCAt
MTA0Myw2ICsxMDQ0LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5jcHAKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCiAgICAgaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKyAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZjdhMzM2ZGI5
Yjc3NjAzMWQ0OGY0NWEwNjQ1MDZlM2ZjMjU5ZDIzLi5kNGFiMTBiYjM5NGY4MWY4OTU5YjExZjAz
NjUwYzkwMDZiYzI5MGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEyIEBACisyMDExLTAzLTEx
ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNwbGl0IElu
amVjdGVkU2NyaXB0SG9zdCBpbnRvIEluamVjdGVkU2NyaXB0TWFuYWdlciBhbmQgSW5qZWN0ZWRT
Y3JpcHRIb3N0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjE3MworCisgICAgICAgIE1vdmVkIGFsbCBpbmplY3RlZCBzY3JpcHQgbWFuYWdpbmcgbG9n
aWMgaW50byBJbmplY3RlZFNjcmlwdE1hbmFnZXIgd2hpY2ggaXMgb3duZWQgYnkgSW5zcGVjdG9y
Q29udHJvbGxlci4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBy
bzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVkU2NyaXB0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0
ZWRXaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0
SG9zdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYWtSZWZlcmVuY2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbmplY3Rl
ZFNjcmlwdEhvc3RWOFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Y2FuQWNjZXNzSW5zcGVjdGVkV2lu
ZG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0SG9zdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0
SG9zdDo6SW5qZWN0ZWRTY3JpcHRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0SG9zdDo6fkluamVjdGVkU2NyaXB0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbnNwZWN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhv
c3Q6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0SG9zdDo6ZGF0YWJhc2VJZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHRIb3N0OjpzdG9yYWdlSWRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmluaXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpzZXRGcm9udGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmNsZWFyRnJvbnRlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6fkluamVjdGVkU2NyaXB0TWFuYWdl
cik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2Nvbm5lY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlw
dEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3Rl
ZFNjcmlwdEZvcklkKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6
aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpyZWxlYXNlT2JqZWN0R3JvdXApOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdFNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdFNjcmlwdCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmguCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFn
ZW50OjpJbnNwZWN0b3JBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6
aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2Vu
dDo6Zm9jdXNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpkaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6
OmNyZWF0ZUZyb250ZW5kTGlmZXRpbWVBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQWdlbnQ6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVB
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6On5JbnNwZWN0
b3JDb25zb2xlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50
OjpjbGVhckNvbnNvbGVNZXNzYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OnNldENvbnNvbGVNZXNzYWdlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFn
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9N
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5k
aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YWRkSW5zcGVjdGVk
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVUb0Zy
b250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9k
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UnVudGltZUFnZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUnVudGltZUFnZW50Ojp+SW5zcGVjdG9yUnVudGltZUFnZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZU9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpyZWxlYXNlT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVjdEdyb3VwKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisKIDIwMTEtMDMtMTEgIEJyaWFu
IFNhbG9tb24gIDxic2Fsb21vbkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUnVzc2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYzNjZTlhNWU5ZDBkMGRkMTgz
ZmY0ZjZjMWQ2YTJkMjJlOWFlYTgxNi4uZTlmYTg3NzBkZmUzMGJmNWM5MDEwNjY1ZDUwY2VjMmFk
MDFjOGQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTgyMSw2ICs4MjEsNyBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1
Y3Rvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3Vz
dG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250
ZW5kSG9zdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MTZB
cnJheUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJh
eUN1c3RvbS5jcHAgXApAQCAtMTk3MSw2ICsxOTcyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjODMxM2I5OTk4OTFiYjY5OTVkNzEw
MjdjOTgwMTg4ZjY0OWY2MDg4Li5kYTE3NDc5MDM4MTZhYjdkZjk2ZTIxZTViOGVhZGU0ODZlYjNj
OWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC03MzYsNiArNzM2LDcgQEAKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNJbWFnZURhdGFDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNJ
bnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU0ludDE2QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0lu
dDMyQXJyYXlDdXN0b20uY3BwJywKQEAgLTEwODMsNiArMTA4NCw3IEBACiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCS2V5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCcsCisgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50MTZBcnJheUN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDMyQXJyYXlD
dXN0b20uY3BwJywKQEAgLTIxODIsNiArMjE4NCw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmgn
LAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwJywKKyAg
ICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDE0YTdkM2I3YzkxNTY2
NDYzYTg1NWU5ZTM2ZDg5N2FkMmEzMjg0NTQuLjA5Nzc0ODUzMjUwZTU0MmE5MDNlZjI5NmJhYWY3
ZDRlOTc4M2Q3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zMDAsNiArMzAwLDcgQEAgdjggewogICAg
ICAgICBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwIFwKICAgICAgICAgYmluZGlu
Z3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9u
dGVuZEhvc3RDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3Vz
dG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAgXApA
QCAtNzkzLDYgKzc5NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5jcHAgXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgXAogICAgIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIFwKKyAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBcCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgXAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAgXApAQCAtMTcwOCw2ICsxNzEw
LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggXAogICAg
IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmggXAorICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBcCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1
Z2dlckFnZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCBkOWJjNzcxNjBjOGEwZDQ0ZjVjODlhMGZkY2ZlY2U1NWFmZWJhYjM1Li5hNmU4
OWY0MTljMGRhNjI3YjI4ZTcxMjQ0YmE3ZDQ5ODc0Zjk3MjcyIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjA0MzMsNiArNjA0MzMsNTggQEAK
IAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAi
CisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4z
MiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wK
KwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8
VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRl
YnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9MVENHfFdpbjMy
IgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAor
CQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGJpbmRpbmdzXGpzXEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCIKIAkJCQkJPgog
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTY1Nzg2LDYgKzY1ODM4LDE0IEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JBZ2VudC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg4NWRkNzA1M2M2ODU3
MWU3ZDkwMmVkMDU2NjBkZWUxZDZlODcwMTYuLjYzYjBjMDRjZDg2MTQwZjU5NTViODhlZDc3OWY2
M2I5YjA3M2RkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTU1OTksNiArNTU5OSw5IEBACiAJCUVENTAxREM2MEIyNDlGMjkw
MEFFMThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICov
OyB9OwogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZGMEM3QTQzMDYwMDk1
NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUVERUM5ODAzMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFREVDOTgwMjBB
RUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovOyB9OworCQlGMzE2Mzk2QjEzMjk0
ODFBMDBBNjQ5Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzMTYzOTY5MTMyOTQ4MUEwMEE2NDlDQiAv
KiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovOyB9OworCQlGMzE2Mzk2QzEzMjk0ODFBMDBB
NjQ5Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzE2Mzk2QTEzMjk0ODFBMDBBNjQ5Q0IgLyogSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmggKi87IH07CisJCUYzMTYzOTZFMTMyOTQ4NzYwMEE2NDlDQiAvKiBK
U0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGMzE2Mzk2RDEzMjk0ODc2MDBBNjQ5Q0IgLyogSlNJbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwICovOyB9OwogCQlGMzMzNUJGODEyRTA3REMzMDBEMzMwMTEgLyogSW5z
cGVjdG9yQ29uc29sZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEYzMzM1QkY2MTJFMDdEQzMwMEQzMzAxMSAvKiBJbnNwZWN0b3JDb25zb2xl
QWdlbnQuY3BwICovOyB9OwogCQlGMzMzNUJGOTEyRTA3REMzMDBEMzMwMTEgLyogSW5zcGVjdG9y
Q29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGMzMzNUJGNzEyRTA3REMzMDBEMzMwMTEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50Lmgg
Ki87IH07CiAJCUYzM0YwMjgyMTIwOTQ3RjIwMEU1NzQzQSAvKiBTY3JpcHRQcm9maWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzM0YwMjgxMTIw
OTQ3RjIwMEU1NzQzQSAvKiBTY3JpcHRQcm9maWxlLmNwcCAqLzsgfTsKQEAgLTEyMDMwLDYgKzEy
MDMzLDkgQEAKIAkJRUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFZGl0b3JNYWMubW07IHBhdGgg
PSBtYWMvRWRpdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFREUzQTRG
RjBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29sb3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRURFQzk4
MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVQcmVmaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA0OyB1c2VzVGFicyA9IDA7IH07CisJCUYzMTYzOTY5MTMyOTQ4MUEwMEE2NDlD
QiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjMxNjM5NkExMzI5NDgxQTAwQTY0OUNCIC8qIEluamVjdGVkU2NyaXB0TWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1h
bmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjMxNjM5NkQxMzI5NDg3NjAw
QTY0OUNCIC8qIEpTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjMzMzVCRjYxMkUwN0RDMzAwRDMzMDExIC8qIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
MzMzNUJGNzEyRTA3REMzMDBEMzMwMTEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNvbnNvbGVBZ2VudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzNGMDI4MTEyMDk0N0YyMDBFNTc0M0EgLyogU2Ny
aXB0UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jp
cHRQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMDI1LDYgKzEz
MDMxLDggQEAKIAkJCQk3QTBFNzZGNjEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcCAqLywKIAkJCQk3QTBFNzZGNzEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3Jp
cHRIb3N0LmggKi8sCiAJCQkJN0EwRTc2RjgxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVjdGVkU2Ny
aXB0SG9zdC5pZGwgKi8sCisJCQkJRjMxNjM5NjkxMzI5NDgxQTAwQTY0OUNCIC8qIEluamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAgKi8sCisJCQkJRjMxNjM5NkExMzI5NDgxQTAwQTY0OUNCIC8qIElu
amVjdGVkU2NyaXB0TWFuYWdlci5oICovLAogCQkJCTdBNTYzRjk1MTJERjVDOTEwMEY0NTM2RCAv
KiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAqLywKIAkJCQk0RjJEMjA1MzEyRUFFN0IzMDA1QzI4
NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwICovLAogCQkJCTRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3
NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovLApAQCAtMTgwMDYsNiArMTgwMTQsNyBAQAogCQkJCUM1
ODVBNjVEMTFENEZBQjIwMDRDM0U0QiAvKiBKU0lEQktleUN1c3RvbS5jcHAgKi8sCiAJCQkJQTdE
MDMxOEQwRTkzNTQwMzAwRTI0QUNEIC8qIEpTSW1hZ2VEYXRhQ3VzdG9tLmNwcCAqLywKIAkJCQk3
QTBFNzZENDEwQkYwNTA3MDBBMDI3NkUgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3Bw
ICovLAorCQkJCUYzMTYzOTZEMTMyOTQ4NzYwMEE2NDlDQiAvKiBKU0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgKi8sCiAJCQkJN0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9y
RnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFQ0Y3NDEwNTA4RDlDMDAwOTlGQUIg
LyogSlNJbnQxNkFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFQ0Y3MzEwNTA4RDlDMDAwOTlG
QUIgLyogSlNJbnQzMkFycmF5Q3VzdG9tLmNwcCAqLywKQEAgLTIyNTc3LDYgKzIyNTg2LDcgQEAK
IAkJCQk1OThENzdERjEzMjU0MUZBMDA3NjFCMjIgLyogSmF2YUFycmF5SlNDLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1OThENzdFMzEzMjU0MjBFMDA3NjFCMjIgLyogSmF2YUZpZWxkSlNDLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0QzRjk4MzEzMjZDOTM3MDAwOThBNjAgLyogVGV4dE9yaWVudGF0
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGMzE2Mzk2QzEzMjk0ODFBMDBBNjQ5Q0IgLyogSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1MjMyLDYgKzI1MjQyLDgg
QEAKIAkJCQk4MTVFNjE2NzEzMjU4N0FBMDBCNjIyQjAgLyogRGF0YVRyYW5zZmVySXRlbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4MTAyQzU4ODEzMjVCQjExMDBEREU2N0EgLyogU3RyaW5nQ2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUQ0RjUxREYxMzI3MjU0ODAwMTZGNTQxIC8q
IEhUTUxDb252ZXJ0ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlGMzE2Mzk2QjEzMjk0ODFBMDBB
NjQ5Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYz
MTYzOTZFMTMyOTQ4NzYwMEE2NDlDQiAvKiBKU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCBiYzFkODc3MTBhMzAxODUxNjMzYmRm
ZWZhYTRjN2E4ZGY1YWY4NjkyLi5lNDYwNDVhN2FjYjU0Y2E0OWFlZjc5OWQ5Y2I3ZTk4ZTAzNTIx
NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+Ci0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNSwzNyArMzUsMjAgQEAKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJDb25zb2xlLmgiCi0jaW5jbHVkZSAiSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2luY2x1ZGUgIkRh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiSlNEYXRhYmFzZS5oIgogI2VuZGlmCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0
SG9zdC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCi0jaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRv
d0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgotI2luY2x1ZGUgIkpTUmFuZ2UuaCIKLSNp
bmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogI2luY2x1ZGUgIlN0b3JhZ2UuaCIKICNpbmNs
dWRlICJKU1N0b3JhZ2UuaCIKICNlbmRpZgotI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgotI2lu
Y2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgotI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VDb2RlLmg+
Ci0jaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2su
aD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAjaW5jbHVkZSAiSmF2YVNjcmlwdENhbGxG
cmFtZS5oIgpAQCAtODksMzcgKzcyLDYgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0
Ojpub2RlQXNTY3JpcHRWYWx1ZShTY3JpcHRTdGF0ZSogc3RhdGUsIE5vZGUqIG5vZGUKICAgICBy
ZXR1cm4gU2NyaXB0VmFsdWUoc3RhdGUtPmdsb2JhbERhdGEoKSwgdG9KUyhzdGF0ZSwgbm9kZSkp
OwogfQogCi1TY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGVJbmplY3RlZFNj
cmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBsb25n
IGlkKQotewotICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc3RyaW5nVG9V
U3RyaW5nKHNvdXJjZSkpOwotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAg
SlNWYWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+Z2xvYmFsVGhpc1ZhbHVlKCk7
Ci0gICAgQ29tcGxldGlvbiBjb21wID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpldmFsdWF0ZShz
Y3JpcHRTdGF0ZSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIHNvdXJjZUNvZGUs
IGdsb2JhbFRoaXNWYWx1ZSk7Ci0gICAgaWYgKGNvbXAuY29tcGxUeXBlKCkgIT0gSlNDOjpOb3Jt
YWwgJiYgY29tcC5jb21wbFR5cGUoKSAhPSBKU0M6OlJldHVyblZhbHVlKQotICAgICAgICByZXR1
cm4gU2NyaXB0T2JqZWN0KCk7Ci0gICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gY29tcC52YWx1
ZSgpOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEoZnVuY3Rpb25WYWx1ZSwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZU5vbmUpCi0gICAgICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKLQotICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQodG9KUyhzY3JpcHRTdGF0ZSwg
Z2xvYmFsT2JqZWN0LCB0aGlzKSk7Ci0gICAgYXJncy5hcHBlbmQoZ2xvYmFsVGhpc1ZhbHVlKTsK
LSAgICBhcmdzLmFwcGVuZChqc051bWJlcihpZCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gSlND
OjpjYWxsKHNjcmlwdFN0YXRlLCBmdW5jdGlvblZhbHVlLCBjYWxsVHlwZSwgY2FsbERhdGEsIGds
b2JhbFRoaXNWYWx1ZSwgYXJncyk7Ci0gICAgaWYgKHJlc3VsdC5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gU2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1bHQuZ2V0T2JqZWN0KCkpOwot
ICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKLX0KLQotdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6
OmRpc2NhcmRJbmplY3RlZFNjcmlwdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCi17Ci0gICAg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgZ2xvYmFs
T2JqZWN0LT5zZXRJbmplY3RlZFNjcmlwdCgwKTsKLX0KLQogSlNWYWx1ZSBKU0luamVjdGVkU2Ny
aXB0SG9zdDo6Y3VycmVudENhbGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCkBAIC0xOTEsMzMgKzE0Myw2IEBAIEpTVmFsdWUgSlNJbmpl
Y3RlZFNjcmlwdEhvc3Q6OnN0b3JhZ2VJZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CiAKLUluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5q
ZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQotewotICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgSlNPYmplY3QqIGluamVjdGVkU2NyaXB0ID0gZ2xv
YmFsT2JqZWN0LT5pbmplY3RlZFNjcmlwdCgpOwotICAgIGlmIChpbmplY3RlZFNjcmlwdCkKLSAg
ICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgaW5q
ZWN0ZWRTY3JpcHQpKTsKLQotICAgIGlmICghY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KHNjcmlw
dFN0YXRlKSkKLSAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7Ci0KLSAgICBwYWlyPGxv
bmcsIFNjcmlwdE9iamVjdD4gaW5qZWN0ZWRTY3JpcHRPYmplY3QgPSBpbmplY3RTY3JpcHQoaW5q
ZWN0ZWRTY3JpcHRTb3VyY2UoKSwgc2NyaXB0U3RhdGUpOwotICAgIGdsb2JhbE9iamVjdC0+c2V0
SW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRPYmplY3Quc2Vjb25kLmpzT2JqZWN0KCkpOwot
ICAgIEluamVjdGVkU2NyaXB0IHJlc3VsdChpbmplY3RlZFNjcmlwdE9iamVjdC5zZWNvbmQpOwot
ICAgIG1faWRUb0luamVjdGVkU2NyaXB0LnNldChpbmplY3RlZFNjcmlwdE9iamVjdC5maXJzdCwg
cmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1ib29sIEluamVjdGVkU2NyaXB0SG9z
dDo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKLXsK
LSAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgIEpTRE9NV2luZG93
KiBpbnNwZWN0ZWRXaW5kb3cgPSB0b0pTRE9NV2luZG93KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpOwotICAgIGlmICghaW5zcGVjdGVkV2luZG93KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIGluc3BlY3RlZFdpbmRvdy0+YWxsb3dzQWNjZXNzRnJvbU5vRXJy
b3JNZXNzYWdlKHNjcmlwdFN0YXRlKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODQzY2Qy
YzNlNDJjMGJmNmZiNGUwYTAyMTI5ZmRhYmZkMTkyZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0w
LDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3
ZWJraXRAbWF0dGxpbGVrLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgorI2luY2x1ZGUg
IkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKKyNpbmNsdWRl
ICJKU0luamVjdGVkU2NyaXB0SG9zdC5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oIgorI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VDb2RlLmg+CisjaW5jbHVkZSA8cnVudGltZS9K
U0xvY2suaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlw
dChjb25zdCBTdHJpbmcmIHNvdXJjZSwgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBsb25nIGlk
KQoreworICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc3RyaW5nVG9VU3Ry
aW5nKHNvdXJjZSkpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Cisg
ICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgSlNW
YWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBzY3JpcHRTdGF0ZS0+Z2xvYmFsVGhpc1ZhbHVlKCk7Cisg
ICAgQ29tcGxldGlvbiBjb21wID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpldmFsdWF0ZShzY3Jp
cHRTdGF0ZSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIHNvdXJjZUNvZGUsIGds
b2JhbFRoaXNWYWx1ZSk7CisgICAgaWYgKGNvbXAuY29tcGxUeXBlKCkgIT0gSlNDOjpOb3JtYWwg
JiYgY29tcC5jb21wbFR5cGUoKSAhPSBKU0M6OlJldHVyblZhbHVlKQorICAgICAgICByZXR1cm4g
U2NyaXB0T2JqZWN0KCk7CisgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gY29tcC52YWx1ZSgp
OworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoZnVuY3Rpb25WYWx1ZSwgY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZU5vbmUpCisgICAgICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKworICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJncy5hcHBlbmQodG9KUyhzY3JpcHRTdGF0ZSwgZ2xv
YmFsT2JqZWN0LCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSkpOworICAgIGFyZ3MuYXBwZW5k
KGdsb2JhbFRoaXNWYWx1ZSk7CisgICAgYXJncy5hcHBlbmQoanNOdW1iZXIoaWQpKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChzY3JpcHRTdGF0ZSwgZnVuY3Rpb25WYWx1ZSwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFyZ3MpOworICAgIGlmIChyZXN1bHQu
aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgcmVz
dWx0LmdldE9iamVjdCgpKTsKKyAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7Cit9CisKK3ZvaWQg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHQoU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlKQoreworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBz
dGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpOworICAgIGdsb2JhbE9iamVjdC0+c2V0SW5qZWN0ZWRTY3JpcHQoMCk7Cit9CisK
K0luamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3Io
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQoreworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRp
Y19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSk7CisgICAgSlNPYmplY3QqIGluamVjdGVkU2NyaXB0ID0gZ2xvYmFsT2JqZWN0LT5pbmpl
Y3RlZFNjcmlwdCgpOworICAgIGlmIChpbmplY3RlZFNjcmlwdCkKKyAgICAgICAgcmV0dXJuIElu
amVjdGVkU2NyaXB0KFNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgaW5qZWN0ZWRTY3JpcHQpKTsK
KworICAgIGlmICghY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KHNjcmlwdFN0YXRlKSkKKyAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CisKKyAgICBwYWlyPGxvbmcsIFNjcmlwdE9iamVj
dD4gaW5qZWN0ZWRTY3JpcHRPYmplY3QgPSBpbmplY3RTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UoKSwgc2NyaXB0U3RhdGUpOworICAgIGdsb2JhbE9iamVjdC0+c2V0SW5qZWN0ZWRTY3JpcHQo
aW5qZWN0ZWRTY3JpcHRPYmplY3Quc2Vjb25kLmpzT2JqZWN0KCkpOworICAgIEluamVjdGVkU2Ny
aXB0IHJlc3VsdChpbmplY3RlZFNjcmlwdE9iamVjdC5zZWNvbmQpOworICAgIG1faWRUb0luamVj
dGVkU2NyaXB0LnNldChpbmplY3RlZFNjcmlwdE9iamVjdC5maXJzdCwgcmVzdWx0KTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitib29sIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNjZXNz
SW5zcGVjdGVkV2luZG93KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKK3sKKyAgICBKU0xvY2sg
bG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgIEpTRE9NV2luZG93KiBpbnNwZWN0ZWRX
aW5kb3cgPSB0b0pTRE9NV2luZG93KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
OworICAgIGlmICghaW5zcGVjdGVkV2luZG93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIGluc3BlY3RlZFdpbmRvdy0+YWxsb3dzQWNjZXNzRnJvbU5vRXJyb3JNZXNzYWdlKHNj
cmlwdFN0YXRlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IDdhMzNl
ZDBjYzE2MTY4NGY1NTlkMDc0ZTllMTYyOWE5NGExYmMwOTMuLjhkOTA5NGZmODhkOThjODEwNzlj
N2Y3ZjNhNTQ5ZDUzZjU1ZjBlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTMxLDI3ICszMSwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlY4SW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAKLSNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNs
dWRlICJEYXRhYmFzZS5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKLQog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCi0jaW5j
bHVkZSAiVjhET01XaW5kb3cuaCIKICNpbmNsdWRlICJWOERhdGFiYXNlLmgiCiAjaW5jbHVkZSAi
VjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJWOEphdmFTY3JpcHRDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAi
VjhTdG9yYWdlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTcxLDg2ICs2NCw2IEBAIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6
bm9kZUFzU2NyaXB0VmFsdWUoU2NyaXB0U3RhdGUqIHN0YXRlLCBOb2RlKiBub2RlCiAgICAgcmV0
dXJuIFNjcmlwdFZhbHVlKHRvVjgobm9kZSkpOwogfQogCi1zdGF0aWMgdm9pZCBXZWFrUmVmZXJl
bmNlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFt
ZXRlcikKLXsKLSAgICBJbmplY3RlZFNjcmlwdEhvc3QqIG5hdGl2ZU9iamVjdCA9IHN0YXRpY19j
YXN0PEluamVjdGVkU2NyaXB0SG9zdCo+KHBhcmFtZXRlcik7Ci0gICAgbmF0aXZlT2JqZWN0LT5k
ZXJlZigpOwotICAgIG9iamVjdC5EaXNwb3NlKCk7Ci19Ci0KLXN0YXRpYyB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gY3JlYXRlSW5qZWN0ZWRTY3JpcHRIb3N0VjhXcmFwcGVyKEluamVjdGVkU2NyaXB0
SG9zdCogaG9zdCkKLXsKLSAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IFY4
SW5qZWN0ZWRTY3JpcHRIb3N0OjpHZXRUZW1wbGF0ZSgpLT5HZXRGdW5jdGlvbigpOwotICAgIGlm
IChmdW5jdGlvbi5Jc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gUmV0dXJuIGlmIGFsbG9jYXRpb24g
ZmFpbGVkLgotICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7Ci0gICAgfQot
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBpbnN0YW5jZSA9IFNhZmVBbGxvY2F0aW9uOjpuZXdJ
bnN0YW5jZShmdW5jdGlvbik7Ci0gICAgaWYgKGluc3RhbmNlLklzRW1wdHkoKSkgewotICAgICAg
ICAvLyBBdm9pZCBzZXR0aW5nIHRoZSB3cmFwcGVyIGlmIGFsbG9jYXRpb24gZmFpbGVkLgotICAg
ICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7Ci0gICAgfQotICAgIFY4RE9NV3Jh
cHBlcjo6c2V0RE9NV3JhcHBlcihpbnN0YW5jZSwgJlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbmZv
LCBob3N0KTsKLSAgICAvLyBDcmVhdGUgYSB3ZWFrIHJlZmVyZW5jZSB0byB0aGUgdjggd3JhcHBl
ciBvZiBJbnNwZWN0b3JCYWNrZW5kIHRvIGRlcmVmCi0gICAgLy8gSW5zcGVjdG9yQmFja2VuZCB3
aGVuIHRoZSB3cmFwcGVyIGlzIGdhcmJhZ2UgY29sbGVjdGVkLgotICAgIGhvc3QtPnJlZigpOwot
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdlYWtIYW5kbGUgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0Pjo6TmV3KGluc3RhbmNlKTsKLSAgICB3ZWFrSGFuZGxlLk1ha2VXZWFrKGhv
c3QsICZXZWFrUmVmZXJlbmNlQ2FsbGJhY2spOwotICAgIHJldHVybiBpbnN0YW5jZTsKLX0KLQot
U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29u
c3QgU3RyaW5nJiBzY3JpcHRTb3VyY2UsIFNjcmlwdFN0YXRlKiBpbnNwZWN0ZWRTY3JpcHRTdGF0
ZSwgbG9uZyBpZCkKLXsKLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0KLSAgICB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+IGluc3BlY3RlZENvbnRleHQgPSBpbnNwZWN0ZWRTY3JpcHRTdGF0ZS0+
Y29udGV4dCgpOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoaW5zcGVjdGVk
Q29udGV4dCk7Ci0KLSAgICAvLyBDYWxsIGN1c3RvbSBjb2RlIHRvIGNyZWF0ZSBJbmplY3RlZFNj
cmlwSG9zdCB3cmFwcGVyIHNwZWNpZmljIGZvciB0aGUgY29udGV4dAotICAgIC8vIGluc3RlYWQg
b2YgY2FsbGluZyB0b1Y4KCkgdGhhdCB3b3VsZCBjcmVhdGUgdGhlCi0gICAgLy8gd3JhcHBlciBp
biB0aGUgY3VycmVudCBjb250ZXh0LgotICAgIC8vIEZJWE1FOiBtYWtlIGl0IHBvc3NpYmxlIHRv
IHVzZSBnZW5lcmljIGJpbmRpbmdzIGZhY3RvcnkgZm9yIEluamVjdGVkU2NyaXB0SG9zdC4KLSAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gc2NyaXB0SG9zdFdyYXBwZXIgPSBjcmVhdGVJbmplY3Rl
ZFNjcmlwdEhvc3RWOFdyYXBwZXIodGhpcyk7Ci0gICAgaWYgKHNjcmlwdEhvc3RXcmFwcGVyLklz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOwotCi0gICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IHdpbmRvd0dsb2JhbCA9IGluc3BlY3RlZENvbnRleHQtPkdsb2JhbCgpOwot
Ci0gICAgLy8gSW5qZWN0IGphdmFzY3JpcHQgaW50byB0aGUgY29udGV4dC4gVGhlIGNvbXBpbGVk
IHNjcmlwdCBpcyBzdXBwb3NlZCB0byBldmFsdWF0ZSBpbnRvCi0gICAgLy8gYSBzaW5nbGUgYW5v
bnltb3VzIGZ1bmN0aW9uKGl0J3MgYW5vbnltb3VzIHRvIGF2b2lkIGNsdXR0ZXJpbmcgdGhlIGds
b2JhbCBvYmplY3Qgd2l0aAotICAgIC8vIGluc3BlY3RvcidzIHN0dWZmKSB0aGUgZnVuY3Rpb24g
aXMgY2FsbGVkIGEgZmV3IGxpbmVzIGJlbG93IHdpdGggSW5qZWN0ZWRTY3JpcHRIb3N0IHdyYXBw
ZXIsCi0gICAgLy8gaW5qZWN0ZWQgc2NyaXB0IGlkIGFuZCBleHBsaWNpdCByZWZlcmVuY2UgdG8g
dGhlIGluc3BlY3RlZCBnbG9iYWwgb2JqZWN0LiBUaGUgZnVuY3Rpb24gaXMgZXhwZWN0ZWQKLSAg
ICAvLyB0byBjcmVhdGUgYW5kIGNvbmZpZ3VyZSBJbmplY3RlZFNjcmlwdCBpbnN0YW5jZSB0aGF0
IGlzIGdvaW5nIHRvIGJlIHVzZWQgYnkgdGhlIGluc3BlY3Rvci4KLSAgICB2ODo6TG9jYWw8djg6
OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZSh2OFN0cmluZyhzY3JpcHRTb3Vy
Y2UpKTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2ID0gc2NyaXB0LT5SdW4oKTsKLSAgICBB
U1NFUlQoIXYuSXNFbXB0eSgpKTsKLSAgICBBU1NFUlQodi0+SXNGdW5jdGlvbigpKTsKLQotICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmdzW10gPSB7Ci0gICAgICBzY3JpcHRIb3N0V3JhcHBl
ciwKLSAgICAgIHdpbmRvd0dsb2JhbCwKLSAgICAgIHY4OjpOdW1iZXI6Ok5ldyhpZCksCi0gICAg
fTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBpbmplY3RlZFNjcmlwdFZhbHVlID0gdjg6OkZ1
bmN0aW9uOjpDYXN0KCp2KS0+Q2FsbCh3aW5kb3dHbG9iYWwsIDMsIGFyZ3MpOwotICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBpbmplY3RlZFNjcmlwdCh2ODo6T2JqZWN0OjpDYXN0KCppbmplY3Rl
ZFNjcmlwdFZhbHVlKSk7Ci0gICAgcmV0dXJuIFNjcmlwdE9iamVjdChpbnNwZWN0ZWRTY3JpcHRT
dGF0ZSwgaW5qZWN0ZWRTY3JpcHQpOwotfQotCi12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6ZGlz
Y2FyZEluamVjdGVkU2NyaXB0KFNjcmlwdFN0YXRlKiBpbnNwZWN0ZWRTY3JpcHRTdGF0ZSkKLXsK
LSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBjb250ZXh0ID0gaW5zcGVjdGVkU2NyaXB0U3RhdGUtPmNvbnRleHQoKTsKLSAgICB2ODo6
Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOwotCi0gICAgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwotICAgIC8vIFNraXAgcHJveHkg
b2JqZWN0LiBUaGUgcHJveHkgb2JqZWN0IHdpbGwgc3Vydml2ZSBwYWdlIG5hdmlnYXRpb24gd2hp
bGUgd2UgbmVlZAotICAgIC8vIGFuIG9iamVjdCB3aG9zZSBsaWZldGltZSBjb25zaWRlcyB3aXRo
IHRoYXQgb2YgdGhlIGluc3BlY3RlZCBjb250ZXh0LgotICAgIGdsb2JhbCA9IHY4OjpMb2NhbDx2
ODo6T2JqZWN0Pjo6Q2FzdChnbG9iYWwtPkdldFByb3RvdHlwZSgpKTsKLQotICAgIHY4OjpIYW5k
bGU8djg6OlN0cmluZz4ga2V5ID0gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmRldnRvb2xzSW5qZWN0
ZWRTY3JpcHQoKTsKLSAgICBnbG9iYWwtPkRlbGV0ZUhpZGRlblZhbHVlKGtleSk7Ci19Ci0KIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkTm9kZUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJJbmpl
Y3RlZFNjcmlwdEhvc3QuaW5zcGVjdGVkTm9kZSgpIik7CkBAIC0yMzEsNDYgKzE0NCw0IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6c3RvcmFnZUlkQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAot
SW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRIb3N0OjppbmplY3RlZFNjcmlwdEZvcihTY3Jp
cHRTdGF0ZSogaW5zcGVjdGVkU2NyaXB0U3RhdGUpCi17Ci0gICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOwotICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IGluc3BlY3Rl
ZFNjcmlwdFN0YXRlLT5jb250ZXh0KCk7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRT
Y29wZShjb250ZXh0KTsKLQotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250
ZXh0LT5HbG9iYWwoKTsKLSAgICAvLyBTa2lwIHByb3h5IG9iamVjdC4gVGhlIHByb3h5IG9iamVj
dCB3aWxsIHN1cnZpdmUgcGFnZSBuYXZpZ2F0aW9uIHdoaWxlIHdlIG5lZWQKLSAgICAvLyBhbiBv
YmplY3Qgd2hvc2UgbGlmZXRpbWUgY29uc2lkZXMgd2l0aCB0aGF0IG9mIHRoZSBpbnNwZWN0ZWQg
Y29udGV4dC4KLSAgICBnbG9iYWwgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QoZ2xvYmFs
LT5HZXRQcm90b3R5cGUoKSk7Ci0KLSAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGtleSA9IFY4
SGlkZGVuUHJvcGVydHlOYW1lOjpkZXZ0b29sc0luamVjdGVkU2NyaXB0KCk7Ci0gICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsID0gZ2xvYmFsLT5HZXRIaWRkZW5WYWx1ZShrZXkpOwotICAgIGlm
ICghdmFsLklzRW1wdHkoKSAmJiB2YWwtPklzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBJbmpl
Y3RlZFNjcmlwdChTY3JpcHRPYmplY3QoaW5zcGVjdGVkU2NyaXB0U3RhdGUsIHY4OjpMb2NhbDx2
ODo6T2JqZWN0Pjo6Q2FzdCh2YWwpKSk7Ci0KLSAgICBpZiAoIWNhbkFjY2Vzc0luc3BlY3RlZFdp
bmRvdyhpbnNwZWN0ZWRTY3JpcHRTdGF0ZSkpCi0gICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlw
dCgpOwotCi0gICAgcGFpcjxsb25nLCBTY3JpcHRPYmplY3Q+IGluamVjdGVkU2NyaXB0ID0gaW5q
ZWN0U2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGluc3BlY3RlZFNjcmlwdFN0YXRlKTsK
LSAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQoaW5qZWN0ZWRTY3JpcHQuc2Vjb25kKTsKLSAgICBt
X2lkVG9JbmplY3RlZFNjcmlwdC5zZXQoaW5qZWN0ZWRTY3JpcHQuZmlyc3QsIHJlc3VsdCk7Ci0g
ICAgZ2xvYmFsLT5TZXRIaWRkZW5WYWx1ZShrZXksIGluamVjdGVkU2NyaXB0LnNlY29uZC52OE9i
amVjdCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1ib29sIEluamVjdGVkU2NyaXB0SG9z
dDo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKLXsK
LSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBjb250ZXh0ID0gc2NyaXB0U3RhdGUtPmNvbnRleHQoKTsKLSAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7Ci0gICAgaWYgKGdsb2JhbC5Jc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0
VGVtcGxhdGUoKSwgZ2xvYmFsKTsKLSAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIEZyYW1lKiBmcmFtZSA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZSho
b2xkZXIpLT5mcmFtZSgpOwotCi0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShj
b250ZXh0KTsKLSAgICByZXR1cm4gVjhCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKFY4
QmluZGluZ1N0YXRlOjpPbmx5KCksIGZyYW1lLCBmYWxzZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MDA2YjhiODAw
MjA4ZTYxNzdlMjk2MzU1Nzk3ZjQwZTY1ODc1MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBA
IC0wLDAgKzEsMTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdC5oIgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgorI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhC
aW5kaW5nU3RhdGUuaCIKKyNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgorI2luY2x1ZGUgIlY4SGlk
ZGVuUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAiVjhJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNp
bmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0YXRpYyB2b2lkIFdlYWtSZWZlcmVuY2VDYWxsYmFjayh2ODo6UGVyc2lz
dGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCogcGFyYW1ldGVyKQoreworICAgIEluamVjdGVk
U2NyaXB0SG9zdCogbmF0aXZlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRTY3JpcHRIb3N0
Kj4ocGFyYW1ldGVyKTsKKyAgICBuYXRpdmVPYmplY3QtPmRlcmVmKCk7CisgICAgb2JqZWN0LkRp
c3Bvc2UoKTsKK30KKworc3RhdGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVJbmplY3Rl
ZFNjcmlwdEhvc3RWOFdyYXBwZXIoSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0KQoreworICAgIHY4
OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6Okdl
dFRlbXBsYXRlKCktPkdldEZ1bmN0aW9uKCk7CisgICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkg
eworICAgICAgICAvLyBSZXR1cm4gaWYgYWxsb2NhdGlvbiBmYWlsZWQuCisgICAgICAgIHJldHVy
biB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKKyAgICB9CisgICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IGluc3RhbmNlID0gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKGZ1bmN0aW9uKTsKKyAg
ICBpZiAoaW5zdGFuY2UuSXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEF2b2lkIHNldHRpbmcgdGhl
IHdyYXBwZXIgaWYgYWxsb2NhdGlvbiBmYWlsZWQuCisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8
djg6Ok9iamVjdD4oKTsKKyAgICB9CisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGlu
c3RhbmNlLCAmVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmluZm8sIGhvc3QpOworICAgIC8vIENyZWF0
ZSBhIHdlYWsgcmVmZXJlbmNlIHRvIHRoZSB2OCB3cmFwcGVyIG9mIEluc3BlY3RvckJhY2tlbmQg
dG8gZGVyZWYKKyAgICAvLyBJbnNwZWN0b3JCYWNrZW5kIHdoZW4gdGhlIHdyYXBwZXIgaXMgZ2Fy
YmFnZSBjb2xsZWN0ZWQuCisgICAgaG9zdC0+cmVmKCk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gd2Vha0hhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoaW5z
dGFuY2UpOworICAgIHdlYWtIYW5kbGUuTWFrZVdlYWsoaG9zdCwgJldlYWtSZWZlcmVuY2VDYWxs
YmFjayk7CisgICAgcmV0dXJuIGluc3RhbmNlOworfQorCitTY3JpcHRPYmplY3QgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdFNv
dXJjZSwgU2NyaXB0U3RhdGUqIGluc3BlY3RlZFNjcmlwdFN0YXRlLCBsb25nIGlkKQoreworICAg
IHY4OjpIYW5kbGVTY29wZSBzY29wZTsKKworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gaW5z
cGVjdGVkQ29udGV4dCA9IGluc3BlY3RlZFNjcmlwdFN0YXRlLT5jb250ZXh0KCk7CisgICAgdjg6
OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShpbnNwZWN0ZWRDb250ZXh0KTsKKworICAgIC8v
IENhbGwgY3VzdG9tIGNvZGUgdG8gY3JlYXRlIEluamVjdGVkU2NyaXBIb3N0IHdyYXBwZXIgc3Bl
Y2lmaWMgZm9yIHRoZSBjb250ZXh0CisgICAgLy8gaW5zdGVhZCBvZiBjYWxsaW5nIHRvVjgoKSB0
aGF0IHdvdWxkIGNyZWF0ZSB0aGUKKyAgICAvLyB3cmFwcGVyIGluIHRoZSBjdXJyZW50IGNvbnRl
eHQuCisgICAgLy8gRklYTUU6IG1ha2UgaXQgcG9zc2libGUgdG8gdXNlIGdlbmVyaWMgYmluZGlu
Z3MgZmFjdG9yeSBmb3IgSW5qZWN0ZWRTY3JpcHRIb3N0LgorICAgIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBzY3JpcHRIb3N0V3JhcHBlciA9IGNyZWF0ZUluamVjdGVkU2NyaXB0SG9zdFY4V3JhcHBl
cihtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSk7CisgICAgaWYgKHNjcmlwdEhvc3RXcmFwcGVy
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworCisgICAgdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IHdpbmRvd0dsb2JhbCA9IGluc3BlY3RlZENvbnRleHQtPkdsb2JhbCgp
OworCisgICAgLy8gSW5qZWN0IGphdmFzY3JpcHQgaW50byB0aGUgY29udGV4dC4gVGhlIGNvbXBp
bGVkIHNjcmlwdCBpcyBzdXBwb3NlZCB0byBldmFsdWF0ZSBpbnRvCisgICAgLy8gYSBzaW5nbGUg
YW5vbnltb3VzIGZ1bmN0aW9uKGl0J3MgYW5vbnltb3VzIHRvIGF2b2lkIGNsdXR0ZXJpbmcgdGhl
IGdsb2JhbCBvYmplY3Qgd2l0aAorICAgIC8vIGluc3BlY3RvcidzIHN0dWZmKSB0aGUgZnVuY3Rp
b24gaXMgY2FsbGVkIGEgZmV3IGxpbmVzIGJlbG93IHdpdGggSW5qZWN0ZWRTY3JpcHRIb3N0IHdy
YXBwZXIsCisgICAgLy8gaW5qZWN0ZWQgc2NyaXB0IGlkIGFuZCBleHBsaWNpdCByZWZlcmVuY2Ug
dG8gdGhlIGluc3BlY3RlZCBnbG9iYWwgb2JqZWN0LiBUaGUgZnVuY3Rpb24gaXMgZXhwZWN0ZWQK
KyAgICAvLyB0byBjcmVhdGUgYW5kIGNvbmZpZ3VyZSBJbmplY3RlZFNjcmlwdCBpbnN0YW5jZSB0
aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgYnkgdGhlIGluc3BlY3Rvci4KKyAgICB2ODo6TG9jYWw8
djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZSh2OFN0cmluZyhzY3JpcHRT
b3VyY2UpKTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2ID0gc2NyaXB0LT5SdW4oKTsKKyAg
ICBBU1NFUlQoIXYuSXNFbXB0eSgpKTsKKyAgICBBU1NFUlQodi0+SXNGdW5jdGlvbigpKTsKKwor
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmdzW10gPSB7CisgICAgICBzY3JpcHRIb3N0V3Jh
cHBlciwKKyAgICAgIHdpbmRvd0dsb2JhbCwKKyAgICAgIHY4OjpOdW1iZXI6Ok5ldyhpZCksCisg
ICAgfTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBpbmplY3RlZFNjcmlwdFZhbHVlID0gdjg6
OkZ1bmN0aW9uOjpDYXN0KCp2KS0+Q2FsbCh3aW5kb3dHbG9iYWwsIDMsIGFyZ3MpOworICAgIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBpbmplY3RlZFNjcmlwdCh2ODo6T2JqZWN0OjpDYXN0KCppbmpl
Y3RlZFNjcmlwdFZhbHVlKSk7CisgICAgcmV0dXJuIFNjcmlwdE9iamVjdChpbnNwZWN0ZWRTY3Jp
cHRTdGF0ZSwgaW5qZWN0ZWRTY3JpcHQpOworfQorCit2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdl
cjo6ZGlzY2FyZEluamVjdGVkU2NyaXB0KFNjcmlwdFN0YXRlKiBpbnNwZWN0ZWRTY3JpcHRTdGF0
ZSkKK3sKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OkxvY2FsPHY4
OjpDb250ZXh0PiBjb250ZXh0ID0gaW5zcGVjdGVkU2NyaXB0U3RhdGUtPmNvbnRleHQoKTsKKyAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOworCisgICAgdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOworICAgIC8vIFNraXAg
cHJveHkgb2JqZWN0LiBUaGUgcHJveHkgb2JqZWN0IHdpbGwgc3Vydml2ZSBwYWdlIG5hdmlnYXRp
b24gd2hpbGUgd2UgbmVlZAorICAgIC8vIGFuIG9iamVjdCB3aG9zZSBsaWZldGltZSBjb25zaWRl
cyB3aXRoIHRoYXQgb2YgdGhlIGluc3BlY3RlZCBjb250ZXh0LgorICAgIGdsb2JhbCA9IHY4OjpM
b2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChnbG9iYWwtPkdldFByb3RvdHlwZSgpKTsKKworICAgIHY4
OjpIYW5kbGU8djg6OlN0cmluZz4ga2V5ID0gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmRldnRvb2xz
SW5qZWN0ZWRTY3JpcHQoKTsKKyAgICBnbG9iYWwtPkRlbGV0ZUhpZGRlblZhbHVlKGtleSk7Cit9
CisKK0luamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRG
b3IoU2NyaXB0U3RhdGUqIGluc3BlY3RlZFNjcmlwdFN0YXRlKQoreworICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBp
bnNwZWN0ZWRTY3JpcHRTdGF0ZS0+Y29udGV4dCgpOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBj
b250ZXh0U2NvcGUoY29udGV4dCk7CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFs
ID0gY29udGV4dC0+R2xvYmFsKCk7CisgICAgLy8gU2tpcCBwcm94eSBvYmplY3QuIFRoZSBwcm94
eSBvYmplY3Qgd2lsbCBzdXJ2aXZlIHBhZ2UgbmF2aWdhdGlvbiB3aGlsZSB3ZSBuZWVkCisgICAg
Ly8gYW4gb2JqZWN0IHdob3NlIGxpZmV0aW1lIGNvbnNpZGVzIHdpdGggdGhhdCBvZiB0aGUgaW5z
cGVjdGVkIGNvbnRleHQuCisgICAgZ2xvYmFsID0gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0
KGdsb2JhbC0+R2V0UHJvdG90eXBlKCkpOworCisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBr
ZXkgPSBWOEhpZGRlblByb3BlcnR5TmFtZTo6ZGV2dG9vbHNJbmplY3RlZFNjcmlwdCgpOworICAg
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbCA9IGdsb2JhbC0+R2V0SGlkZGVuVmFsdWUoa2V5KTsK
KyAgICBpZiAoIXZhbC5Jc0VtcHR5KCkgJiYgdmFsLT5Jc09iamVjdCgpKQorICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0KGluc3BlY3RlZFNjcmlwdFN0YXRlLCB2ODo6
TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsKSkpOworCisgICAgaWYgKCFjYW5BY2Nlc3NJbnNw
ZWN0ZWRXaW5kb3coaW5zcGVjdGVkU2NyaXB0U3RhdGUpKQorICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHQoKTsKKworICAgIHBhaXI8bG9uZywgU2NyaXB0T2JqZWN0PiBpbmplY3RlZFNjcmlw
dCA9IGluamVjdFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBpbnNwZWN0ZWRTY3JpcHRT
dGF0ZSk7CisgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0KGluamVjdGVkU2NyaXB0LnNlY29uZCk7
CisgICAgbV9pZFRvSW5qZWN0ZWRTY3JpcHQuc2V0KGluamVjdGVkU2NyaXB0LmZpcnN0LCByZXN1
bHQpOworICAgIGdsb2JhbC0+U2V0SGlkZGVuVmFsdWUoa2V5LCBpbmplY3RlZFNjcmlwdC5zZWNv
bmQudjhPYmplY3QoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyhTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD4gY29udGV4dCA9IHNjcmlwdFN0YXRlLT5jb250ZXh0KCk7CisgICAgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOworICAgIGlmIChn
bG9iYWwuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01X
aW5kb3c6OkdldFRlbXBsYXRlKCksIGdsb2JhbCk7CisgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBGcmFtZSogZnJhbWUgPSBWOERPTVdpbmRvdzo6
dG9OYXRpdmUoaG9sZGVyKS0+ZnJhbWUoKTsKKworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250
ZXh0U2NvcGUoY29udGV4dCk7CisgICAgcmV0dXJuIFY4QmluZGluZ1NlY3VyaXR5OjpjYW5BY2Nl
c3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBmcmFtZSwgZmFsc2UpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29uc29sZU1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNz
YWdlLmNwcAppbmRleCA2M2ZiMDIwNmE1ZDI4ZTZhY2NjZDI4NmUyM2RhZWQ5YTczN2IyYzYzLi5h
NWRiM2Y2MGNmZjQ3ZTRkYzVjYzM4ZjcwODA0MTk5ZGZkMzc3MTMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2lu
Y2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgotI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0SG9zdC5oIgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCkBAIC04Niw3ICs4Niw3IEBAIENv
bnNvbGVNZXNzYWdlOjp+Q29uc29sZU1lc3NhZ2UoKQogewogfQogCi12b2lkIENvbnNvbGVNZXNz
YWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckZyb250ZW5kOjpDb25zb2xlKiBmcm9udGVuZCwg
SW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QpCit2b2lkIENvbnNvbGVNZXNz
YWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckZyb250ZW5kOjpDb25zb2xlKiBmcm9udGVuZCwg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiB7CiAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4ganNvbk9iaiA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAganNvbk9iai0+c2V0TnVtYmVyKCJzb3VyY2UiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fc291
cmNlKSk7CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRl
bmQoSW5zcGVjdG9yRnJvbnRlbmQ6OkNvbnNvbGUqIGZyb250ZW5kLCBJbmplY3RlCiAgICAgaWYg
KG1fdHlwZSA9PSBOZXR3b3JrRXJyb3JNZXNzYWdlVHlwZSkgCiAgICAgICAgIGpzb25PYmotPnNl
dE51bWJlcigicmVxdWVzdElkIiwgbV9yZXF1ZXN0SWQpOwogICAgIGlmIChtX2FyZ3VtZW50cyAm
JiBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgIEluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvciht
X2FyZ3VtZW50cy0+Z2xvYmFsU3RhdGUoKSk7CisgICAgICAgIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihtX2Fy
Z3VtZW50cy0+Z2xvYmFsU3RhdGUoKSk7CiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFz
Tm9WYWx1ZSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGpzb25Bcmdz
ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCk7ICsraSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAppbmRleCAyNmU1Njc1MjZkYTJiNThmMGIy
MGVlNjQ2NDAxYjZiZWIxNTVhODAzLi5jYmQ3OWM2NmIxMzlmNDI3OGI4OTg5MzY0NDc5YmIxZDBk
YWZhZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApAQCAt
MzksNyArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OworY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBj
bGFzcyBTY3JpcHRBcmd1bWVudHM7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG0sIGNvbnN0IFN0cmluZyYgcmVzcG9uc2VVcmwsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcik7CiAgICAgfkNvbnNvbGVNZXNzYWdlKCk7CiAKLSAgICB2b2lkIGFkZFRvRnJvbnRl
bmQoSW5zcGVjdG9yRnJvbnRlbmQ6OkNvbnNvbGUqLCBJbmplY3RlZFNjcmlwdEhvc3QqKTsKKyAg
ICB2b2lkIGFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQ6OkNvbnNvbGUqLCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqKTsKICAgICB2b2lkIHVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKElu
c3BlY3RvckZyb250ZW5kOjpDb25zb2xlKik7CiAgICAgdm9pZCBpbmNyZW1lbnRDb3VudCgpIHsg
KyttX3JlcGVhdENvdW50OyB9CiAgICAgYm9vbCBpc0VxdWFsKENvbnNvbGVNZXNzYWdlKiBtc2cp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5k
ZXggNmMxMTVkMDRkYjAxZGJiYTBjM2M2ZTkzMzI0YTY1YWM2Njc1MTI0Ni4uNDRiZGRmZWVhM2Rl
MWU5OWM3NDkwYzQzNTI0MWRiOTlhMjhkZTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgorI2luY2x1ZGUgIkluamVjdGVk
U2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
Ik5vZGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtMTc0LDcgKzE3NSw3IEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwKQogCiBib29sIEluamVjdGVkU2NyaXB0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5k
b3coKQogewotICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3Q6OmNhbkFjY2Vzc0luc3BlY3Rl
ZFdpbmRvdyhtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOworICAgIHJldHVy
biBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyhtX2luamVj
dGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0
OjptYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
CmluZGV4IDMzZDU0MTFjMTUwYTJiYmYzZDU1NThkNzY4NGQ2ZDQ3N2FiNWEzZjIuLjk2ODg1NTEy
NjAwYjYxYzNhYjRmN2Q4OWJiYjI4NDE5ZjRjNGZjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIEluamVjdGVk
U2NyaXB0X2gKICNkZWZpbmUgSW5qZWN0ZWRTY3JpcHRfaAogCi0jaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Qu
c2NyaXB0U3RhdGUoKTsgfQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBJbmplY3RlZFNjcmlwdCBJ
bmplY3RlZFNjcmlwdEhvc3Q6OmluamVjdGVkU2NyaXB0Rm9yKFNjcmlwdFN0YXRlKik7CisgICAg
ZnJpZW5kIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3Jp
cHRGb3IoU2NyaXB0U3RhdGUqKTsKICAgICBleHBsaWNpdCBJbmplY3RlZFNjcmlwdChTY3JpcHRP
YmplY3QpOwogCiAgICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggYWQ0ZGY0
NWNhZTJhZWZiODdlMDQyYTUwY2EwZWI2YzIxNmU1NWJhOS4uZjZkYzczOWU1NTNhZDliMzBkZDU2
NDdkYWViMThhMzk2ZTgzMTU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0LmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5oIgpAQCAtNjksMjkgKzY4LDQwIEBAIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5qZWN0ZWRTY3JpcHRI
b3N0OjpJbmplY3RlZFNjcmlwdEhvc3QoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50KQot
ICAgIDogbV9pbnNwZWN0b3JBZ2VudChpbnNwZWN0b3JBZ2VudCkKLSAgICAsIG1fbmV4dEluamVj
dGVkU2NyaXB0SWQoMSkKLSAgICAsIG1fbGFzdFdvcmtlcklkKDEgPDwgMzEpIC8vIERpc3Rpbmd1
aXNoIGlkcyBvZiBmYWtlIHdvcmtlcnMgZnJvbSByZWFsIG9uZXMsIHRvIG1pbmltaXplIHRoZSBj
aGFuY2VzIHRoZXkgb3ZlcmxhcC4KK1Bhc3NSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0PiBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpCiB7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmpl
Y3RlZFNjcmlwdEhvc3QoKSk7CiB9CiAKLUluamVjdGVkU2NyaXB0SG9zdDo6fkluamVjdGVkU2Ny
aXB0SG9zdCgpCitJbmplY3RlZFNjcmlwdEhvc3Q6OkluamVjdGVkU2NyaXB0SG9zdCgpCisgICAg
OiBtX2luc3BlY3RvckFnZW50KDApCisgICAgLCBtX2NvbnNvbGVBZ2VudCgwKQorI2lmIEVOQUJM
RShEQVRBQkFTRSkKKyAgICAsIG1fZGF0YWJhc2VBZ2VudCgwKQorI2VuZGlmCisjaWYgRU5BQkxF
KERPTV9TVE9SQUdFKQorICAgICwgbV9kb21TdG9yYWdlQWdlbnQoMCkKKyNlbmRpZgorICAgICwg
bV9mcm9udGVuZCgwKQorICAgICwgbV9sYXN0V29ya2VySWQoMSA8PCAzMSkgLy8gRGlzdGluZ3Vp
c2ggaWRzIG9mIGZha2Ugd29ya2VycyBmcm9tIHJlYWwgb25lcywgdG8gbWluaW1pemUgdGhlIGNo
YW5jZXMgdGhleSBvdmVybGFwLgogewogfQogCi12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6aW5z
cGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0SWQsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IGhpbnRzKQorSW5qZWN0ZWRTY3JpcHRIb3N0Ojp+SW5qZWN0ZWRTY3Jp
cHRIb3N0KCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmQqIGZlID0gZnJvbnRlbmQoKSkK
LSAgICAgICAgZmUtPmluc3BlY3RvcigpLT5pbnNwZWN0KG9iamVjdElkLT5hc09iamVjdCgpLCBo
aW50cy0+YXNPYmplY3QoKSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckNv
bnNvbGVNZXNzYWdlcygpCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6ZGlzY29ubmVjdCgpCiB7
Ci0gICAgaWYgKG1faW5zcGVjdG9yQWdlbnQpIHsKLSAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7
Ci0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmNvbnNvbGVBZ2VudCgpLT5jbGVhckNvbnNvbGVN
ZXNzYWdlcygmZXJyb3IpOwotICAgIH0KKyAgICBtX2luc3BlY3RvckFnZW50ID0gMDsKKyAgICBt
X2NvbnNvbGVBZ2VudCA9IDA7CisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgIG1fZGF0YWJhc2VB
Z2VudCA9IDA7CisjZW5kaWYKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisgICAgbV9kb21TdG9y
YWdlQWdlbnQgPSAwOworI2VuZGlmCisgICAgbV9mcm9udGVuZCA9IDA7CiB9CiAKIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRIb3N0OjphZGRJbnNwZWN0ZWROb2RlKE5vZGUqIG5vZGUpCkBAIC0xMDYsNiAr
MTE2LDIwIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckluc3BlY3RlZE5vZGVzKCkK
ICAgICBtX2luc3BlY3RlZE5vZGVzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRI
b3N0OjppbnNwZWN0SW1wbChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvYmplY3RJZCwgUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaGludHMpCit7CisgICAgaWYgKG1fZnJvbnRlbmQpCisg
ICAgICAgIG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5pbnNwZWN0KG9iamVjdElkLT5hc09iamVj
dCgpLCBoaW50cy0+YXNPYmplY3QoKSk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpj
bGVhckNvbnNvbGVNZXNzYWdlcygpCit7CisgICAgaWYgKG1fY29uc29sZUFnZW50KSB7CisgICAg
ICAgIEVycm9yU3RyaW5nIGVycm9yOworICAgICAgICBtX2NvbnNvbGVBZ2VudC0+Y2xlYXJDb25z
b2xlTWVzc2FnZXMoJmVycm9yKTsKKyAgICB9Cit9CisKIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0
Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgUGFzdGVib2FyZDo6Z2VuZXJh
bFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRleHQodGV4dCk7CkBAIC0xMjEsOCArMTQ1LDggQEAg
Tm9kZSogSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWROb2RlKHVuc2lnbmVkIGxvbmcgbnVt
KQogI2lmIEVOQUJMRShEQVRBQkFTRSkKIGxvbmcgSW5qZWN0ZWRTY3JpcHRIb3N0OjpkYXRhYmFz
ZUlkSW1wbChEYXRhYmFzZSogZGF0YWJhc2UpCiB7Ci0gICAgaWYgKG1faW5zcGVjdG9yQWdlbnQg
JiYgbV9pbnNwZWN0b3JBZ2VudC0+ZGF0YWJhc2VBZ2VudCgpKQotICAgICAgICByZXR1cm4gbV9p
bnNwZWN0b3JBZ2VudC0+ZGF0YWJhc2VBZ2VudCgpLT5kYXRhYmFzZUlkKGRhdGFiYXNlKTsKKyAg
ICBpZiAobV9kYXRhYmFzZUFnZW50KQorICAgICAgICByZXR1cm4gbV9kYXRhYmFzZUFnZW50LT5k
YXRhYmFzZUlkKGRhdGFiYXNlKTsKICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpAQCAtMTMwLDcw
ICsxNTQsMTIgQEAgbG9uZyBJbmplY3RlZFNjcmlwdEhvc3Q6OmRhdGFiYXNlSWRJbXBsKERhdGFi
YXNlKiBkYXRhYmFzZSkKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiBsb25nIEluamVjdGVkU2Ny
aXB0SG9zdDo6c3RvcmFnZUlkSW1wbChTdG9yYWdlKiBzdG9yYWdlKQogewotICAgIGlmIChtX2lu
c3BlY3RvckFnZW50ICYmIG1faW5zcGVjdG9yQWdlbnQtPmRvbVN0b3JhZ2VBZ2VudCgpKQotICAg
ICAgICByZXR1cm4gbV9pbnNwZWN0b3JBZ2VudC0+ZG9tU3RvcmFnZUFnZW50KCktPnN0b3JhZ2VJ
ZChzdG9yYWdlKTsKKyAgICBpZiAobV9kb21TdG9yYWdlQWdlbnQpCisgICAgICAgIHJldHVybiBt
X2RvbVN0b3JhZ2VBZ2VudC0+c3RvcmFnZUlkKHN0b3JhZ2UpOwogICAgIHJldHVybiAwOwogfQog
I2VuZGlmCiAKLUluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3Jp
cHRGb3JJZChsb25nIGlkKQotewotICAgIHJldHVybiBtX2lkVG9JbmplY3RlZFNjcmlwdC5nZXQo
aWQpOwotfQotCi1JbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVjdGVkU2Ny
aXB0Rm9yT2JqZWN0SWQoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3RJZCkKLXsKLSAgICBsb25nIGlu
amVjdGVkU2NyaXB0SWQgPSAwOwotICAgIGJvb2wgc3VjY2VzcyA9IG9iamVjdElkLT5nZXROdW1i
ZXIoImluamVjdGVkU2NyaXB0SWQiLCAmaW5qZWN0ZWRTY3JpcHRJZCk7Ci0gICAgaWYgKHN1Y2Nl
c3MpCi0gICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdEZvcklkKGluamVjdGVkU2NyaXB0SWQp
OwotICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwotfQotCi1JbmplY3RlZFNjcmlwdCBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmluamVjdGVkU2NyaXB0Rm9yTWFpbkZyYW1lKCkKLXsKLSAgICByZXR1
cm4gaW5qZWN0ZWRTY3JpcHRGb3IobWFpbldvcmxkU2NyaXB0U3RhdGUobV9pbnNwZWN0b3JBZ2Vu
dC0+aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKSkpOwotfQotCi12b2lkIEluamVjdGVkU2Ny
aXB0SG9zdDo6ZGlzY2FyZEluamVjdGVkU2NyaXB0cygpCi17Ci0gICAgSWRUb0luamVjdGVkU2Ny
aXB0TWFwOjppdGVyYXRvciBlbmQgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5lbmQoKTsKLSAgICBm
b3IgKElkVG9JbmplY3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lkVG9JbmplY3RlZFNj
cmlwdC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGRpc2NhcmRJbmplY3RlZFNj
cmlwdChpdC0+c2Vjb25kLnNjcmlwdFN0YXRlKCkpOwotICAgIG1faWRUb0luamVjdGVkU2NyaXB0
LmNsZWFyKCk7Ci19Ci0KLXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpyZWxlYXNlT2JqZWN0R3Jv
dXAobG9uZyBpbmplY3RlZFNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQotewot
ICAgIGlmIChpbmplY3RlZFNjcmlwdElkKSB7Ci0gICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCA9IG1faWRUb0luamVjdGVkU2NyaXB0LmdldChpbmplY3RlZFNjcmlwdElkKTsK
LSAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICAgICAg
IGluamVjdGVkU2NyaXB0LnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91cCk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBhbGwgaW5qZWN0ZWQgc2NyaXB0cyBpZiBp
bmplY3RlZFNjcmlwdElkIGlzIG5vdCBzcGVjaWZpZWQuCi0gICAgICAgICBmb3IgKElkVG9Jbmpl
Y3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5iZWdpbigp
OyBpdCAhPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgICAg
aXQtPnNlY29uZC5yZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0R3JvdXApOwotICAgIH0KLX0KLQot
SW5zcGVjdG9yRnJvbnRlbmQqIEluamVjdGVkU2NyaXB0SG9zdDo6ZnJvbnRlbmQoKQotewotICAg
IGlmICghbV9pbnNwZWN0b3JBZ2VudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1f
aW5zcGVjdG9yQWdlbnQtPmZyb250ZW5kKCk7Ci19Ci0KLVN0cmluZyBJbmplY3RlZFNjcmlwdEhv
c3Q6OmluamVjdGVkU2NyaXB0U291cmNlKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KEluamVjdGVkU2NyaXB0U291cmNlX2pzKSwgc2l6ZW9mKEluamVjdGVk
U2NyaXB0U291cmNlX2pzKSk7Ci19Ci0KLXBhaXI8bG9uZywgU2NyaXB0T2JqZWN0PiBJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmluamVjdFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlKQotewotICAgIGxvbmcgaWQgPSBtX25leHRJbmplY3RlZFNjcmlwdElk
Kys7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGlkLCBjcmVhdGVJbmplY3RlZFNjcmlwdChz
b3VyY2UsIHNjcmlwdFN0YXRlLCBpZCkpOwotfQotCiAjaWYgRU5BQkxFKFdPUktFUlMpCiBsb25n
IEluamVjdGVkU2NyaXB0SG9zdDo6bmV4dFdvcmtlcklkKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAppbmRleCBjZGIxZTY0ZWRjZWNjNmExN2U0
OThhYjdhYWRiNWRkMDc0NTBmMjFhLi4yNjFjMDlmNGEwOGMzYTdjOTYxMjAwZjI1OTM3ZDA5M2Fm
Yzc2Y2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5oCkBAIC00Myw2ICs0MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFi
YXNlOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CitjbGFzcyBJbnNwZWN0b3JBZ2VudDsKK2NsYXNz
IEluc3BlY3RvckNvbnNvbGVBZ2VudDsKK2NsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDsK
K2NsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsK
IGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIE5vZGU7CkBAIC01MywyOCArNTcsNDMgQEAg
Y2xhc3MgU3RvcmFnZTsKIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEluamVjdGVkU2NyaXB0SG9zdD4KIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbmplY3RlZFNjcmlwdEhvc3Q+IGNyZWF0ZShJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdl
bnQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0PiBjcmVhdGUoKTsK
KyAgICB+SW5qZWN0ZWRTY3JpcHRIb3N0KCk7CisKKyAgICB2b2lkIGluaXQoSW5zcGVjdG9yQWdl
bnQqIGluc3BlY3RvckFnZW50LAorICAgICAgICAgICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQq
IGNvbnNvbGVBZ2VudCwKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisgICAgICAgICAgICAgIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQqIGRhdGFiYXNlQWdlbnQsCisjZW5kaWYKKyNpZiBFTkFCTEUoRE9N
X1NUT1JBR0UpCisgICAgICAgICAgICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCogZG9tU3Rv
cmFnZUFnZW50CisjZW5kaWYKKyAgICAgICAgKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJbmplY3RlZFNjcmlwdEhvc3QoaW5zcGVjdG9yQWdlbnQpKTsKKyAgICAgICAgbV9p
bnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50OworICAgICAgICBtX2NvbnNvbGVBZ2VudCA9
IGNvbnNvbGVBZ2VudDsKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisgICAgICAgIG1fZGF0YWJhc2VB
Z2VudCA9IGRhdGFiYXNlQWdlbnQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisg
ICAgICAgIG1fZG9tU3RvcmFnZUFnZW50ID0gZG9tU3RvcmFnZUFnZW50OworI2VuZGlmCiAgICAg
fQorICAgIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKSB7IG1f
ZnJvbnRlbmQgPSBmcm9udGVuZDsgfQorICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpIHsgbV9mcm9u
dGVuZCA9IDA7IH0KIAogICAgIHN0YXRpYyBOb2RlKiBzY3JpcHRWYWx1ZUFzTm9kZShTY3JpcHRW
YWx1ZSk7CiAgICAgc3RhdGljIFNjcmlwdFZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKFNjcmlwdFN0
YXRlKiwgTm9kZSopOwogCi0gICAgfkluamVjdGVkU2NyaXB0SG9zdCgpOwotCi0gICAgSW5zcGVj
dG9yQWdlbnQqIGluc3BlY3RvckFnZW50KCkgeyByZXR1cm4gbV9pbnNwZWN0b3JBZ2VudDsgfQot
ICAgIHZvaWQgZGlzY29ubmVjdENvbnRyb2xsZXIoKSB7IG1faW5zcGVjdG9yQWdlbnQgPSAwOyB9
Ci0KLSAgICB2b2lkIGluc3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG9iamVj
dElkLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBoaW50cyk7Ci0gICAgdm9pZCBjbGVhckNv
bnNvbGVNZXNzYWdlcygpOworICAgIHZvaWQgZGlzY29ubmVjdCgpOwogCiAgICAgdm9pZCBhZGRJ
bnNwZWN0ZWROb2RlKE5vZGUqKTsKICAgICB2b2lkIGNsZWFySW5zcGVjdGVkTm9kZXMoKTsKIAor
ICAgIHZvaWQgaW5zcGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0SWQs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGhpbnRzKTsKKyAgICB2b2lkIGNsZWFyQ29uc29s
ZU1lc3NhZ2VzKCk7CiAgICAgdm9pZCBjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpOwogICAg
IE5vZGUqIGluc3BlY3RlZE5vZGUodW5zaWduZWQgbG9uZyBudW0pOwotCiAjaWYgRU5BQkxFKERB
VEFCQVNFKQogICAgIGxvbmcgZGF0YWJhc2VJZEltcGwoRGF0YWJhc2UqKTsKICNlbmRpZgpAQCAt
ODcsMjggKzEwNiwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWREZXN0cm95V29ya2VyKGxvbmcg
aWQpOwogI2VuZGlmCiAKLSAgICBwYWlyPGxvbmcsIFNjcmlwdE9iamVjdD4gaW5qZWN0U2NyaXB0
KGNvbnN0IFN0cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSopOwotICAgIEluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0Rm9yKFNjcmlwdFN0YXRlKik7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHRGb3JJZChsb25nKTsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dEZvck9iamVjdElkKEluc3BlY3Rvck9iamVjdCogb2JqZWN0SWQpOwotICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0Rm9yTWFpbkZyYW1lKCk7Ci0gICAgdm9pZCBkaXNjYXJkSW5qZWN0
ZWRTY3JpcHRzKCk7Ci0gICAgdm9pZCByZWxlYXNlT2JqZWN0R3JvdXAobG9uZyBpbmplY3RlZFNj
cmlwdElkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsKLQotICAgIHN0YXRpYyBib29sIGNh
bkFjY2Vzc0luc3BlY3RlZFdpbmRvdyhTY3JpcHRTdGF0ZSopOwotCiBwcml2YXRlOgotICAgIElu
amVjdGVkU2NyaXB0SG9zdChJbnNwZWN0b3JBZ2VudCopOwotICAgIEluc3BlY3RvckZyb250ZW5k
KiBmcm9udGVuZCgpOwotICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNvdXJjZSgpOwotICAgIFNj
cmlwdE9iamVjdCBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgU2Ny
aXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBsb25nIGlkKTsKLSAgICB2b2lkIGRpc2NhcmRJbmplY3Rl
ZFNjcmlwdChTY3JpcHRTdGF0ZSopOworICAgIEluamVjdGVkU2NyaXB0SG9zdCgpOwogCiAgICAg
SW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7Ci0gICAgbG9uZyBtX25leHRJbmplY3Rl
ZFNjcmlwdElkOworICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogbV9jb25zb2xlQWdlbnQ7Cisj
aWYgRU5BQkxFKERBVEFCQVNFKQorICAgIEluc3BlY3RvckRhdGFiYXNlQWdlbnQqIG1fZGF0YWJh
c2VBZ2VudDsKKyNlbmRpZgorI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKyAgICBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQqIG1fZG9tU3RvcmFnZUFnZW50OworI2VuZGlmCisgICAgSW5zcGVjdG9y
RnJvbnRlbmQqIG1fZnJvbnRlbmQ7CiAgICAgbG9uZyBtX2xhc3RXb3JrZXJJZDsKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8bG9uZywgSW5qZWN0ZWRTY3JpcHQ+IElkVG9JbmplY3RlZFNjcmlwdE1hcDsK
LSAgICBJZFRvSW5qZWN0ZWRTY3JpcHRNYXAgbV9pZFRvSW5qZWN0ZWRTY3JpcHQ7CiAgICAgVmVj
dG9yPFJlZlB0cjxOb2RlPiA+IG1faW5zcGVjdGVkTm9kZXM7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdmNzBlZDM4ODQwMWQ3ZGM4Y2NjZDc1MGEzMzljMTZjODU3Y2M5MWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApA
QCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxl
ayA8d2Via2l0QG1hdHRsaWxlay5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5o
IgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0U291cmNlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitQYXNzT3duUHRyPEluamVjdGVkU2NyaXB0TWFuYWdlcj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKCkpOworfQorCitJbmplY3RlZFNjcmlwdE1hbmFnZXI6OkluamVjdGVkU2NyaXB0TWFuYWdl
cigpCisgICAgOiBtX25leHRJbmplY3RlZFNjcmlwdElkKDEpCisgICAgLCBtX2luamVjdGVkU2Ny
aXB0SG9zdChJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKQoreworfQorCitJbmplY3RlZFNj
cmlwdE1hbmFnZXI6On5JbmplY3RlZFNjcmlwdE1hbmFnZXIoKQoreworfQorCit2b2lkIEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6ZGlzY29ubmVjdCgpCit7CisgICAgbV9pbmplY3RlZFNjcmlwdEhv
c3QtPmRpc2Nvbm5lY3QoKTsKKyAgICBtX2luamVjdGVkU2NyaXB0SG9zdC5jbGVhcigpOworfQor
CitJbmplY3RlZFNjcmlwdEhvc3QqIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3Jp
cHRIb3N0KCkKK3sKKyAgICByZXR1cm4gbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCk7Cit9CisK
K0luamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3JJ
ZChsb25nIGlkKQoreworICAgIHJldHVybiBtX2lkVG9JbmplY3RlZFNjcmlwdC5nZXQoaWQpOwor
fQorCitJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0
Rm9yT2JqZWN0SWQoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3RJZCkKK3sKKyAgICBsb25nIGluamVj
dGVkU2NyaXB0SWQgPSAwOworICAgIGJvb2wgc3VjY2VzcyA9IG9iamVjdElkLT5nZXROdW1iZXIo
ImluamVjdGVkU2NyaXB0SWQiLCAmaW5qZWN0ZWRTY3JpcHRJZCk7CisgICAgaWYgKHN1Y2Nlc3Mp
CisgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdEZvcklkKGluamVjdGVkU2NyaXB0SWQpOwor
ICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOworfQorCit2b2lkIEluamVjdGVkU2NyaXB0TWFu
YWdlcjo6ZGlzY2FyZEluamVjdGVkU2NyaXB0cygpCit7CisgICAgSWRUb0luamVjdGVkU2NyaXB0
TWFwOjppdGVyYXRvciBlbmQgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5lbmQoKTsKKyAgICBmb3Ig
KElkVG9JbmplY3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lkVG9JbmplY3RlZFNjcmlw
dC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGRpc2NhcmRJbmplY3RlZFNjcmlw
dChpdC0+c2Vjb25kLnNjcmlwdFN0YXRlKCkpOworICAgIG1faWRUb0luamVjdGVkU2NyaXB0LmNs
ZWFyKCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpyZWxlYXNlT2JqZWN0R3Jv
dXAobG9uZyBpbmplY3RlZFNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQorewor
ICAgIGlmIChpbmplY3RlZFNjcmlwdElkKSB7CisgICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCA9IG1faWRUb0luamVjdGVkU2NyaXB0LmdldChpbmplY3RlZFNjcmlwdElkKTsK
KyAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICAgICAg
IGluamVjdGVkU2NyaXB0LnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91cCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBhbGwgaW5qZWN0ZWQgc2NyaXB0cyBpZiBp
bmplY3RlZFNjcmlwdElkIGlzIG5vdCBzcGVjaWZpZWQuCisgICAgICAgICBmb3IgKElkVG9Jbmpl
Y3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5iZWdpbigp
OyBpdCAhPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgICAg
aXQtPnNlY29uZC5yZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0R3JvdXApOworICAgIH0KK30KKwor
U3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKQorewor
ICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oSW5qZWN0ZWRTY3JpcHRT
b3VyY2VfanMpLCBzaXplb2YoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMpKTsKK30KKworcGFpcjxs
b25nLCBTY3JpcHRPYmplY3Q+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0U2NyaXB0KGNv
bnN0IFN0cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCit7CisgICAgbG9u
ZyBpZCA9IG1fbmV4dEluamVjdGVkU2NyaXB0SWQrKzsKKyAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoaWQsIGNyZWF0ZUluamVjdGVkU2NyaXB0KHNvdXJjZSwgc2NyaXB0U3RhdGUsIGlkKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjM1MjY4ZmZhYjE5YzNmOGVhNDM0ZTgzYTNmOTNlNzgzZDc3MWJiZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmplY3RlZFNjcmlwdE1h
bmFnZXJfaAorI2RlZmluZSBJbmplY3RlZFNjcmlwdE1hbmFnZXJfaAorCisjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEluamVjdGVkU2NyaXB0OworY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0Owor
Y2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgU2NyaXB0T2JqZWN0OworCitjbGFzcyBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluamVjdGVkU2Ny
aXB0TWFuYWdlcik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyPiBjcmVhdGUoKTsKKyAgICB+SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCk7CisKKyAg
ICB2b2lkIGRpc2Nvbm5lY3QoKTsKKworICAgIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRT
Y3JpcHRIb3N0KCk7CisKKyAgICBwYWlyPGxvbmcsIFNjcmlwdE9iamVjdD4gaW5qZWN0U2NyaXB0
KGNvbnN0IFN0cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSopOworICAgIEluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0Rm9yKFNjcmlwdFN0YXRlKik7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHRGb3JJZChsb25nKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dEZvck9iamVjdElkKEluc3BlY3Rvck9iamVjdCogb2JqZWN0SWQpOworICAgIHZvaWQgZGlzY2Fy
ZEluamVjdGVkU2NyaXB0cygpOworICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKGxvbmcgaW5q
ZWN0ZWRTY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7CisKKyAgICBzdGF0aWMg
Ym9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coU2NyaXB0U3RhdGUqKTsKKworcHJpdmF0ZToK
KyAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIoKTsKKworICAgIFN0cmluZyBpbmplY3RlZFNjcmlw
dFNvdXJjZSgpOworICAgIFNjcmlwdE9iamVjdCBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBT
dHJpbmcmIHNvdXJjZSwgU2NyaXB0U3RhdGUqLCBsb25nIGlkKTsKKyAgICB2b2lkIGRpc2NhcmRJ
bmplY3RlZFNjcmlwdChTY3JpcHRTdGF0ZSopOworCisgICAgbG9uZyBtX25leHRJbmplY3RlZFNj
cmlwdElkOworICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBJbmplY3RlZFNjcmlwdD4gSWRUb0lu
amVjdGVkU2NyaXB0TWFwOworICAgIElkVG9JbmplY3RlZFNjcmlwdE1hcCBtX2lkVG9JbmplY3Rl
ZFNjcmlwdDsKKyAgICBSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0
SG9zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVk
KEluamVjdGVkU2NyaXB0TWFuYWdlcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5jcHAKaW5kZXggMTVjZWJhMDgzOTRjZmI3MDRmMTA5MTFkZDFiNTdjYjAwMzdl
YzQyNS4uYzczNzA2ZTg0NjI1NTU2M2E5MzAxMzc2MDlmYzE4MDI1OWU4YThjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC01Niw2ICs1Niw3IEBA
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0Lmgi
CiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JDU1NBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVu
dC5oIgpAQCAtMTMyLDE0ICsxMzMsMTQgQEAgc3RhdGljIGNvbnN0IGNoYXIgc2NyaXB0c1BhbmVs
TmFtZVtdID0gInNjcmlwdHMiOwogc3RhdGljIGNvbnN0IGNoYXIgY29uc29sZVBhbmVsTmFtZVtd
ID0gImNvbnNvbGUiOwogc3RhdGljIGNvbnN0IGNoYXIgcHJvZmlsZXNQYW5lbE5hbWVbXSA9ICJw
cm9maWxlcyI7CiAKLUluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChQYWdlKiBwYWdlLCBJ
bnNwZWN0b3JDbGllbnQqIGNsaWVudCkKK0luc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChQ
YWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgOiBtX2luc3BlY3RlZFBhZ2UocGFnZSkKICAg
ICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1faW5zdHJ1
bWVudGluZ0FnZW50cyhuZXcgSW5zdHJ1bWVudGluZ0FnZW50cygpKQotICAgICwgbV9pbmplY3Rl
ZFNjcmlwdEhvc3QoSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUodGhpcykpCisgICAgLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX3N0YXRl
KG5ldyBJbnNwZWN0b3JTdGF0ZShjbGllbnQpKQotICAgICwgbV9kb21BZ2VudChJbnNwZWN0b3JE
T01BZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQo
KSwgbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCkpKQorICAgICwgbV9kb21BZ2VudChJbnNwZWN0
b3JET01BZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5n
ZXQoKSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSkKICAgICAsIG1fY3NzQWdlbnQobmV3IEluc3Bl
Y3RvckNTU0FnZW50KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9kb21BZ2VudC5nZXQo
KSkpCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgICwgbV9kYXRhYmFzZUFnZW50KEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKQpAQCAt
MTUyLDkgKzE1Myw5IEBAIEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChQYWdlKiBwYWdl
LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICAsIG1fYXBwbGljYXRpb25DYWNoZUFnZW50
KG5ldyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBwYWdlKSkKICNlbmRpZgogICAgICwgbV9yZXNvdXJjZUFnZW50KEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2UsIG1f
c3RhdGUuZ2V0KCkpKQotICAgICwgbV9jb25zb2xlQWdlbnQobmV3IEluc3BlY3RvckNvbnNvbGVB
Z2VudChtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHRoaXMsIG1fc3RhdGUuZ2V0KCksIG1f
aW5qZWN0ZWRTY3JpcHRIb3N0LmdldCgpLCBtX2RvbUFnZW50LmdldCgpKSkKKyAgICAsIG1fY29u
c29sZUFnZW50KG5ldyBJbnNwZWN0b3JDb25zb2xlQWdlbnQobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCB0aGlzLCBtX3N0YXRlLmdldCgpLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIG1fZG9t
QWdlbnQuZ2V0KCkpKQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgICwgbV9k
ZWJ1Z2dlckFnZW50KEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRp
bmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2UsIG1faW5qZWN0ZWRTY3JpcHRIb3N0
LmdldCgpKSkKKyAgICAsIG1fZGVidWdnZXJBZ2VudChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBp
bmplY3RlZFNjcmlwdE1hbmFnZXIpKQogICAgICwgbV9icm93c2VyRGVidWdnZXJBZ2VudChJbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5n
ZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9kb21BZ2VudC5nZXQoKSwgbV9kZWJ1Z2dlckFnZW50Lmdl
dCgpLCB0aGlzKSkKICAgICAsIG1fcHJvZmlsZXJBZ2VudChJbnNwZWN0b3JQcm9maWxlckFnZW50
OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2NvbnNvbGVBZ2VudC5nZXQo
KSwgcGFnZSkpCiAjZW5kaWYKQEAgLTE2Myw2ICsxNjQsOCBAQCBJbnNwZWN0b3JBZ2VudDo6SW5z
cGVjdG9yQWdlbnQoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgQVNT
RVJUX0FSRyhwYWdlLCBwYWdlKTsKICAgICBBU1NFUlRfQVJHKGNsaWVudCwgY2xpZW50KTsKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmJpbmRJbnNwZWN0b3JBZ2VudChtX2luc3BlY3Rl
ZFBhZ2UsIHRoaXMpOworCisgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2Ny
aXB0SG9zdCgpLT5pbml0KHRoaXMsIG1fY29uc29sZUFnZW50LmdldCgpLCBtX2RhdGFiYXNlQWdl
bnQuZ2V0KCksIG1fZG9tU3RvcmFnZUFnZW50LmdldCgpKTsKIH0KIAogSW5zcGVjdG9yQWdlbnQ6
On5JbnNwZWN0b3JBZ2VudCgpCkBAIC0xOTMsNyArMTk2LDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2Vu
dDo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiAgICAgbV9pbnNwZWN0ZWRQYWdlID0gMDsKIAog
ICAgIHJlbGVhc2VGcm9udGVuZExpZmV0aW1lQWdlbnRzKCk7Ci0gICAgbV9pbmplY3RlZFNjcmlw
dEhvc3QtPmRpc2Nvbm5lY3RDb250cm9sbGVyKCk7CisgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXItPmRpc2Nvbm5lY3QoKTsKIAogICAgIG1fY2xpZW50LT5pbnNwZWN0b3JEZXN0cm95ZWQoKTsK
ICAgICBtX2NsaWVudCA9IDA7CkBAIC0yNTMsNyArMjU2LDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2Vu
dDo6Zm9jdXNOb2RlKCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmpl
Y3RlZFNjcmlwdEZvcihtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSkpOworICAgIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVk
U2NyaXB0Rm9yKG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZyYW1lKSk7CiAgICAgaWYgKGluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMjksMTkgKzMzMiwx
OSBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJh
bWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQqCiAKICAgICBpZiAoZW5hYmxlZCgpKSB7CiAgICAg
ICAgIGlmIChtX2Zyb250ZW5kICYmIGZyYW1lID09IG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1l
KCkpCi0gICAgICAgICAgICBtX2luamVjdGVkU2NyaXB0SG9zdC0+ZGlzY2FyZEluamVjdGVkU2Ny
aXB0cygpOworICAgICAgICAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmRpc2NhcmRJbmpl
Y3RlZFNjcmlwdHMoKTsKIAogICAgICAgICBpZiAobV9zY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZC5z
aXplKCkpIHsKICAgICAgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3Js
ZFNjcmlwdFN0YXRlKGZyYW1lKTsKICAgICAgICAgICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0
ZXJhdG9yIGl0ID0gbV9zY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZC5iZWdpbigpOwogICAgICAgICAg
ICAgICAgICAgaXQgIT0gbV9zY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZC5lbmQoKTsgKytpdCkgewot
ICAgICAgICAgICAgICAgIG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RTY3JpcHQoKml0LCBz
Y3JpcHRTdGF0ZSk7CisgICAgICAgICAgICAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmlu
amVjdFNjcmlwdCgqaXQsIHNjcmlwdFN0YXRlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmICghbV9pbnNwZWN0b3JFeHRlbnNpb25BUEkuaXNFbXB0eSgpKQotICAg
ICAgICBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0U2NyaXB0KG1faW5zcGVjdG9yRXh0ZW5z
aW9uQVBJLCBtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSkpOworICAgICAgICBtX2luamVjdGVk
U2NyaXB0TWFuYWdlci0+aW5qZWN0U2NyaXB0KG1faW5zcGVjdG9yRXh0ZW5zaW9uQVBJLCBtYWlu
V29ybGRTY3JpcHRTdGF0ZShmcmFtZSkpOwogfQogCiB2b2lkIEluc3BlY3RvckFnZW50OjpzZXRT
ZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKQEAgLTQzOCw3ICs0NDEsNyBAQCB2b2lkIElu
c3BlY3RvckFnZW50OjpkaXNjb25uZWN0RnJvbnRlbmQoKQogCiB2b2lkIEluc3BlY3RvckFnZW50
OjpjcmVhdGVGcm9udGVuZExpZmV0aW1lQWdlbnRzKCkKIHsKLSAgICBtX3J1bnRpbWVBZ2VudCA9
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y3JlYXRlKG1faW5qZWN0ZWRTY3JpcHRIb3N0LmdldCgp
KTsKKyAgICBtX3J1bnRpbWVBZ2VudCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y3JlYXRlKG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBtX2luc3BlY3RlZFBhZ2UpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckFnZW50OjpyZWxlYXNlRnJvbnRlbmRMaWZldGltZUFnZW50cygpCkBAIC01MDksNyArNTEy
LDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRlciog
bG9hZGVyKQogICAgICAgICBtX2Zyb250ZW5kLT5pbnNwZWN0b3IoKS0+aW5zcGVjdGVkVVJMQ2hh
bmdlZChsb2FkZXItPnVybCgpLnN0cmluZygpKTsKICAgICAgICAgbV9mcm9udGVuZC0+aW5zcGVj
dG9yKCktPnJlc2V0KCk7CiAgICAgfQotICAgIG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5kaXNjYXJk
SW5qZWN0ZWRTY3JpcHRzKCk7CisgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmRpc2NhcmRJ
bmplY3RlZFNjcmlwdHMoKTsKICNpZiBFTkFCTEUoV09SS0VSUykKICAgICBtX3dvcmtlcnMuY2xl
YXIoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApp
bmRleCAxNTFkYmE1MDRkMGZmMmRlOTkyNjk4YzMxNzQ0MzRmYTk1ZGJmZWFmLi5lYTNiOTk4YWQy
ZTYyM2NhNmU5MTZjZGVjYzAzMDc3YzIxYTg4MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnQuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIElu
amVjdGVkU2NyaXB0OwotY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OworY2xhc3MgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKQEAgLTEwMCwxMSArMTAw
LDEwIEBAIGNsYXNzIEluc3BlY3RvckFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bnNwZWN0b3JBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgSW5zcGVjdG9yQWdlbnQoUGFnZSosIEluc3BlY3RvckNsaWVudCopOworICAgIEluc3BlY3Rv
ckFnZW50KFBhZ2UqLCBJbnNwZWN0b3JDbGllbnQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsK
ICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JBZ2VudCgpOwogCiAgICAgSW5zcGVjdG9yQ2xpZW50KiBp
bnNwZWN0b3JDbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQotICAgIEluamVjdGVkU2NyaXB0
SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0KCkgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdEhvc3Qu
Z2V0KCk7IH0KIAogICAgIHZvaWQgaW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpOwogCkBAIC0yNDUs
NyArMjQ0LDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAg
IEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwogICAgIE93blB0cjxJbnN0cnVtZW50aW5n
QWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7Ci0gICAgUmVmUHRyPEluamVjdGVkU2NyaXB0
SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhvc3Q7CisgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBPd25QdHI8SW5zcGVjdG9yU3RhdGU+IG1fc3Rh
dGU7CiAgICAgT3duUHRyPEluc3BlY3RvckRPTUFnZW50PiBtX2RvbUFnZW50OwogICAgIE93blB0
cjxJbnNwZWN0b3JDU1NBZ2VudD4gbV9jc3NBZ2VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IDBjYmE3NzUwYzI4ZjY2ZTk2NjNmODllMmE2Y2RlNTNjOTFkNWUwZjIuLmU3YjVlZTcyNGZiYjAx
MGZmZWUwNDI3MGQ1ZmQ5OWE2MDBjZWU5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQogCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JB
Z2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4
IDAzNzk1OTBlZDQxMWM5M2JmMzg4MzRhM2Y2MDE1ZDY0NjRkZWRlYTIuLjZjODlhMWE2ZDVkNmNm
MDhiODE4ZjYxNDI4MDI5YzNlMWY5OGVmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNs
dWRlICJDb25zb2xlTWVzc2FnZS5oIgotI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgor
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZC5oIgpAQCAtNTUsMTEgKzU1LDExIEBAIHN0YXRpYyBjb25zdCBjaGFyIG1vbml0
b3JpbmdYSFJbXSA9ICJtb25pdG9yaW5nWEhSIjsKIHN0YXRpYyBjb25zdCBjaGFyIGNvbnNvbGVN
ZXNzYWdlc0VuYWJsZWRbXSA9ICJjb25zb2xlTWVzc2FnZXNFbmFibGVkIjsKIH0KIAotSW5zcGVj
dG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBJ
bnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRI
b3N0LCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCitJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
Okluc3BlY3RvckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEluc3BlY3RvclN0YXRlKiBz
dGF0ZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3Bl
Y3RvckRPTUFnZW50KiBkb21BZ2VudCkKICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0
cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0b3JBZ2VudChpbnNwZWN0b3JBZ2VudCkK
ICAgICAsIG1faW5zcGVjdG9yU3RhdGUoc3RhdGUpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0SG9z
dChpbmplY3RlZFNjcmlwdEhvc3QpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2luc3BlY3RvckRPTUFnZW50KGRvbUFnZW50KQog
ICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9wcmV2aW91c01lc3NhZ2UoMCkKQEAgLTc0LDcg
Kzc0LDcgQEAgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojp+SW5zcGVjdG9yQ29uc29sZUFnZW50KCkK
ICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMgPSAwOwogICAgIG1faW5zcGVjdG9yQWdlbnQgPSAw
OwogICAgIG1faW5zcGVjdG9yU3RhdGUgPSAwOwotICAgIG1faW5qZWN0ZWRTY3JpcHRIb3N0ID0g
MDsKKyAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlciA9IDA7CiAgICAgbV9pbnNwZWN0b3JET01B
Z2VudCA9IDA7CiB9CiAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKEVycm9yU3RyaW5nKikKICAgICBtX2NvbnNvbGVNZXNz
YWdlcy5jbGVhcigpOwogICAgIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQgPSAwOwogICAg
IG1fcHJldmlvdXNNZXNzYWdlID0gMDsKLSAgICBtX2luamVjdGVkU2NyaXB0SG9zdC0+cmVsZWFz
ZU9iamVjdEdyb3VwKDAgLyogcmVsZWFzZSB0aGUgZ3JvdXAgaW4gYWxsIHNjcmlwdHMgKi8sICJj
b25zb2xlIik7CisgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPnJlbGVhc2VPYmplY3RHcm91
cCgwIC8qIHJlbGVhc2UgdGhlIGdyb3VwIGluIGFsbCBzY3JpcHRzICovLCAiY29uc29sZSIpOwog
ICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBtX2luc3BlY3RvckFnZW50LT5k
b21BZ2VudCgpKQogICAgICAgICBkb21BZ2VudC0+cmVsZWFzZURhbmdsaW5nTm9kZXMoKTsKICAg
ICBpZiAobV9mcm9udGVuZCkKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNv
bGVBZ2VudDo6c2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgICAg
IG1fZnJvbnRlbmQtPnVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENvdW50KG1fZXhwaXJlZENv
bnNvbGVNZXNzYWdlQ291bnQpOwogICAgIHVuc2lnbmVkIG1lc3NhZ2VDb3VudCA9IG1fY29uc29s
ZU1lc3NhZ2VzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWVzc2FnZUNv
dW50OyArK2kpCi0gICAgICAgIG1fY29uc29sZU1lc3NhZ2VzW2ldLT5hZGRUb0Zyb250ZW5kKG1f
ZnJvbnRlbmQsIG1faW5qZWN0ZWRTY3JpcHRIb3N0KTsKKyAgICAgICAgbV9jb25zb2xlTWVzc2Fn
ZXNbaV0tPmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZCwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIp
OwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2UoUGFz
c093blB0cjxDb25zb2xlTWVzc2FnZT4gY29uc29sZU1lc3NhZ2UpCkBAIC0yNDMsNyArMjQzLDcg
QEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKFBhc3NPd25Q
dHI8Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGUKICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UgPSBj
b25zb2xlTWVzc2FnZS5nZXQoKTsKICAgICAgICAgbV9jb25zb2xlTWVzc2FnZXMuYXBwZW5kKGNv
bnNvbGVNZXNzYWdlKTsKICAgICAgICAgaWYgKG1faW5zcGVjdG9yU3RhdGUtPmdldEJvb2xlYW4o
Q29uc29sZUFnZW50U3RhdGU6OmNvbnNvbGVNZXNzYWdlc0VuYWJsZWQpICYmIG1fZnJvbnRlbmQp
Ci0gICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5k
LCBtX2luamVjdGVkU2NyaXB0SG9zdCk7CisgICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+
YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcik7CiAgICAg
fQogCiAgICAgaWYgKCFtX2Zyb250ZW5kICYmIG1fY29uc29sZU1lc3NhZ2VzLnNpemUoKSA+PSBt
YXhpbXVtQ29uc29sZU1lc3NhZ2VzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggOGQzYTU3MGI5MDlhMTI2ZWQ3MDAzNDIzODky
YjU5ZjhiMmRlZmI1Ny4uODhkNGQzZTQ5MGE1MTcyNzk1NTcyOGQwZTZiNGFhNzlmNDJlYmE4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
aApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3Rv
ckRPTUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JTdGF0
ZTsKLWNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKK2NsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdl
cjsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTU1LDcgKzU1LDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJy
b3JTdHJpbmc7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEluc3BlY3RvckNvbnNvbGVBZ2VudCk7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9y
Q29uc29sZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JBZ2VudCosIEluc3Bl
Y3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRIb3N0KiwgSW5zcGVjdG9yRE9NQWdlbnQqKTsKKyAg
ICBJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvckFn
ZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JE
T01BZ2VudCopOwogICAgIH5JbnNwZWN0b3JDb25zb2xlQWdlbnQoKTsKIAogICAgIHZvaWQgc2V0
Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChFcnJvclN0cmluZyogZXJyb3IsIGJvb2wgZW5hYmxlZCwg
Ym9vbCogbmV3U3RhdGUpOwpAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIEluc3RydW1l
bnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKICAgICBJbnNwZWN0b3JBZ2VudCog
bV9pbnNwZWN0b3JBZ2VudDsKICAgICBJbnNwZWN0b3JTdGF0ZSogbV9pbnNwZWN0b3JTdGF0ZTsK
LSAgICBJbmplY3RlZFNjcmlwdEhvc3QqIG1faW5qZWN0ZWRTY3JpcHRIb3N0OworICAgIEluamVj
dGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9y
RE9NQWdlbnQqIG1faW5zcGVjdG9yRE9NQWdlbnQ7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkNv
bnNvbGUqIG1fZnJvbnRlbmQ7CiAgICAgQ29uc29sZU1lc3NhZ2UqIG1fcHJldmlvdXNNZXNzYWdl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmluZGV4IDU3YWU3N2JjMzI2YjgzMjgxZjhhMWQxY2UxNWU3OGY0OWI1ODEzZTkuLjFiZmZkNGYy
ZjExYTdjODllOTE5YjExM2FlZTNkOTdkN2U3MjUwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0SG9zdC5oIgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5o
IgpAQCAtNTIsNyArNTMsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnNwZWN0b3JDb250
cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCog
aW5zcGVjdG9yQ2xpZW50KQotICAgIDogbV9pbnNwZWN0b3JBZ2VudChuZXcgSW5zcGVjdG9yQWdl
bnQocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKKyAgICA6IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlKCkpCisgICAgLCBtX2luc3BlY3RvckFnZW50
KG5ldyBJbnNwZWN0b3JBZ2VudChwYWdlLCBpbnNwZWN0b3JDbGllbnQsIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmdldCgpKSkKICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVu
dCkKICAgICAsIG1fb3BlbmluZ0Zyb250ZW5kKGZhbHNlKQogewpAQCAtOTksNiArMTAxLDcgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogewogICAgIG1fb3Bl
bmluZ0Zyb250ZW5kID0gZmFsc2U7CiAgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IG5ldyBJbnNw
ZWN0b3JGcm9udGVuZChtX2luc3BlY3RvckNsaWVudCk7CisgICAgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5zZXRGcm9udGVuZChtX2luc3BlY3RvckZyb250
ZW5kLmdldCgpKTsKICAgICBtX2luc3BlY3RvckFnZW50LT5zZXRGcm9udGVuZChtX2luc3BlY3Rv
ckZyb250ZW5kLmdldCgpKTsKIAogICAgIGlmICghSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpo
YXNGcm9udGVuZHMoKSkKQEAgLTE0Miw2ICsxNDUsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCgpCiAgICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jbGVhcigpOwogCiAgICAgbV9pbnNwZWN0b3JBZ2VudC0+ZGlzY29ubmVjdEZyb250ZW5kKCk7
CisgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5jbGVh
ckZyb250ZW5kKCk7CiAKICAgICBtX2luc3BlY3RvckZyb250ZW5kLmNsZWFyKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDdkYjAy
NGM3MzE1MjgwMmY4Y2IwNzEzMGI2OWE0YWY2YWFjODIxYmYuLjkzNTMyMzI1YjJhMTcwNTY2MjYw
NDgwNTRjNGRiNjU3ZjcyNTlhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKK2NsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvckFnZW50
OwogY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JDbGll
bnQ7CkBAIC0xMDIsNiArMTAzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgUG9zdFdvcmtlck5vdGlmaWNhdGlvblRvRnJvbnRlbmRUYXNrOwogCisgICAgT3duUHRyPElu
amVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgT3duUHRy
PEluc3BlY3RvckFnZW50PiBtX2luc3BlY3RvckFnZW50OwogICAgIE93blB0cjxJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBPd25Q
dHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA4
OTlhNTkzMDBmZDIxYzE4NmMyOGNkZjgwZjhjMjIyMTk4NjM5N2E2Li5kOGE5MWIxY2FlZmY5Yjk4
YmE3ODk5YmJkZTE1OTEzNjkzNGZhMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJIVE1M
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0SG9zdC5oIgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3Rh
dGUuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCkBAIC0yNDgsMTAgKzI0OSwx
MCBAQCB2b2lkIFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s6Om9uVGltZXIoVGltZXI8UmV2
YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzaz4qKQogICAgIG1fZWxlbWVudHMuY2xlYXIoKTsKIH0K
IAotSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwg
SW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QpCitJbnNwZWN0b3JET01BZ2Vu
dDo6SW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhp
bnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0b3JTdGF0ZShpbnNwZWN0b3JTdGF0
ZSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRIb3N0KGluamVjdGVkU2NyaXB0SG9zdCkKKyAgICAs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1f
ZnJvbnRlbmQoMCkKICAgICAsIG1fZG9tTGlzdGVuZXIoMCkKICAgICAsIG1fbGFzdE5vZGVJZCgx
KQpAQCAtMjYxLDcgKzI2Miw3IEBAIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJCiAKIEluc3BlY3Rv
ckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQogewotICAgIHJlc2V0KCk7CisgICAgQVNT
RVJUKCFtX2RvY3VtZW50KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0RnJvbnRl
bmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQpAQCAtNDE0LDcgKzQxNSw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncygpCiAgICAgbV9pZFRvTm9kZS5jbGVh
cigpOwogICAgIHJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CiAgICAgbV9jaGlsZHJlblJlcXVlc3Rl
ZC5jbGVhcigpOwotICAgIG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5jbGVhckluc3BlY3RlZE5vZGVz
KCk7CisgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5j
bGVhckluc3BlY3RlZE5vZGVzKCk7CiB9CiAKIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojpub2Rl
Rm9ySWQobG9uZyBpZCkKQEAgLTcyNCw3ICs3MjUsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjphZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQpCiAgICAgTm9kZSog
bm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5hZGRJbnNwZWN0ZWROb2RlKG5vZGUpOworICAg
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+YWRkSW5zcGVj
dGVkTm9kZShub2RlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJj
aChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVy
eSwgYm9vbCBydW5TeW5jaHJvbm91c2x5KQpAQCAtODM1LDcgKzgzNiw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiBlcnJvciwgbG9uZyBub2RlSWQs
IGNvbnN0IFN0cmluCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlVG9Gcm9udGVu
ZChFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgbG9u
Zyogbm9kZUlkKQogewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmpl
Y3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0KCkp
OworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0KCkpOwogICAgIE5v
ZGUqIG5vZGUgPSBpbmplY3RlZFNjcmlwdC5ub2RlRm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAg
IGlmIChub2RlKQogICAgICAgICAqbm9kZUlkID0gcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChub2Rl
KTsKQEAgLTEyMzMsNyArMTIzNCw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNw
ZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoTm9kZSogbm9kZSwgY29uc3QgU3RyCiAgICAgaWYg
KCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3Rl
ZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihtYWluV29y
bGRTY3JpcHRTdGF0ZShmcmFtZSkpOworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKG1haW5Xb3JsZFNj
cmlwdFN0YXRlKGZyYW1lKSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKaW5kZXggOThlMTBiN2QzMzU1ODMxZTI4N2IxNzJlODcwOGQ3OTNiY2VmMWIw
Yi4uY2U4NWIyYjQxMzIyMzM3Y2IzZjU2YmUxYzM1ZGU3YWRiOWQwYjUyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAK
ICNkZWZpbmUgSW5zcGVjdG9yRE9NQWdlbnRfaAogCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQu
aCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNj
cmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC05MSw5ICs5MSw5IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCop
ID0gMDsKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+
IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0
b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3Jp
cHRIb3N0KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTUFnZW50PiBjcmVhdGUo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUq
IGluc3BlY3RvclN0YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFu
YWdlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRE9NQWdl
bnQoaW5zdHJ1bWVudGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUsIGluamVjdGVkU2NyaXB0SG9z
dCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckRPTUFnZW50KGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGluc3BlY3RvclN0YXRlLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIpKTsK
ICAgICB9CiAKICAgICB+SW5zcGVjdG9yRE9NQWdlbnQoKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNXaGl0ZXNwYWNlKE5vZGUqKTsKIAogcHJpdmF0ZToK
LSAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3Rh
dGUqLCBJbmplY3RlZFNjcmlwdEhvc3QqKTsKKyAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsK
IAogICAgIC8vIE5vZGUtcmVsYXRlZCBtZXRob2RzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8Tm9kZT4sIGxvbmc+IE5vZGVUb0lkTWFwOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6
CiAKICAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAg
SW5zcGVjdG9yU3RhdGUqIG1faW5zcGVjdG9yU3RhdGU7Ci0gICAgSW5qZWN0ZWRTY3JpcHRIb3N0
KiBtX2luamVjdGVkU2NyaXB0SG9zdDsKKyAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3RvckZyb250ZW5kOjpET00qIG1fZnJvbnRl
bmQ7CiAgICAgRE9NTGlzdGVuZXIqIG1fZG9tTGlzdGVuZXI7CiAgICAgTm9kZVRvSWRNYXAgbV9k
b2N1bWVudE5vZGVUb0lkTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDBjZGMyYjAzMjQyMzZhYTczNWQ2OGQ2NmMx
M2NmNjgyOTVjZDQ3Y2QuLjMzMDMwZjE2YWU3MWQ2OWQ5MjU2ODhhZjRlNzU1YzUzMThiMzhkZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCi0j
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgpAQCAtNDksMTYgKzQ5
LDE2IEBAIHN0YXRpYyBjb25zdCBjaGFyIGVuYWJsZVdoZW5TaG93bltdID0gImRlYnVnZ2VyRW5h
YmxlV2hlblNob3duIjsKIHN0YXRpYyBjb25zdCBjaGFyIGphdmFTY3JpcHRCcmVha3BvaW50c1td
ID0gImphdmFTY3JpcHRCcmVha29waW50cyI7CiB9OwogCi1QYXNzT3duUHRyPEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3Rh
dGUsIFBhZ2UqIGluc3BlY3RlZFBhZ2UsIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3Jp
cHRIb3N0KQorUGFzc093blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBQYWdlKiBpbnNwZWN0ZWRQYWdlLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKIHsKLSAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50
cywgaW5zcGVjdG9yU3RhdGUsIGluc3BlY3RlZFBhZ2UsIGluamVjdGVkU2NyaXB0SG9zdCkpOwor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRGVidWdnZXJBZ2VudChpbnN0cnVtZW50
aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgaW5zcGVjdGVkUGFnZSwgaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKSk7CiB9CiAKLUluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9y
U3RhdGUqIGluc3BlY3RvclN0YXRlLCBQYWdlKiBpbnNwZWN0ZWRQYWdlLCBJbmplY3RlZFNjcmlw
dEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCkKK0luc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBQYWdlKiBpbnNwZWN0ZWRQYWdlLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICA6IG1faW5z
dHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0b3JT
dGF0ZShpbnNwZWN0b3JTdGF0ZSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShpbnNwZWN0ZWRQYWdl
KQotICAgICwgbV9pbmplY3RlZFNjcmlwdEhvc3QoaW5qZWN0ZWRTY3JpcHRIb3N0KQorICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9m
cm9udGVuZCgwKQogICAgICwgbV9wYXVzZWRTY3JpcHRTdGF0ZSgwKQogICAgICwgbV9qYXZhU2Ny
aXB0UGF1c2VTY2hlZHVsZWQoZmFsc2UpCkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKEVycm9yU3RyaW5nKiwg
bG9uZyBwYXVzZVMKIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2Fs
bEZyYW1lKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNhbGxGcmFt
ZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAs
IGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1
bHQpCiB7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2Ny
aXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChjYWxsRnJhbWVJZC5nZXQoKSk7Cisg
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChjYWxsRnJhbWVJZC5nZXQoKSk7CiAgICAgaWYg
KCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIGluamVjdGVkU2NyaXB0LmV2
YWx1YXRlT25DYWxsRnJhbWUoY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBp
bmNsdWRlQ29tbWFuZExpbmVBUEksIHJlc3VsdCk7CiB9CkBAIC0zMzgsNyArMzM4LDcgQEAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENh
bGxGcmFtZXMoKQogewogICAgIGlmICghbV9wYXVzZWRTY3JpcHRTdGF0ZSkKICAgICAgICAgcmV0
dXJuIEluc3BlY3RvclZhbHVlOjpudWxsKCk7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHQgPSBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobV9wYXVzZWRT
Y3JpcHRTdGF0ZSk7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVj
dGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3IobV9wYXVzZWRTY3JpcHRTdGF0ZSk7
CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclZhbHVlOjpudWxsKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApp
bmRleCAzOTQwMzRhNWYzMmI0ZmUyOTVlNjg4ZDQyZGIwMzcwZGY1NThkZGJhLi5iZTZiMDAxYTg5
ZjVkN2I0MDRjMTMzN2FkMGViYmJkYzNmNTJmMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7CitjbGFzcyBJ
bmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIElu
c3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclN0YXRlOwpAQCAtNjMsNyArNjMsNyBAQCBl
bnVtIERlYnVnZ2VyRXZlbnRUeXBlIHsKIGNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBw
dWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5z
cGVjdG9yRGVidWdnZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IGNyZWF0ZShJbnN0
cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBQYWdlKiwgSW5qZWN0ZWRTY3JpcHRI
b3N0Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4gY3Jl
YXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCk7
CiAKICAgICB2b2lkIHN0YXJ0VXNlckluaXRpYXRlZERlYnVnZ2luZygpOwpAQCAtMTA5LDcgKzEw
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExpc3RlbmVyKExpc3RlbmVyKiBsaXN0ZW5lcikg
eyBtX2xpc3RlbmVyID0gbGlzdGVuZXI7IH0KIAogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJ
bmplY3RlZFNjcmlwdEhvc3QqKTsKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqKTsKIAogICAgIHZvaWQgZW5hYmxlKGJvb2wgcmVzdG9yaW5nRnJvbVN0YXRlKTsKIApAQCAt
MTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgSW5zdHJ1bWVudGluZ0FnZW50cyogbV9pbnN0
cnVtZW50aW5nQWdlbnRzOwogICAgIEluc3BlY3RvclN0YXRlKiBtX2luc3BlY3RvclN0YXRlOwog
ICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKLSAgICBJbmplY3RlZFNjcmlwdEhvc3QqIG1faW5q
ZWN0ZWRTY3JpcHRIb3N0OworICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkRlYnVnZ2VyKiBtX2Zyb250ZW5k
OwogICAgIFNjcmlwdFN0YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRlOwogICAgIFNjcmlwdHNNYXAg
bV9zY3JpcHRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmNwcAppbmRleCBiYWRkOGUxODkzMDZmM2EzY2MzZjkzNGZhNTRmNzJhMjUzNjZi
NGY3Li43NWUyMTA1NThlOThiZjA5ZDJiYTFlNzcxNjU5Y2JhZjQ4OGJmNjFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAt
MzMsNTYgKzMzLDY5IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKKyNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIK
KyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0SG9zdCogaW5q
ZWN0ZWRTY3JpcHRIb3N0KQotICAgIDogbV9pbmplY3RlZFNjcmlwdEhvc3QoaW5qZWN0ZWRTY3Jp
cHRIb3N0KQorUGFzc093blB0cjxJbnNwZWN0b3JSdW50aW1lQWdlbnQ+IEluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6Y3JlYXRlKEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLCBQYWdlKiBpbnNwZWN0ZWRQYWdlKQogeworICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5z
cGVjdG9yUnVudGltZUFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlciwgaW5zcGVjdGVkUGFnZSkp
OwogfQogCi1JbnNwZWN0b3JSdW50aW1lQWdlbnQ6On5JbnNwZWN0b3JSdW50aW1lQWdlbnQoKSB7
IH0KK0luc3BlY3RvclJ1bnRpbWVBZ2VudDo6SW5zcGVjdG9yUnVudGltZUFnZW50KEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBQYWdlKiBpbnNwZWN0ZWRQYWdl
KQorICAgIDogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQor
ICAgICwgbV9pbnNwZWN0ZWRQYWdlKGluc3BlY3RlZFBhZ2UpCit7Cit9CisKK0luc3BlY3RvclJ1
bnRpbWVBZ2VudDo6fkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpCit7Cit9CiAKIHZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExp
bmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKIHsKLSAgICBJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlw
dEZvck1haW5GcmFtZSgpOworICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3Js
ZFNjcmlwdFN0YXRlKG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkpOworICAgIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVk
U2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGUoZXhwcmVzc2lvbiwgb2JqZWN0
R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgcmVzdWx0KTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlT24oRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPElu
c3BlY3RvclZhbHVlPiogcmVzdWx0KQogewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2Ny
aXB0ID0gbV9pbmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2Jq
ZWN0SWQuZ2V0KCkpOworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0
KCkpOwogICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICBpbmpl
Y3RlZFNjcmlwdC5ldmFsdWF0ZU9uKG9iamVjdElkLCBleHByZXNzaW9uLCByZXN1bHQpOwogfQog
CiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyos
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgYm9vbCBpZ25vcmVIYXNPd25Q
cm9wZXJ0eSwgYm9vbCBhYmJyZXZpYXRlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQp
CiB7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0
SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZC5nZXQoKSk7CisgICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5q
ZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZC5nZXQoKSk7CiAgICAgaWYgKCFpbmplY3Rl
ZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIGluamVjdGVkU2NyaXB0LmdldFByb3BlcnRp
ZXMob2JqZWN0SWQsIGlnbm9yZUhhc093blByb3BlcnR5LCBhYmJyZXZpYXRlLCByZXN1bHQpOwog
fQogCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2V0UHJvcGVydHlWYWx1ZShFcnJvclN0
cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiogcmVzdWx0KQogewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0g
bV9pbmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQu
Z2V0KCkpOworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0KCkpOwog
ICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICBpbmplY3RlZFNj
cmlwdC5zZXRQcm9wZXJ0eVZhbHVlKG9iamVjdElkLCBwcm9wZXJ0eU5hbWUsIGV4cHJlc3Npb24s
IHJlc3VsdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpyZWxlYXNlT2JqZWN0
KEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdElkKQogewot
ICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdEhvc3Qt
PmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0KCkpOworICAgIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVk
U2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQuZ2V0KCkpOwogICAgIGlmICghaW5qZWN0ZWRTY3Jp
cHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICBpbmplY3RlZFNjcmlwdC5yZWxlYXNlT2JqZWN0KG9i
amVjdElkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnJlbGVhc2VPYmplY3RH
cm91cChFcnJvclN0cmluZyosIGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCkKIHsKLSAgICBtX2luamVjdGVkU2NyaXB0SG9zdC0+cmVsZWFzZU9iamVjdEdy
b3VwKGluamVjdGVkU2NyaXB0SWQsIG9iamVjdEdyb3VwKTsKKyAgICBtX2luamVjdGVkU2NyaXB0
TWFuYWdlci0+cmVsZWFzZU9iamVjdEdyb3VwKGluamVjdGVkU2NyaXB0SWQsIG9iamVjdEdyb3Vw
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IDQyNzRlZWEzNGYzOTVkMTg4MzQ4
YzA4YWU5YmY2YjRjZDAwMzNiNjAuLjMwNjY1MjAzYjQ5ZTg3YTM1NmI0ZDFjYjUwNTMyYjVjZjQ3
MGM4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmgKQEAgLTMzLDI5ICszMywyMiBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAot
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
LQorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKK2Ns
YXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNz
IEluc3BlY3RvclZhbHVlOworY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKIGNsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW5zcGVjdG9yUnVudGltZUFnZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxJbnNwZWN0b3JSdW50aW1lQWdlbnQ+IGNyZWF0ZShJbmplY3RlZFNjcmlwdEhvc3QqIGlu
amVjdGVkU2NyaXB0SG9zdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5z
cGVjdG9yUnVudGltZUFnZW50KGluamVjdGVkU2NyaXB0SG9zdCkpOwotICAgIH0KLQorICAgIHN0
YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclJ1bnRpbWVBZ2VudD4gY3JlYXRlKEluamVjdGVkU2Ny
aXB0TWFuYWdlciosIFBhZ2UqKTsKICAgICB+SW5zcGVjdG9yUnVudGltZUFnZW50KCk7CiAKICAg
ICAvLyBQYXJ0IG9mIHRoZSBwcm90b2NvbC4KQEAgLTY3LDkgKzYwLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyosIGxvbmcgaW5qZWN0ZWRTY3Jp
cHRJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7CiAKIHByaXZhdGU6Ci0gICAgSW5zcGVj
dG9yUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0SG9zdCopOworICAgIEluc3BlY3RvclJ1bnRp
bWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBQYWdlKik7CiAKLSAgICBJbmplY3RlZFNj
cmlwdEhvc3QqIG1faW5qZWN0ZWRTY3JpcHRIb3N0OworICAgIEluamVjdGVkU2NyaXB0TWFuYWdl
ciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CisgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="77576"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85461</attachid>
            <date>2011-03-11 05:14:57 -0800</date>
            <delta_ts>2011-03-11 05:14:57 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>inj2</filename>
            <type>text/plain</type>
            <size>101348</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NmI1YWE3Li5jNTg0MTkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMt
MTEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzcGxpdCBJ
bmplY3RlZFNjcmlwdEhvc3QgaW50byBJbmplY3RlZFNjcmlwdE1hbmFnZXIgYW5kIEluamVjdGVk
U2NyaXB0SG9zdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTYxNzMKKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9jb25zb2xlLWFnZW50LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvY29uc29sZS1hZ2VudC5o
dG1sOgorCiAyMDExLTAzLTExICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIEpTQyBjcmFzaGVzIGluIDMyYml0IFJlbGVhc2UgYm90cyBh
ZnRlciByODA3NDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm90b2NvbC9j
b25zb2xlLWFnZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm90b2Nv
bC9jb25zb2xlLWFnZW50LWV4cGVjdGVkLnR4dAppbmRleCAzNzE0ZGQ2Li5jNThhZmFkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvdG9jb2wvY29uc29sZS1hZ2VudC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb3RvY29sL2NvbnNvbGUtYWdl
bnQtZXhwZWN0ZWQudHh0CkBAIC0xNjcsMTIgKzE2NywzMSBAQCByZXNwb25zZToKICAgICBzZXEg
OiA8bnVtYmVyPgogfQogCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorQ29uc29sZUFnZW50LmFkZEluc3BlY3RlZE5vZGUoPG51bWJl
cj4pCisKK3JlcXVlc3Q6Cit7CisgICAgc2VxIDogPG51bWJlcj4KKyAgICBkb21haW4gOiAiQ29u
c29sZSIKKyAgICBjb21tYW5kIDogImFkZEluc3BlY3RlZE5vZGUiCisgICAgYXJndW1lbnRzIDog
eworICAgICAgICBub2RlSWQgOiAxCisgICAgfQorfQorCityZXNwb25zZToKK3sKKyAgICBzZXEg
OiA8bnVtYmVyPgorfQorCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQogQ292ZXJhZ2UgZm9yIENvbnNvbGVBZ2VudAogewogICAgIHNl
dENvbnNvbGVNZXNzYWdlc0VuYWJsZWQgOiAiY2hlY2tlZCIKICAgICBjbGVhckNvbnNvbGVNZXNz
YWdlcyA6ICJjaGVja2VkIgogICAgIHNldE1vbml0b3JpbmdYSFJFbmFibGVkIDogImNoZWNrZWQi
CisgICAgYWRkSW5zcGVjdGVkTm9kZSA6ICJjaGVja2VkIgogICAgIGFkZENvbnNvbGVNZXNzYWdl
IDogImNoZWNrZWQiCiAgICAgdXBkYXRlQ29uc29sZU1lc3NhZ2VFeHBpcmVkQ291bnQgOiAibm90
IGNoZWNrZWQiCiAgICAgdXBkYXRlQ29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudCA6ICJjaGVja2Vk
IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb3RvY29sL2NvbnNvbGUtYWdl
bnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm90b2NvbC9jb25zb2xlLWFnZW50Lmh0
bWwKaW5kZXggZDRmYmZhMS4uMzZkYTRlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb3RvY29sL2NvbnNvbGUtYWdlbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvdG9jb2wvY29uc29sZS1hZ2VudC5odG1sCkBAIC0xMiw3ICsxMiw5IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICBbIlJ1bnRpbWVBZ2VudCIsICJldmFsdWF0ZSIsICJjb25zb2xlLmlu
Zm8oJ3Rlc3QnKTsgY29uc29sZS5pbmZvKCd0ZXN0JykiLCAidGVzdC1ncm91cCIsIGZhbHNlXSwK
ICAgICAgICAgWyJDb25zb2xlQWdlbnQiLCAiY2xlYXJDb25zb2xlTWVzc2FnZXMiXSwKICAgICAg
ICAgWyJDb25zb2xlQWdlbnQiLCAic2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQiLCBmYWxzZV0sCi0g
ICAgICAgIFsiQ29uc29sZUFnZW50IiwgInNldE1vbml0b3JpbmdYSFJFbmFibGVkIiwgdHJ1ZV1d
OworICAgICAgICBbIkNvbnNvbGVBZ2VudCIsICJzZXRNb25pdG9yaW5nWEhSRW5hYmxlZCIsIHRy
dWVdLAorICAgICAgICBbIkNvbnNvbGVBZ2VudCIsICJhZGRJbnNwZWN0ZWROb2RlIiwgMV0KKyAg
ICBdOwogCiAgICAgSW5zcGVjdG9yVGVzdC5ydW5Qcm90b2NvbFRlc3RTdWl0ZSgiQ29uc29sZUFn
ZW50IiwgdGVzdFN1aXRlLCBbJ3NlcScsICdpZCcsICdpbmplY3RlZFNjcmlwdElkJywgJ3N0YWNr
VHJhY2UnXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDQ1NjVjZDEuLjNkM2Y2NzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NDAsNiArNTQwLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNF
UwogICAgIGJpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0ludDhBcnJheUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0
SG9zdEN1c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAKICAgICBiaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTEwNDMsNiArMTA0NCw3IEBAIFNFVChX
ZWJDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCiAgICAgaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhv
c3QuY3BwCisgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2Vy
QWdlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWIxOTlmYS4uMTg2OGZkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDExNiBAQAorMjAxMS0wMy0xMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IHNwbGl0IEluamVjdGVkU2NyaXB0SG9zdCBpbnRvIEluamVjdGVkU2Ny
aXB0TWFuYWdlciBhbmQgSW5qZWN0ZWRTY3JpcHRIb3N0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjE3MworCisgICAgICAgIE1vdmVkIGFsbCBpbmpl
Y3RlZCBzY3JpcHQgbWFuYWdpbmcgbG9naWMgaW50byBJbmplY3RlZFNjcmlwdE1hbmFnZXIgd2hp
Y2ggaXMgb3duZWQgYnkgSW5zcGVjdG9yQ29udHJvbGxlci4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVk
U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2Fy
ZEluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdl
cjo6aW5qZWN0ZWRTY3JpcHRGb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYWtSZWZlcmVuY2VDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVJbmplY3RlZFNjcmlwdEhvc3RWOFdyYXBwZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVk
U2NyaXB0Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2Fu
QWNjZXNzSW5zcGVjdGVkV2luZG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQp
OgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlw
dDo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6SW5qZWN0ZWRTY3JpcHRIb3N0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6fkluamVjdGVkU2NyaXB0SG9zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmRpc2Nvbm5lY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJZEltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpzdG9yYWdlSWRJbXBsKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRI
b3N0OjpzZXRGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6
OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdl
cjo6fkluamVjdGVkU2NyaXB0TWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcklkKToKKyAgICAgICAgKFdlYkNvcmU6
OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlw
dHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpyZWxlYXNlT2Jq
ZWN0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmpl
Y3RlZFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmluamVjdFNjcmlwdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmguCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckFnZW50OjpJbnNwZWN0b3JBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2Vu
dDo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JB
Z2VudDo6Zm9jdXNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpkaWRD
bGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdl
bnQ6OmNyZWF0ZUZyb250ZW5kTGlmZXRpbWVBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQWdlbnQ6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QWdlbnQ6OmRvbUNvbnRlbnRMb2FkZWRFdmVudEZpcmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRl
YnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0
b3JDb25zb2xlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojp+SW5zcGVjdG9yQ29uc29sZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnNvbGVBZ2VudDo6Y2xlYXJDb25zb2xlTWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6c2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmRpc2NhcmRCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
cHVzaE5vZGVUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpyZXNvbHZlTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUnVudGltZUFnZW50OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50Ojp+SW5zcGVjdG9yUnVudGltZUFnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZU9uKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNldFByb3BlcnR5VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpyZWxlYXNlT2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVjdEdyb3Vw
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkVsZW1lbnRzUGFuZWwudGhpcy50cmVlT3V0bGluZS5mb2N1c2VkTm9kZUNoYW5nZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwpOgorCiAyMDExLTAzLTExICBB
bnRvbiBNdWhpbiAgPGFudG9ubUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggOTk2NzgzOS4uZDczMjkxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KQEAgLTgyMSw2ICs4MjEsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3Rv
bS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAg
XApAQCAtMTk3MSw2ICsxOTcyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdE1hbmFnZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzZmI5NmUwLi41NWIwYzllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC03MzYsNiArNzM2LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0ltYWdlQ29u
c3RydWN0b3IuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3Rv
bS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3BwJywK
QEAgLTEwODMsNiArMTA4NCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SURCS2V5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1h
Z2VEYXRhQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50MTZBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDMyQXJyYXlDdXN0b20uY3BwJywKQEAgLTIxODIs
NiArMjE4NCw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgnLAorICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwJywKKyAgICAgICAgICAgICdpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNw
cCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCmluZGV4IDE0YTdkM2IuLjA5Nzc0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBA
IC0zMDAsNiArMzAwLDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3Ry
dWN0b3IuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwIFwK
ICAgICAgICAgYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIFwKKyAg
ICAgICAgYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pz
L0pTSW50MzJBcnJheUN1c3RvbS5jcHAgXApAQCAtNzkzLDYgKzc5NCw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgXAogICAgIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5jcHAgXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIFwK
KyAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBcCiAgICAgaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJB
Z2VudC5jcHAgXApAQCAtMTcwOCw2ICsxNzEwLDcgQEAgSEVBREVSUyArPSBcCiAgICAgaW5zcGVj
dG9yL0NvbnNvbGVNZXNzYWdlLmggXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIFwK
ICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmggXAorICAgIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggXAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBcCiAgICAgaW5z
cGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBkOWJjNzcxLi5hNmU4OWY0IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjA0
MzMsNiArNjA0MzMsNTggQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQk8L0ZpbGU+
CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0luamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
Lz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4z
MiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wK
KwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJ
CTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0i
UmVsZWFzZV9MVENHfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3Vz
dG9tLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTY1Nzg2LDYgKzY1
ODM4LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3RvclxJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JBZ2VudC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDg4NWRkNzAuLjYzYjBjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU1OTksNiArNTU5OSw5IEBACiAJCUVENTAxREM2
MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9y
TWFjLm1tICovOyB9OwogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZGMEM3
QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUVERUM5ODAzMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3Jl
UHJlZml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
REVDOTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovOyB9OworCQlGMzE2
Mzk2QjEzMjk0ODFBMDBBNjQ5Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzMTYzOTY5MTMyOTQ4MUEw
MEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovOyB9OworCQlGMzE2Mzk2QzEz
Mjk0ODFBMDBBNjQ5Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzE2Mzk2QTEzMjk0ODFBMDBBNjQ5Q0Ig
LyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi87IH07CisJCUYzMTYzOTZFMTMyOTQ4NzYwMEE2
NDlDQiAvKiBKU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzE2Mzk2RDEzMjk0ODc2MDBBNjQ5Q0IgLyogSlNJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovOyB9OwogCQlGMzMzNUJGODEyRTA3REMzMDBEMzMw
MTEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzMzM1QkY2MTJFMDdEQzMwMEQzMzAxMSAvKiBJbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwICovOyB9OwogCQlGMzMzNUJGOTEyRTA3REMzMDBEMzMwMTEgLyog
SW5zcGVjdG9yQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGMzMzNUJGNzEyRTA3REMzMDBEMzMwMTEgLyogSW5zcGVjdG9yQ29uc29s
ZUFnZW50LmggKi87IH07CiAJCUYzM0YwMjgyMTIwOTQ3RjIwMEU1NzQzQSAvKiBTY3JpcHRQcm9m
aWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYz
M0YwMjgxMTIwOTQ3RjIwMEU1NzQzQSAvKiBTY3JpcHRQcm9maWxlLmNwcCAqLzsgfTsKQEAgLTEy
MDMwLDYgKzEyMDMzLDkgQEAKIAkJRUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFZGl0b3JNYWMu
bW07IHBhdGggPSBtYWMvRWRpdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFREUzQTRGRjBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVQcmVmaXguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB1c2VzVGFicyA9IDA7IH07CisJCUYzMTYzOTY5MTMyOTQ4
MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjMxNjM5NkExMzI5NDgxQTAwQTY0OUNCIC8qIEluamVjdGVk
U2NyaXB0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjMxNjM5NkQx
MzI5NDg3NjAwQTY0OUNCIC8qIEpTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjMzMzVCRjYxMkUwN0RDMzAwRDMzMDExIC8q
IEluc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGMzMzNUJGNzEyRTA3REMzMDBEMzMwMTEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNvbnNvbGVBZ2Vu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzNGMDI4MTEyMDk0N0YyMDBFNTc0
M0EgLyogU2NyaXB0UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTY3JpcHRQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
MDI1LDYgKzEzMDMxLDggQEAKIAkJCQk3QTBFNzZGNjEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcCAqLywKIAkJCQk3QTBFNzZGNzEwQkYwOEVEMDBBMDI3NkUgLyogSW5q
ZWN0ZWRTY3JpcHRIb3N0LmggKi8sCiAJCQkJN0EwRTc2RjgxMEJGMDhFRDAwQTAyNzZFIC8qIElu
amVjdGVkU2NyaXB0SG9zdC5pZGwgKi8sCisJCQkJRjMxNjM5NjkxMzI5NDgxQTAwQTY0OUNCIC8q
IEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgKi8sCisJCQkJRjMxNjM5NkExMzI5NDgxQTAwQTY0
OUNCIC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oICovLAogCQkJCTdBNTYzRjk1MTJERjVDOTEw
MEY0NTM2RCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAqLywKIAkJCQk0RjJEMjA1MzEyRUFF
N0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwICovLAogCQkJCTRGMkQyMDUyMTJFQUU3
QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovLApAQCAtMTgwMDYsNiArMTgwMTQsNyBA
QAogCQkJCUM1ODVBNjVEMTFENEZBQjIwMDRDM0U0QiAvKiBKU0lEQktleUN1c3RvbS5jcHAgKi8s
CiAJCQkJQTdEMDMxOEQwRTkzNTQwMzAwRTI0QUNEIC8qIEpTSW1hZ2VEYXRhQ3VzdG9tLmNwcCAq
LywKIAkJCQk3QTBFNzZENDEwQkYwNTA3MDBBMDI3NkUgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RD
dXN0b20uY3BwICovLAorCQkJCUYzMTYzOTZEMTMyOTQ4NzYwMEE2NDlDQiAvKiBKU0luamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAgKi8sCiAJCQkJN0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFQ0Y3NDEwNTA4RDlD
MDAwOTlGQUIgLyogSlNJbnQxNkFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFQ0Y3MzEwNTA4
RDlDMDAwOTlGQUIgLyogSlNJbnQzMkFycmF5Q3VzdG9tLmNwcCAqLywKQEAgLTIyNTc3LDYgKzIy
NTg2LDcgQEAKIAkJCQk1OThENzdERjEzMjU0MUZBMDA3NjFCMjIgLyogSmF2YUFycmF5SlNDLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1OThENzdFMzEzMjU0MjBFMDA3NjFCMjIgLyogSmF2YUZpZWxk
SlNDLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QzRjk4MzEzMjZDOTM3MDAwOThBNjAgLyogVGV4
dE9yaWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGMzE2Mzk2QzEzMjk0ODFBMDBBNjQ5
Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1MjMyLDYg
KzI1MjQyLDggQEAKIAkJCQk4MTVFNjE2NzEzMjU4N0FBMDBCNjIyQjAgLyogRGF0YVRyYW5zZmVy
SXRlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MTAyQzU4ODEzMjVCQjExMDBEREU2N0EgLyog
U3RyaW5nQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUQ0RjUxREYxMzI3MjU0ODAw
MTZGNTQxIC8qIEhUTUxDb252ZXJ0ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlGMzE2Mzk2QjEz
Mjk0ODFBMDBBNjQ5Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUYzMTYzOTZFMTMyOTQ4NzYwMEE2NDlDQiAvKiBKU0luamVjdGVkU2NyaXB0TWFuYWdl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IGI1M2Q5NTAuLjRiM2I3NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMTAz
LDYgKzEwMyw3IEBACiAjaW5jbHVkZSAiSlNJbWFnZUNvbnN0cnVjdG9yLmNwcCIKICNpbmNsdWRl
ICJKU0ltYWdlRGF0YUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3RD
dXN0b20uY3BwIgorI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCIKICNpbmNs
dWRlICJKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNJbnQx
NkFycmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0ludDMyQXJyYXlDdXN0b20uY3BwIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhv
c3RDdXN0b20uY3BwCmluZGV4IGJjMWQ4NzcuLmU0NjA0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAK
QEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVr
IDx3ZWJraXRAbWF0dGxpbGVrLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTM1LDM3ICszNSwyMCBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2lu
Y2x1ZGUgIkNvbnNvbGUuaCIKLSNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNp
ZiBFTkFCTEUoREFUQUJBU0UpCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJKU0Rh
dGFiYXNlLmgiCiAjZW5kaWYKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAi
RnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJKU0RP
TVdpbmRvdy5oIgotI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNO
b2RlLmgiCi0jaW5jbHVkZSAiSlNSYW5nZS5oIgotI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpZiBFTkFCTEUoRE9NX1NUT1JB
R0UpCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgogI2luY2x1ZGUgIkpTU3RvcmFnZS5oIgogI2VuZGlm
Ci0jaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgi
Ci0jaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTQXJy
YXkuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKICNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCkBAIC04OSwzNyArNzIsNiBA
QCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKFNjcmlw
dFN0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZQogICAgIHJldHVybiBTY3JpcHRWYWx1ZShzdGF0ZS0+
Z2xvYmFsRGF0YSgpLCB0b0pTKHN0YXRlLCBub2RlKSk7CiB9CiAKLVNjcmlwdE9iamVjdCBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNl
LCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGxvbmcgaWQpCi17Ci0gICAgU291cmNlQ29kZSBz
b3VyY2VDb2RlID0gbWFrZVNvdXJjZShzdHJpbmdUb1VTdHJpbmcoc291cmNlKSk7Ci0gICAgSlNM
b2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBKU1ZhbHVlIGdsb2JhbFRoaXNWYWx1ZSA9
IHNjcmlwdFN0YXRlLT5nbG9iYWxUaGlzVmFsdWUoKTsKLSAgICBDb21wbGV0aW9uIGNvbXAgPSBK
U01haW5UaHJlYWRFeGVjU3RhdGU6OmV2YWx1YXRlKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3Qt
Pmdsb2JhbFNjb3BlQ2hhaW4oKSwgc291cmNlQ29kZSwgZ2xvYmFsVGhpc1ZhbHVlKTsKLSAgICBp
ZiAoY29tcC5jb21wbFR5cGUoKSAhPSBKU0M6Ok5vcm1hbCAmJiBjb21wLmNvbXBsVHlwZSgpICE9
IEpTQzo6UmV0dXJuVmFsdWUpCi0gICAgICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKLSAgICBK
U1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBjb21wLnZhbHVlKCk7Ci0gICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvblZhbHVlLCBj
YWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0
dXJuIFNjcmlwdE9iamVjdCgpOwotCi0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAg
ICBhcmdzLmFwcGVuZCh0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIHRoaXMpKTsKLSAg
ICBhcmdzLmFwcGVuZChnbG9iYWxUaGlzVmFsdWUpOwotICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVy
KGlkKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmNhbGwoc2NyaXB0U3RhdGUsIGZ1bmN0
aW9uVmFsdWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwgZ2xvYmFsVGhpc1ZhbHVlLCBhcmdzKTsKLSAg
ICBpZiAocmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBTY3JpcHRPYmplY3Qoc2Ny
aXB0U3RhdGUsIHJlc3VsdC5nZXRPYmplY3QoKSk7Ci0gICAgcmV0dXJuIFNjcmlwdE9iamVjdCgp
OwotfQotCi12b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6ZGlzY2FyZEluamVjdGVkU2NyaXB0KFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKLXsKLSAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBnbG9iYWxPYmplY3QtPnNldEluamVjdGVkU2NyaXB0
KDApOwotfQotCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpjdXJyZW50Q2FsbEZyYW1l
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKQEAg
LTE5MSwzMyArMTQzLDYgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6c3RvcmFnZUlk
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotSW5qZWN0
ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRIb3N0OjppbmplY3RlZFNjcmlwdEZvcihTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGUpCi17Ci0gICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKLSAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAg
ICBKU09iamVjdCogaW5qZWN0ZWRTY3JpcHQgPSBnbG9iYWxPYmplY3QtPmluamVjdGVkU2NyaXB0
KCk7Ci0gICAgaWYgKGluamVjdGVkU2NyaXB0KQotICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3Jp
cHQoU2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCBpbmplY3RlZFNjcmlwdCkpOwotCi0gICAgaWYg
KCFjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coc2NyaXB0U3RhdGUpKQotICAgICAgICByZXR1cm4g
SW5qZWN0ZWRTY3JpcHQoKTsKLQotICAgIHBhaXI8bG9uZywgU2NyaXB0T2JqZWN0PiBpbmplY3Rl
ZFNjcmlwdE9iamVjdCA9IGluamVjdFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBzY3Jp
cHRTdGF0ZSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5zZXRJbmplY3RlZFNjcmlwdChpbmplY3RlZFNj
cmlwdE9iamVjdC5zZWNvbmQuanNPYmplY3QoKSk7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0
KGluamVjdGVkU2NyaXB0T2JqZWN0LnNlY29uZCk7Ci0gICAgbV9pZFRvSW5qZWN0ZWRTY3JpcHQu
c2V0KGluamVjdGVkU2NyaXB0T2JqZWN0LmZpcnN0LCByZXN1bHQpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLWJvb2wgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5k
b3coU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQotewotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7Ci0gICAgSlNET01XaW5kb3cqIGluc3BlY3RlZFdpbmRvdyA9IHRvSlNE
T01XaW5kb3coc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgaWYgKCFp
bnNwZWN0ZWRXaW5kb3cpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaW5zcGVj
dGVkV2luZG93LT5hbGxvd3NBY2Nlc3NGcm9tTm9FcnJvck1lc3NhZ2Uoc2NyaXB0U3RhdGUpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NDNjZDIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJKU0RPTVdp
bmRvd0N1c3RvbS5oIgorI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVk
ZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUu
aD4KKyNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGUsIGxvbmcgaWQpCit7CisgICAgU291cmNlQ29kZSBzb3VyY2VDb2RlID0g
bWFrZVNvdXJjZShzdHJpbmdUb1VTdHJpbmcoc291cmNlKSk7CisgICAgSlNMb2NrIGxvY2soU2ls
ZW5jZUFzc2VydGlvbnNPbmx5KTsKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKTsKKyAgICBKU1ZhbHVlIGdsb2JhbFRoaXNWYWx1ZSA9IHNjcmlwdFN0YXRl
LT5nbG9iYWxUaGlzVmFsdWUoKTsKKyAgICBDb21wbGV0aW9uIGNvbXAgPSBKU01haW5UaHJlYWRF
eGVjU3RhdGU6OmV2YWx1YXRlKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3Bl
Q2hhaW4oKSwgc291cmNlQ29kZSwgZ2xvYmFsVGhpc1ZhbHVlKTsKKyAgICBpZiAoY29tcC5jb21w
bFR5cGUoKSAhPSBKU0M6Ok5vcm1hbCAmJiBjb21wLmNvbXBsVHlwZSgpICE9IEpTQzo6UmV0dXJu
VmFsdWUpCisgICAgICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICBKU1ZhbHVlIGZ1bmN0
aW9uVmFsdWUgPSBjb21wLnZhbHVlKCk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvblZhbHVlLCBjYWxsRGF0YSk7Cisg
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdE9i
amVjdCgpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFwcGVu
ZCh0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3QsIG1faW5qZWN0ZWRTY3JpcHRIb3N0Lmdl
dCgpKSk7CisgICAgYXJncy5hcHBlbmQoZ2xvYmFsVGhpc1ZhbHVlKTsKKyAgICBhcmdzLmFwcGVu
ZChqc051bWJlcihpZCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpjYWxsKHNjcmlwdFN0
YXRlLCBmdW5jdGlvblZhbHVlLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1ZSwg
YXJncyk7CisgICAgaWYgKHJlc3VsdC5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gU2NyaXB0
T2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1bHQuZ2V0T2JqZWN0KCkpOworICAgIHJldHVybiBTY3Jp
cHRPYmplY3QoKTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmpl
Y3RlZFNjcmlwdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCit7CisgICAgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2Ny
aXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5zZXRJ
bmplY3RlZFNjcmlwdCgwKTsKK30KKworSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjppbmplY3RlZFNjcmlwdEZvcihTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCit7CisgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKyAgICBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRT
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBKU09iamVjdCogaW5qZWN0ZWRTY3Jp
cHQgPSBnbG9iYWxPYmplY3QtPmluamVjdGVkU2NyaXB0KCk7CisgICAgaWYgKGluamVjdGVkU2Ny
aXB0KQorICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0KHNjcmlwdFN0
YXRlLCBpbmplY3RlZFNjcmlwdCkpOworCisgICAgaWYgKCFjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5k
b3coc2NyaXB0U3RhdGUpKQorICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKKworICAg
IHBhaXI8bG9uZywgU2NyaXB0T2JqZWN0PiBpbmplY3RlZFNjcmlwdE9iamVjdCA9IGluamVjdFNj
cmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBzY3JpcHRTdGF0ZSk7CisgICAgZ2xvYmFsT2Jq
ZWN0LT5zZXRJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdE9iamVjdC5zZWNvbmQuanNPYmpl
Y3QoKSk7CisgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0KGluamVjdGVkU2NyaXB0T2JqZWN0LnNl
Y29uZCk7CisgICAgbV9pZFRvSW5qZWN0ZWRTY3JpcHQuc2V0KGluamVjdGVkU2NyaXB0T2JqZWN0
LmZpcnN0LCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coU2NyaXB0U3RhdGUqIHNjcmlw
dFN0YXRlKQoreworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAg
SlNET01XaW5kb3cqIGluc3BlY3RlZFdpbmRvdyA9IHRvSlNET01XaW5kb3coc2NyaXB0U3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgaWYgKCFpbnNwZWN0ZWRXaW5kb3cpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaW5zcGVjdGVkV2luZG93LT5hbGxvd3NBY2Nl
c3NGcm9tTm9FcnJvck1lc3NhZ2Uoc2NyaXB0U3RhdGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9z
dEN1c3RvbS5jcHAKaW5kZXggN2EzM2VkMC4uOGQ5MDk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhv
c3RDdXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzEsMjcgKzMxLDIwIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiVjhJbmplY3RlZFNjcmlwdEhvc3QuaCIKIAotI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgotCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5n
U3RhdGUuaCIKLSNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgogI2luY2x1ZGUgIlY4RGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlY4SmF2YVNj
cmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4UHJveHku
aCIKICNpbmNsdWRlICJWOFN0b3JhZ2UuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzEsODYgKzY0LDYgQEAgU2NyaXB0VmFsdWUgSW5qZWN0
ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShTY3JpcHRTdGF0ZSogc3RhdGUsIE5vZGUq
IG5vZGUKICAgICByZXR1cm4gU2NyaXB0VmFsdWUodG9WOChub2RlKSk7CiB9CiAKLXN0YXRpYyB2
b2lkIFdlYWtSZWZlcmVuY2VDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVj
dCwgdm9pZCogcGFyYW1ldGVyKQotewotICAgIEluamVjdGVkU2NyaXB0SG9zdCogbmF0aXZlT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRTY3JpcHRIb3N0Kj4ocGFyYW1ldGVyKTsKLSAgICBu
YXRpdmVPYmplY3QtPmRlcmVmKCk7Ci0gICAgb2JqZWN0LkRpc3Bvc2UoKTsKLX0KLQotc3RhdGlj
IHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVJbmplY3RlZFNjcmlwdEhvc3RWOFdyYXBwZXIo
SW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0KQotewotICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+
IGZ1bmN0aW9uID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OkdldFRlbXBsYXRlKCktPkdldEZ1bmN0
aW9uKCk7Ci0gICAgaWYgKGZ1bmN0aW9uLklzRW1wdHkoKSkgewotICAgICAgICAvLyBSZXR1cm4g
aWYgYWxsb2NhdGlvbiBmYWlsZWQuCi0gICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVj
dD4oKTsKLSAgICB9Ci0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluc3RhbmNlID0gU2FmZUFs
bG9jYXRpb246Om5ld0luc3RhbmNlKGZ1bmN0aW9uKTsKLSAgICBpZiAoaW5zdGFuY2UuSXNFbXB0
eSgpKSB7Ci0gICAgICAgIC8vIEF2b2lkIHNldHRpbmcgdGhlIHdyYXBwZXIgaWYgYWxsb2NhdGlv
biBmYWlsZWQuCi0gICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKLSAgICB9
Ci0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGluc3RhbmNlLCAmVjhJbmplY3RlZFNj
cmlwdEhvc3Q6OmluZm8sIGhvc3QpOwotICAgIC8vIENyZWF0ZSBhIHdlYWsgcmVmZXJlbmNlIHRv
IHRoZSB2OCB3cmFwcGVyIG9mIEluc3BlY3RvckJhY2tlbmQgdG8gZGVyZWYKLSAgICAvLyBJbnNw
ZWN0b3JCYWNrZW5kIHdoZW4gdGhlIHdyYXBwZXIgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQuCi0gICAg
aG9zdC0+cmVmKCk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd2Vha0hhbmRsZSA9
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoaW5zdGFuY2UpOwotICAgIHdlYWtIYW5k
bGUuTWFrZVdlYWsoaG9zdCwgJldlYWtSZWZlcmVuY2VDYWxsYmFjayk7Ci0gICAgcmV0dXJuIGlu
c3RhbmNlOwotfQotCi1TY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGVJbmpl
Y3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgU2NyaXB0U3RhdGUqIGluc3Bl
Y3RlZFNjcmlwdFN0YXRlLCBsb25nIGlkKQotewotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsK
LQotICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gaW5zcGVjdGVkQ29udGV4dCA9IGluc3BlY3Rl
ZFNjcmlwdFN0YXRlLT5jb250ZXh0KCk7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRT
Y29wZShpbnNwZWN0ZWRDb250ZXh0KTsKLQotICAgIC8vIENhbGwgY3VzdG9tIGNvZGUgdG8gY3Jl
YXRlIEluamVjdGVkU2NyaXBIb3N0IHdyYXBwZXIgc3BlY2lmaWMgZm9yIHRoZSBjb250ZXh0Ci0g
ICAgLy8gaW5zdGVhZCBvZiBjYWxsaW5nIHRvVjgoKSB0aGF0IHdvdWxkIGNyZWF0ZSB0aGUKLSAg
ICAvLyB3cmFwcGVyIGluIHRoZSBjdXJyZW50IGNvbnRleHQuCi0gICAgLy8gRklYTUU6IG1ha2Ug
aXQgcG9zc2libGUgdG8gdXNlIGdlbmVyaWMgYmluZGluZ3MgZmFjdG9yeSBmb3IgSW5qZWN0ZWRT
Y3JpcHRIb3N0LgotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzY3JpcHRIb3N0V3JhcHBlciA9
IGNyZWF0ZUluamVjdGVkU2NyaXB0SG9zdFY4V3JhcHBlcih0aGlzKTsKLSAgICBpZiAoc2NyaXB0
SG9zdFdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7Ci0K
LSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gd2luZG93R2xvYmFsID0gaW5zcGVjdGVkQ29udGV4
dC0+R2xvYmFsKCk7Ci0KLSAgICAvLyBJbmplY3QgamF2YXNjcmlwdCBpbnRvIHRoZSBjb250ZXh0
LiBUaGUgY29tcGlsZWQgc2NyaXB0IGlzIHN1cHBvc2VkIHRvIGV2YWx1YXRlIGludG8KLSAgICAv
LyBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24oaXQncyBhbm9ueW1vdXMgdG8gYXZvaWQgY2x1
dHRlcmluZyB0aGUgZ2xvYmFsIG9iamVjdCB3aXRoCi0gICAgLy8gaW5zcGVjdG9yJ3Mgc3R1ZmYp
IHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgYSBmZXcgbGluZXMgYmVsb3cgd2l0aCBJbmplY3RlZFNj
cmlwdEhvc3Qgd3JhcHBlciwKLSAgICAvLyBpbmplY3RlZCBzY3JpcHQgaWQgYW5kIGV4cGxpY2l0
IHJlZmVyZW5jZSB0byB0aGUgaW5zcGVjdGVkIGdsb2JhbCBvYmplY3QuIFRoZSBmdW5jdGlvbiBp
cyBleHBlY3RlZAotICAgIC8vIHRvIGNyZWF0ZSBhbmQgY29uZmlndXJlIEluamVjdGVkU2NyaXB0
IGluc3RhbmNlIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBieSB0aGUgaW5zcGVjdG9yLgotICAg
IHY4OjpMb2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHY4U3Ry
aW5nKHNjcmlwdFNvdXJjZSkpOwotICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHYgPSBzY3JpcHQt
PlJ1bigpOwotICAgIEFTU0VSVCghdi5Jc0VtcHR5KCkpOwotICAgIEFTU0VSVCh2LT5Jc0Z1bmN0
aW9uKCkpOwotCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3NbXSA9IHsKLSAgICAgIHNj
cmlwdEhvc3RXcmFwcGVyLAotICAgICAgd2luZG93R2xvYmFsLAotICAgICAgdjg6Ok51bWJlcjo6
TmV3KGlkKSwKLSAgICB9OwotICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGluamVjdGVkU2NyaXB0
VmFsdWUgPSB2ODo6RnVuY3Rpb246OkNhc3QoKnYpLT5DYWxsKHdpbmRvd0dsb2JhbCwgMywgYXJn
cyk7Ci0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluamVjdGVkU2NyaXB0KHY4OjpPYmplY3Q6
OkNhc3QoKmluamVjdGVkU2NyaXB0VmFsdWUpKTsKLSAgICByZXR1cm4gU2NyaXB0T2JqZWN0KGlu
c3BlY3RlZFNjcmlwdFN0YXRlLCBpbmplY3RlZFNjcmlwdCk7Ci19Ci0KLXZvaWQgSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHQoU2NyaXB0U3RhdGUqIGluc3BlY3RlZFNj
cmlwdFN0YXRlKQotewotICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBpbnNwZWN0ZWRTY3JpcHRTdGF0ZS0+Y29udGV4
dCgpOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7Ci0KLSAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7Ci0gICAg
Ly8gU2tpcCBwcm94eSBvYmplY3QuIFRoZSBwcm94eSBvYmplY3Qgd2lsbCBzdXJ2aXZlIHBhZ2Ug
bmF2aWdhdGlvbiB3aGlsZSB3ZSBuZWVkCi0gICAgLy8gYW4gb2JqZWN0IHdob3NlIGxpZmV0aW1l
IGNvbnNpZGVzIHdpdGggdGhhdCBvZiB0aGUgaW5zcGVjdGVkIGNvbnRleHQuCi0gICAgZ2xvYmFs
ID0gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KGdsb2JhbC0+R2V0UHJvdG90eXBlKCkpOwot
Ci0gICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBrZXkgPSBWOEhpZGRlblByb3BlcnR5TmFtZTo6
ZGV2dG9vbHNJbmplY3RlZFNjcmlwdCgpOwotICAgIGdsb2JhbC0+RGVsZXRlSGlkZGVuVmFsdWUo
a2V5KTsKLX0KLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojpp
bnNwZWN0ZWROb2RlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0ZWROb2RlKCkiKTsKQEAgLTIzMSw0
NiArMTQ0LDQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojpz
dG9yYWdlSWRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogfQogCi1JbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVjdGVk
U2NyaXB0Rm9yKFNjcmlwdFN0YXRlKiBpbnNwZWN0ZWRTY3JpcHRTdGF0ZSkKLXsKLSAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250
ZXh0ID0gaW5zcGVjdGVkU2NyaXB0U3RhdGUtPmNvbnRleHQoKTsKLSAgICB2ODo6Q29udGV4dDo6
U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOwotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwotICAgIC8vIFNraXAgcHJveHkgb2JqZWN0LiBU
aGUgcHJveHkgb2JqZWN0IHdpbGwgc3Vydml2ZSBwYWdlIG5hdmlnYXRpb24gd2hpbGUgd2UgbmVl
ZAotICAgIC8vIGFuIG9iamVjdCB3aG9zZSBsaWZldGltZSBjb25zaWRlcyB3aXRoIHRoYXQgb2Yg
dGhlIGluc3BlY3RlZCBjb250ZXh0LgotICAgIGdsb2JhbCA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0
Pjo6Q2FzdChnbG9iYWwtPkdldFByb3RvdHlwZSgpKTsKLQotICAgIHY4OjpIYW5kbGU8djg6OlN0
cmluZz4ga2V5ID0gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmRldnRvb2xzSW5qZWN0ZWRTY3JpcHQo
KTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWwgPSBnbG9iYWwtPkdldEhpZGRlblZhbHVl
KGtleSk7Ci0gICAgaWYgKCF2YWwuSXNFbXB0eSgpICYmIHZhbC0+SXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVjdChpbnNwZWN0ZWRTY3JpcHRTdGF0
ZSwgdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbCkpKTsKLQotICAgIGlmICghY2FuQWNj
ZXNzSW5zcGVjdGVkV2luZG93KGluc3BlY3RlZFNjcmlwdFN0YXRlKSkKLSAgICAgICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0KCk7Ci0KLSAgICBwYWlyPGxvbmcsIFNjcmlwdE9iamVjdD4gaW5qZWN0
ZWRTY3JpcHQgPSBpbmplY3RTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgaW5zcGVjdGVk
U2NyaXB0U3RhdGUpOwotICAgIEluamVjdGVkU2NyaXB0IHJlc3VsdChpbmplY3RlZFNjcmlwdC5z
ZWNvbmQpOwotICAgIG1faWRUb0luamVjdGVkU2NyaXB0LnNldChpbmplY3RlZFNjcmlwdC5maXJz
dCwgcmVzdWx0KTsKLSAgICBnbG9iYWwtPlNldEhpZGRlblZhbHVlKGtleSwgaW5qZWN0ZWRTY3Jp
cHQuc2Vjb25kLnY4T2JqZWN0KCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWJvb2wgSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coU2NyaXB0U3RhdGUqIHNj
cmlwdFN0YXRlKQotewotICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBzY3JpcHRTdGF0ZS0+Y29udGV4dCgpOwotICAg
IHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKLSAgICBp
ZiAoZ2xvYmFsLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4
RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBnbG9iYWwpOwotICAgIGlmIChob2xkZXIuSXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRnJhbWUqIGZyYW1lID0gVjhET01XaW5k
b3c6OnRvTmF0aXZlKGhvbGRlciktPmZyYW1lKCk7Ci0KLSAgICB2ODo6Q29udGV4dDo6U2NvcGUg
Y29udGV4dFNjb3BlKGNvbnRleHQpOwotICAgIHJldHVybiBWOEJpbmRpbmdTZWN1cml0eTo6Y2Fu
QWNjZXNzRnJhbWUoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgZnJhbWUsIGZhbHNlKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQwMDZiOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAKQEAgLTAsMCArMSwxNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1
ZGUgIkluamVjdGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisj
aW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRl
ICJWOEJpbmRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCisjaW5jbHVkZSAi
VjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJWOEluamVjdGVkU2NyaXB0SG9zdC5o
IgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHZvaWQgV2Vha1JlZmVyZW5jZUNhbGxiYWNrKHY4OjpQ
ZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJhbWV0ZXIpCit7CisgICAgSW5q
ZWN0ZWRTY3JpcHRIb3N0KiBuYXRpdmVPYmplY3QgPSBzdGF0aWNfY2FzdDxJbmplY3RlZFNjcmlw
dEhvc3QqPihwYXJhbWV0ZXIpOworICAgIG5hdGl2ZU9iamVjdC0+ZGVyZWYoKTsKKyAgICBvYmpl
Y3QuRGlzcG9zZSgpOworfQorCitzdGF0aWMgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZUlu
amVjdGVkU2NyaXB0SG9zdFY4V3JhcHBlcihJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3QpCit7Cisg
ICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBWOEluamVjdGVkU2NyaXB0SG9z
dDo6R2V0VGVtcGxhdGUoKS0+R2V0RnVuY3Rpb24oKTsKKyAgICBpZiAoZnVuY3Rpb24uSXNFbXB0
eSgpKSB7CisgICAgICAgIC8vIFJldHVybiBpZiBhbGxvY2F0aW9uIGZhaWxlZC4KKyAgICAgICAg
cmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOworICAgIH0KKyAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gaW5zdGFuY2UgPSBTYWZlQWxsb2NhdGlvbjo6bmV3SW5zdGFuY2UoZnVuY3Rpb24p
OworICAgIGlmIChpbnN0YW5jZS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gQXZvaWQgc2V0dGlu
ZyB0aGUgd3JhcHBlciBpZiBhbGxvY2F0aW9uIGZhaWxlZC4KKyAgICAgICAgcmV0dXJuIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PigpOworICAgIH0KKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBw
ZXIoaW5zdGFuY2UsICZWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5mbywgaG9zdCk7CisgICAgLy8g
Q3JlYXRlIGEgd2VhayByZWZlcmVuY2UgdG8gdGhlIHY4IHdyYXBwZXIgb2YgSW5zcGVjdG9yQmFj
a2VuZCB0byBkZXJlZgorICAgIC8vIEluc3BlY3RvckJhY2tlbmQgd2hlbiB0aGUgd3JhcHBlciBp
cyBnYXJiYWdlIGNvbGxlY3RlZC4KKyAgICBob3N0LT5yZWYoKTsKKyAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3ZWFrSGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5l
dyhpbnN0YW5jZSk7CisgICAgd2Vha0hhbmRsZS5NYWtlV2Vhayhob3N0LCAmV2Vha1JlZmVyZW5j
ZUNhbGxiYWNrKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK1NjcmlwdE9iamVjdCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc2Ny
aXB0U291cmNlLCBTY3JpcHRTdGF0ZSogaW5zcGVjdGVkU2NyaXB0U3RhdGUsIGxvbmcgaWQpCit7
CisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworCisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0
PiBpbnNwZWN0ZWRDb250ZXh0ID0gaW5zcGVjdGVkU2NyaXB0U3RhdGUtPmNvbnRleHQoKTsKKyAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGluc3BlY3RlZENvbnRleHQpOworCisg
ICAgLy8gQ2FsbCBjdXN0b20gY29kZSB0byBjcmVhdGUgSW5qZWN0ZWRTY3JpcEhvc3Qgd3JhcHBl
ciBzcGVjaWZpYyBmb3IgdGhlIGNvbnRleHQKKyAgICAvLyBpbnN0ZWFkIG9mIGNhbGxpbmcgdG9W
OCgpIHRoYXQgd291bGQgY3JlYXRlIHRoZQorICAgIC8vIHdyYXBwZXIgaW4gdGhlIGN1cnJlbnQg
Y29udGV4dC4KKyAgICAvLyBGSVhNRTogbWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgZ2VuZXJpYyBi
aW5kaW5ncyBmYWN0b3J5IGZvciBJbmplY3RlZFNjcmlwdEhvc3QuCisgICAgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IHNjcmlwdEhvc3RXcmFwcGVyID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHRIb3N0VjhX
cmFwcGVyKG1faW5qZWN0ZWRTY3JpcHRIb3N0LmdldCgpKTsKKyAgICBpZiAoc2NyaXB0SG9zdFdy
YXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisKKyAgICB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gd2luZG93R2xvYmFsID0gaW5zcGVjdGVkQ29udGV4dC0+R2xv
YmFsKCk7CisKKyAgICAvLyBJbmplY3QgamF2YXNjcmlwdCBpbnRvIHRoZSBjb250ZXh0LiBUaGUg
Y29tcGlsZWQgc2NyaXB0IGlzIHN1cHBvc2VkIHRvIGV2YWx1YXRlIGludG8KKyAgICAvLyBhIHNp
bmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24oaXQncyBhbm9ueW1vdXMgdG8gYXZvaWQgY2x1dHRlcmlu
ZyB0aGUgZ2xvYmFsIG9iamVjdCB3aXRoCisgICAgLy8gaW5zcGVjdG9yJ3Mgc3R1ZmYpIHRoZSBm
dW5jdGlvbiBpcyBjYWxsZWQgYSBmZXcgbGluZXMgYmVsb3cgd2l0aCBJbmplY3RlZFNjcmlwdEhv
c3Qgd3JhcHBlciwKKyAgICAvLyBpbmplY3RlZCBzY3JpcHQgaWQgYW5kIGV4cGxpY2l0IHJlZmVy
ZW5jZSB0byB0aGUgaW5zcGVjdGVkIGdsb2JhbCBvYmplY3QuIFRoZSBmdW5jdGlvbiBpcyBleHBl
Y3RlZAorICAgIC8vIHRvIGNyZWF0ZSBhbmQgY29uZmlndXJlIEluamVjdGVkU2NyaXB0IGluc3Rh
bmNlIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBieSB0aGUgaW5zcGVjdG9yLgorICAgIHY4OjpM
b2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpDb21waWxlKHY4U3RyaW5nKHNj
cmlwdFNvdXJjZSkpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHYgPSBzY3JpcHQtPlJ1bigp
OworICAgIEFTU0VSVCghdi5Jc0VtcHR5KCkpOworICAgIEFTU0VSVCh2LT5Jc0Z1bmN0aW9uKCkp
OworCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3NbXSA9IHsKKyAgICAgIHNjcmlwdEhv
c3RXcmFwcGVyLAorICAgICAgd2luZG93R2xvYmFsLAorICAgICAgdjg6Ok51bWJlcjo6TmV3KGlk
KSwKKyAgICB9OworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGluamVjdGVkU2NyaXB0VmFsdWUg
PSB2ODo6RnVuY3Rpb246OkNhc3QoKnYpLT5DYWxsKHdpbmRvd0dsb2JhbCwgMywgYXJncyk7Cisg
ICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluamVjdGVkU2NyaXB0KHY4OjpPYmplY3Q6OkNhc3Qo
KmluamVjdGVkU2NyaXB0VmFsdWUpKTsKKyAgICByZXR1cm4gU2NyaXB0T2JqZWN0KGluc3BlY3Rl
ZFNjcmlwdFN0YXRlLCBpbmplY3RlZFNjcmlwdCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHQoU2NyaXB0U3RhdGUqIGluc3BlY3RlZFNjcmlw
dFN0YXRlKQoreworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBpbnNwZWN0ZWRTY3JpcHRTdGF0ZS0+Y29udGV4dCgp
OworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7CisKKyAgICB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7CisgICAgLy8g
U2tpcCBwcm94eSBvYmplY3QuIFRoZSBwcm94eSBvYmplY3Qgd2lsbCBzdXJ2aXZlIHBhZ2UgbmF2
aWdhdGlvbiB3aGlsZSB3ZSBuZWVkCisgICAgLy8gYW4gb2JqZWN0IHdob3NlIGxpZmV0aW1lIGNv
bnNpZGVzIHdpdGggdGhhdCBvZiB0aGUgaW5zcGVjdGVkIGNvbnRleHQuCisgICAgZ2xvYmFsID0g
djg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KGdsb2JhbC0+R2V0UHJvdG90eXBlKCkpOworCisg
ICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBrZXkgPSBWOEhpZGRlblByb3BlcnR5TmFtZTo6ZGV2
dG9vbHNJbmplY3RlZFNjcmlwdCgpOworICAgIGdsb2JhbC0+RGVsZXRlSGlkZGVuVmFsdWUoa2V5
KTsKK30KKworSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNj
cmlwdEZvcihTY3JpcHRTdGF0ZSogaW5zcGVjdGVkU2NyaXB0U3RhdGUpCit7CisgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4
dCA9IGluc3BlY3RlZFNjcmlwdFN0YXRlLT5jb250ZXh0KCk7CisgICAgdjg6OkNvbnRleHQ6OlNj
b3BlIGNvbnRleHRTY29wZShjb250ZXh0KTsKKworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBn
bG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKKyAgICAvLyBTa2lwIHByb3h5IG9iamVjdC4gVGhl
IHByb3h5IG9iamVjdCB3aWxsIHN1cnZpdmUgcGFnZSBuYXZpZ2F0aW9uIHdoaWxlIHdlIG5lZWQK
KyAgICAvLyBhbiBvYmplY3Qgd2hvc2UgbGlmZXRpbWUgY29uc2lkZXMgd2l0aCB0aGF0IG9mIHRo
ZSBpbnNwZWN0ZWQgY29udGV4dC4KKyAgICBnbG9iYWwgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46
OkNhc3QoZ2xvYmFsLT5HZXRQcm90b3R5cGUoKSk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpTdHJp
bmc+IGtleSA9IFY4SGlkZGVuUHJvcGVydHlOYW1lOjpkZXZ0b29sc0luamVjdGVkU2NyaXB0KCk7
CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsID0gZ2xvYmFsLT5HZXRIaWRkZW5WYWx1ZShr
ZXkpOworICAgIGlmICghdmFsLklzRW1wdHkoKSAmJiB2YWwtPklzT2JqZWN0KCkpCisgICAgICAg
IHJldHVybiBJbmplY3RlZFNjcmlwdChTY3JpcHRPYmplY3QoaW5zcGVjdGVkU2NyaXB0U3RhdGUs
IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWwpKSk7CisKKyAgICBpZiAoIWNhbkFjY2Vz
c0luc3BlY3RlZFdpbmRvdyhpbnNwZWN0ZWRTY3JpcHRTdGF0ZSkpCisgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdCgpOworCisgICAgcGFpcjxsb25nLCBTY3JpcHRPYmplY3Q+IGluamVjdGVk
U2NyaXB0ID0gaW5qZWN0U2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGluc3BlY3RlZFNj
cmlwdFN0YXRlKTsKKyAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQoaW5qZWN0ZWRTY3JpcHQuc2Vj
b25kKTsKKyAgICBtX2lkVG9JbmplY3RlZFNjcmlwdC5zZXQoaW5qZWN0ZWRTY3JpcHQuZmlyc3Qs
IHJlc3VsdCk7CisgICAgZ2xvYmFsLT5TZXRIaWRkZW5WYWx1ZShrZXksIGluamVjdGVkU2NyaXB0
LnNlY29uZC52OE9iamVjdCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KFNjcmlwdFN0YXRlKiBz
Y3JpcHRTdGF0ZSkKK3sKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6
OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gc2NyaXB0U3RhdGUtPmNvbnRleHQoKTsKKyAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7CisgICAg
aWYgKGdsb2JhbC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihW
OERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgZ2xvYmFsKTsKKyAgICBpZiAoaG9sZGVyLklzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZyYW1lKiBmcmFtZSA9IFY4RE9NV2lu
ZG93Ojp0b05hdGl2ZShob2xkZXIpLT5mcmFtZSgpOworCisgICAgdjg6OkNvbnRleHQ6OlNjb3Bl
IGNvbnRleHRTY29wZShjb250ZXh0KTsKKyAgICByZXR1cm4gVjhCaW5kaW5nU2VjdXJpdHk6OmNh
bkFjY2Vzc0ZyYW1lKFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGZyYW1lLCBmYWxzZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwCmluZGV4IDYzZmIwMjAuLmE1ZGIzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiAjaW5jbHVk
ZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCi0jaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKQEAgLTg2LDcgKzg2LDcgQEAgQ29uc29s
ZU1lc3NhZ2U6On5Db25zb2xlTWVzc2FnZSgpCiB7CiB9CiAKLXZvaWQgQ29uc29sZU1lc3NhZ2U6
OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQ6OkNvbnNvbGUqIGZyb250ZW5kLCBJbmpl
Y3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9zdCkKK3ZvaWQgQ29uc29sZU1lc3NhZ2U6
OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQ6OkNvbnNvbGUqIGZyb250ZW5kLCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKIHsKICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBqc29uT2JqID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAg
ICBqc29uT2JqLT5zZXROdW1iZXIoInNvdXJjZSIsIHN0YXRpY19jYXN0PGludD4obV9zb3VyY2Up
KTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJ
bnNwZWN0b3JGcm9udGVuZDo6Q29uc29sZSogZnJvbnRlbmQsIEluamVjdGUKICAgICBpZiAobV90
eXBlID09IE5ldHdvcmtFcnJvck1lc3NhZ2VUeXBlKSAKICAgICAgICAganNvbk9iai0+c2V0TnVt
YmVyKCJyZXF1ZXN0SWQiLCBtX3JlcXVlc3RJZCk7CiAgICAgaWYgKG1fYXJndW1lbnRzICYmIG1f
YXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpIHsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0Rm9yKG1fYXJn
dW1lbnRzLT5nbG9iYWxTdGF0ZSgpKTsKKyAgICAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKG1fYXJndW1l
bnRzLT5nbG9iYWxTdGF0ZSgpKTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1Zh
bHVlKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4ganNvbkFyZ3MgPSBJ
bnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCmluZGV4IDI2ZTU2NzUuLmNiZDc5YzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCkBAIC0zOSw3ICszOSw3IEBA
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJ
bmplY3RlZFNjcmlwdEhvc3Q7CitjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJ
bnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIFNjcmlwdEFy
Z3VtZW50czsKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbSwg
Y29uc3QgU3RyaW5nJiByZXNwb25zZVVybCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAg
ICB+Q29uc29sZU1lc3NhZ2UoKTsKIAotICAgIHZvaWQgYWRkVG9Gcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZDo6Q29uc29sZSosIEluamVjdGVkU2NyaXB0SG9zdCopOworICAgIHZvaWQgYWRkVG9G
cm9udGVuZChJbnNwZWN0b3JGcm9udGVuZDo6Q29uc29sZSosIEluamVjdGVkU2NyaXB0TWFuYWdl
ciopOwogICAgIHZvaWQgdXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yRnJvbnRl
bmQ6OkNvbnNvbGUqKTsKICAgICB2b2lkIGluY3JlbWVudENvdW50KCkgeyArK21fcmVwZWF0Q291
bnQ7IH0KICAgICBib29sIGlzRXF1YWwoQ29uc29sZU1lc3NhZ2UqIG1zZykgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAppbmRleCA2YzExNWQwLi40
NGJkZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5qZWN0
ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCkBAIC0xNzQsNyArMTc1LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6
cmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCiAKIGJvb2wgSW5q
ZWN0ZWRTY3JpcHQ6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpCiB7Ci0gICAgcmV0dXJuIElu
amVjdGVkU2NyaXB0SG9zdDo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KG1faW5qZWN0ZWRTY3Jp
cHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CisgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0TWFuYWdl
cjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0
U3RhdGUoKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Om1ha2VDYWxsKFNjcmlwdEZ1bmN0
aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggMzNkNTQxMS4uOTY4ODU1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTMxLDcg
KzMxLDcgQEAKICNpZm5kZWYgSW5qZWN0ZWRTY3JpcHRfaAogI2RlZmluZSBJbmplY3RlZFNjcmlw
dF9oCiAKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNzEsNyArNzEs
NyBAQCBwdWJsaWM6CiAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpOyB9CiAKIHByaXZhdGU6Ci0g
ICAgZnJpZW5kIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3Jp
cHRGb3IoU2NyaXB0U3RhdGUqKTsKKyAgICBmcmllbmQgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihTY3JpcHRTdGF0ZSopOwogICAgIGV4cGxp
Y2l0IEluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVjdCk7CiAKICAgICBib29sIGNhbkFjY2Vzc0lu
c3BlY3RlZFdpbmRvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcAppbmRleCBhZDRkZjQ1Li5mNmRjNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtMzgsNyArMzgsNiBAQAog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlw
dFNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCkBAIC02OSwy
OSArNjgsNDAgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1JbmplY3RlZFNjcmlwdEhvc3Q6OkluamVjdGVkU2NyaXB0SG9zdChJbnNwZWN0b3JBZ2VudCog
aW5zcGVjdG9yQWdlbnQpCi0gICAgOiBtX2luc3BlY3RvckFnZW50KGluc3BlY3RvckFnZW50KQot
ICAgICwgbV9uZXh0SW5qZWN0ZWRTY3JpcHRJZCgxKQotICAgICwgbV9sYXN0V29ya2VySWQoMSA8
PCAzMSkgLy8gRGlzdGluZ3Vpc2ggaWRzIG9mIGZha2Ugd29ya2VycyBmcm9tIHJlYWwgb25lcywg
dG8gbWluaW1pemUgdGhlIGNoYW5jZXMgdGhleSBvdmVybGFwLgorUGFzc1JlZlB0cjxJbmplY3Rl
ZFNjcmlwdEhvc3Q+IEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkKIHsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluamVjdGVkU2NyaXB0SG9zdCgpKTsKIH0KIAotSW5qZWN0ZWRTY3JpcHRI
b3N0Ojp+SW5qZWN0ZWRTY3JpcHRIb3N0KCkKK0luamVjdGVkU2NyaXB0SG9zdDo6SW5qZWN0ZWRT
Y3JpcHRIb3N0KCkKKyAgICA6IG1faW5zcGVjdG9yQWdlbnQoMCkKKyAgICAsIG1fY29uc29sZUFn
ZW50KDApCisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgICwgbV9kYXRhYmFzZUFnZW50KDApCisj
ZW5kaWYKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisgICAgLCBtX2RvbVN0b3JhZ2VBZ2VudCgw
KQorI2VuZGlmCisgICAgLCBtX2Zyb250ZW5kKDApCisgICAgLCBtX2xhc3RXb3JrZXJJZCgxIDw8
IDMxKSAvLyBEaXN0aW5ndWlzaCBpZHMgb2YgZmFrZSB3b3JrZXJzIGZyb20gcmVhbCBvbmVzLCB0
byBtaW5pbWl6ZSB0aGUgY2hhbmNlcyB0aGV5IG92ZXJsYXAuCiB7CiB9CiAKLXZvaWQgSW5qZWN0
ZWRTY3JpcHRIb3N0OjppbnNwZWN0SW1wbChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvYmpl
Y3RJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaGludHMpCitJbmplY3RlZFNjcmlwdEhv
c3Q6On5JbmplY3RlZFNjcmlwdEhvc3QoKQogewotICAgIGlmIChJbnNwZWN0b3JGcm9udGVuZCog
ZmUgPSBmcm9udGVuZCgpKQotICAgICAgICBmZS0+aW5zcGVjdG9yKCktPmluc3BlY3Qob2JqZWN0
SWQtPmFzT2JqZWN0KCksIGhpbnRzLT5hc09iamVjdCgpKTsKIH0KIAotdm9pZCBJbmplY3RlZFNj
cmlwdEhvc3Q6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0
OjpkaXNjb25uZWN0KCkKIHsKLSAgICBpZiAobV9pbnNwZWN0b3JBZ2VudCkgewotICAgICAgICBF
cnJvclN0cmluZyBlcnJvcjsKLSAgICAgICAgbV9pbnNwZWN0b3JBZ2VudC0+Y29uc29sZUFnZW50
KCktPmNsZWFyQ29uc29sZU1lc3NhZ2VzKCZlcnJvcik7Ci0gICAgfQorICAgIG1faW5zcGVjdG9y
QWdlbnQgPSAwOworICAgIG1fY29uc29sZUFnZW50ID0gMDsKKyNpZiBFTkFCTEUoREFUQUJBU0Up
CisgICAgbV9kYXRhYmFzZUFnZW50ID0gMDsKKyNlbmRpZgorI2lmIEVOQUJMRShET01fU1RPUkFH
RSkKKyAgICBtX2RvbVN0b3JhZ2VBZ2VudCA9IDA7CisjZW5kaWYKKyAgICBtX2Zyb250ZW5kID0g
MDsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmFkZEluc3BlY3RlZE5vZGUoTm9kZSog
bm9kZSkKQEAgLTEwNiw2ICsxMTYsMjAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNsZWFy
SW5zcGVjdGVkTm9kZXMoKQogICAgIG1faW5zcGVjdGVkTm9kZXMuY2xlYXIoKTsKIH0KIAordm9p
ZCBJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IG9iamVjdElkLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBoaW50cykKK3sKKyAgICBp
ZiAobV9mcm9udGVuZCkKKyAgICAgICAgbV9mcm9udGVuZC0+aW5zcGVjdG9yKCktPmluc3BlY3Qo
b2JqZWN0SWQtPmFzT2JqZWN0KCksIGhpbnRzLT5hc09iamVjdCgpKTsKK30KKwordm9pZCBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKK3sKKyAgICBpZiAobV9jb25z
b2xlQWdlbnQpIHsKKyAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CisgICAgICAgIG1fY29uc29s
ZUFnZW50LT5jbGVhckNvbnNvbGVNZXNzYWdlcygmZXJyb3IpOworICAgIH0KK30KKwogdm9pZCBJ
bmplY3RlZFNjcmlwdEhvc3Q6OmNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBQ
YXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVBsYWluVGV4dCh0ZXh0KTsKQEAg
LTEyMSw4ICsxNDUsOCBAQCBOb2RlKiBJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE5vZGUo
dW5zaWduZWQgbG9uZyBudW0pCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogbG9uZyBJbmplY3RlZFNj
cmlwdEhvc3Q6OmRhdGFiYXNlSWRJbXBsKERhdGFiYXNlKiBkYXRhYmFzZSkKIHsKLSAgICBpZiAo
bV9pbnNwZWN0b3JBZ2VudCAmJiBtX2luc3BlY3RvckFnZW50LT5kYXRhYmFzZUFnZW50KCkpCi0g
ICAgICAgIHJldHVybiBtX2luc3BlY3RvckFnZW50LT5kYXRhYmFzZUFnZW50KCktPmRhdGFiYXNl
SWQoZGF0YWJhc2UpOworICAgIGlmIChtX2RhdGFiYXNlQWdlbnQpCisgICAgICAgIHJldHVybiBt
X2RhdGFiYXNlQWdlbnQtPmRhdGFiYXNlSWQoZGF0YWJhc2UpOwogICAgIHJldHVybiAwOwogfQog
I2VuZGlmCkBAIC0xMzAsNzAgKzE1NCwxMiBAQCBsb25nIEluamVjdGVkU2NyaXB0SG9zdDo6ZGF0
YWJhc2VJZEltcGwoRGF0YWJhc2UqIGRhdGFiYXNlKQogI2lmIEVOQUJMRShET01fU1RPUkFHRSkK
IGxvbmcgSW5qZWN0ZWRTY3JpcHRIb3N0OjpzdG9yYWdlSWRJbXBsKFN0b3JhZ2UqIHN0b3JhZ2Up
CiB7Ci0gICAgaWYgKG1faW5zcGVjdG9yQWdlbnQgJiYgbV9pbnNwZWN0b3JBZ2VudC0+ZG9tU3Rv
cmFnZUFnZW50KCkpCi0gICAgICAgIHJldHVybiBtX2luc3BlY3RvckFnZW50LT5kb21TdG9yYWdl
QWdlbnQoKS0+c3RvcmFnZUlkKHN0b3JhZ2UpOworICAgIGlmIChtX2RvbVN0b3JhZ2VBZ2VudCkK
KyAgICAgICAgcmV0dXJuIG1fZG9tU3RvcmFnZUFnZW50LT5zdG9yYWdlSWQoc3RvcmFnZSk7CiAg
ICAgcmV0dXJuIDA7CiB9CiAjZW5kaWYKIAotSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRI
b3N0OjppbmplY3RlZFNjcmlwdEZvcklkKGxvbmcgaWQpCi17Ci0gICAgcmV0dXJuIG1faWRUb0lu
amVjdGVkU2NyaXB0LmdldChpZCk7Ci19Ci0KLUluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0
SG9zdDo6aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChJbnNwZWN0b3JPYmplY3QqIG9iamVjdElk
KQotewotICAgIGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCA9IDA7Ci0gICAgYm9vbCBzdWNjZXNzID0g
b2JqZWN0SWQtPmdldE51bWJlcigiaW5qZWN0ZWRTY3JpcHRJZCIsICZpbmplY3RlZFNjcmlwdElk
KTsKLSAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0Rm9ySWQo
aW5qZWN0ZWRTY3JpcHRJZCk7Ci0gICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7Ci19Ci0KLUlu
amVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3JpcHRGb3JNYWluRnJh
bWUoKQotewotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdEZvcihtYWluV29ybGRTY3JpcHRTdGF0
ZShtX2luc3BlY3RvckFnZW50LT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpKSk7Ci19Ci0K
LXZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHRzKCkKLXsKLSAg
ICBJZFRvSW5qZWN0ZWRTY3JpcHRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1faWRUb0luamVjdGVkU2Ny
aXB0LmVuZCgpOwotICAgIGZvciAoSWRUb0luamVjdGVkU2NyaXB0TWFwOjppdGVyYXRvciBpdCA9
IG1faWRUb0luamVjdGVkU2NyaXB0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAg
ZGlzY2FyZEluamVjdGVkU2NyaXB0KGl0LT5zZWNvbmQuc2NyaXB0U3RhdGUoKSk7Ci0gICAgbV9p
ZFRvSW5qZWN0ZWRTY3JpcHQuY2xlYXIoKTsKLX0KLQotdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6
OnJlbGVhc2VPYmplY3RHcm91cChsb25nIGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXApCi17Ci0gICAgaWYgKGluamVjdGVkU2NyaXB0SWQpIHsKLSAgICAgICAgIElu
amVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZ2V0KGlu
amVjdGVkU2NyaXB0SWQpOwotICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVl
KCkpCi0gICAgICAgICAgICAgaW5qZWN0ZWRTY3JpcHQucmVsZWFzZU9iamVjdEdyb3VwKG9iamVj
dEdyb3VwKTsKLSAgICB9IGVsc2UgewotICAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIGFsbCBpbmpl
Y3RlZCBzY3JpcHRzIGlmIGluamVjdGVkU2NyaXB0SWQgaXMgbm90IHNwZWNpZmllZC4KLSAgICAg
ICAgIGZvciAoSWRUb0luamVjdGVkU2NyaXB0TWFwOjppdGVyYXRvciBpdCA9IG1faWRUb0luamVj
dGVkU2NyaXB0LmJlZ2luKCk7IGl0ICE9IG1faWRUb0luamVjdGVkU2NyaXB0LmVuZCgpOyArK2l0
KQotICAgICAgICAgICAgICBpdC0+c2Vjb25kLnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91
cCk7Ci0gICAgfQotfQotCi1JbnNwZWN0b3JGcm9udGVuZCogSW5qZWN0ZWRTY3JpcHRIb3N0Ojpm
cm9udGVuZCgpCi17Ci0gICAgaWYgKCFtX2luc3BlY3RvckFnZW50KQotICAgICAgICByZXR1cm4g
MDsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JBZ2VudC0+ZnJvbnRlbmQoKTsKLX0KLQotU3RyaW5n
IEluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKQotewotICAgIHJldHVy
biBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMp
LCBzaXplb2YoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMpKTsKLX0KLQotcGFpcjxsb25nLCBTY3Jp
cHRPYmplY3Q+IEluamVjdGVkU2NyaXB0SG9zdDo6aW5qZWN0U2NyaXB0KGNvbnN0IFN0cmluZyYg
c291cmNlLCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCi17Ci0gICAgbG9uZyBpZCA9IG1fbmV4
dEluamVjdGVkU2NyaXB0SWQrKzsKLSAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoaWQsIGNyZWF0
ZUluamVjdGVkU2NyaXB0KHNvdXJjZSwgc2NyaXB0U3RhdGUsIGlkKSk7Ci19Ci0KICNpZiBFTkFC
TEUoV09SS0VSUykKIGxvbmcgSW5qZWN0ZWRTY3JpcHRIb3N0OjpuZXh0V29ya2VySWQoKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCmluZGV4IGNk
YjFlNjQuLjVlY2U0MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmgKQEAgLTQzLDYgKzQzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRGF0YWJhc2U7CiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKK2NsYXNzIEluc3BlY3RvckFnZW50
OworY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OworY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OworY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckZy
b250ZW5kOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgTm9kZTsKQEAgLTUzLDI4ICs1
Nyw0MyBAQCBjbGFzcyBTdG9yYWdlOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0IDogcHVibGlj
IFJlZkNvdW50ZWQ8SW5qZWN0ZWRTY3JpcHRIb3N0PgogewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluamVjdGVkU2NyaXB0SG9zdD4gY3JlYXRlKEluc3BlY3RvckFnZW50KiBpbnNw
ZWN0b3JBZ2VudCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZFNjcmlwdEhvc3Q+IGNy
ZWF0ZSgpOworICAgIH5JbmplY3RlZFNjcmlwdEhvc3QoKTsKKworICAgIHZvaWQgaW5pdChJbnNw
ZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQKKyAgICAgICAgICAgICwgSW5zcGVjdG9yQ29uc29s
ZUFnZW50KiBjb25zb2xlQWdlbnQKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisgICAgICAgICAgICAs
IEluc3BlY3RvckRhdGFiYXNlQWdlbnQqIGRhdGFiYXNlQWdlbnQKKyNlbmRpZgorI2lmIEVOQUJM
RShET01fU1RPUkFHRSkKKyAgICAgICAgICAgICwgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBk
b21TdG9yYWdlQWdlbnQKKyNlbmRpZgorICAgICAgICApCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEluamVjdGVkU2NyaXB0SG9zdChpbnNwZWN0b3JBZ2VudCkpOworICAgICAg
ICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQ7CisgICAgICAgIG1fY29uc29sZUFn
ZW50ID0gY29uc29sZUFnZW50OworI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICAgICAgbV9kYXRh
YmFzZUFnZW50ID0gZGF0YWJhc2VBZ2VudDsKKyNlbmRpZgorI2lmIEVOQUJMRShET01fU1RPUkFH
RSkKKyAgICAgICAgbV9kb21TdG9yYWdlQWdlbnQgPSBkb21TdG9yYWdlQWdlbnQ7CisjZW5kaWYK
ICAgICB9CisgICAgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQp
IHsgbV9mcm9udGVuZCA9IGZyb250ZW5kOyB9CisgICAgdm9pZCBjbGVhckZyb250ZW5kKCkgeyBt
X2Zyb250ZW5kID0gMDsgfQogCiAgICAgc3RhdGljIE5vZGUqIHNjcmlwdFZhbHVlQXNOb2RlKFNj
cmlwdFZhbHVlKTsKICAgICBzdGF0aWMgU2NyaXB0VmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUoU2Ny
aXB0U3RhdGUqLCBOb2RlKik7CiAKLSAgICB+SW5qZWN0ZWRTY3JpcHRIb3N0KCk7Ci0KLSAgICBJ
bnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQoKSB7IHJldHVybiBtX2luc3BlY3RvckFnZW50
OyB9Ci0gICAgdm9pZCBkaXNjb25uZWN0Q29udHJvbGxlcigpIHsgbV9pbnNwZWN0b3JBZ2VudCA9
IDA7IH0KLQotICAgIHZvaWQgaW5zcGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
b2JqZWN0SWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGhpbnRzKTsKLSAgICB2b2lkIGNs
ZWFyQ29uc29sZU1lc3NhZ2VzKCk7CisgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKICAgICB2b2lk
IGFkZEluc3BlY3RlZE5vZGUoTm9kZSopOwogICAgIHZvaWQgY2xlYXJJbnNwZWN0ZWROb2Rlcygp
OwogCisgICAgdm9pZCBpbnNwZWN0SW1wbChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvYmpl
Y3RJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaGludHMpOworICAgIHZvaWQgY2xlYXJD
b25zb2xlTWVzc2FnZXMoKTsKICAgICB2b2lkIGNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCk7
CiAgICAgTm9kZSogaW5zcGVjdGVkTm9kZSh1bnNpZ25lZCBsb25nIG51bSk7Ci0KICNpZiBFTkFC
TEUoREFUQUJBU0UpCiAgICAgbG9uZyBkYXRhYmFzZUlkSW1wbChEYXRhYmFzZSopOwogI2VuZGlm
CkBAIC04NywyOCArMTA2LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZERlc3Ryb3lXb3JrZXIo
bG9uZyBpZCk7CiAjZW5kaWYKIAotICAgIHBhaXI8bG9uZywgU2NyaXB0T2JqZWN0PiBpbmplY3RT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFNjcmlwdFN0YXRlKik7Ci0gICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3RhdGUqKTsKLSAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdEZvcklkKGxvbmcpOwotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVk
U2NyaXB0Rm9yT2JqZWN0SWQoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3RJZCk7Ci0gICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JNYWluRnJhbWUoKTsKLSAgICB2b2lkIGRpc2NhcmRJ
bmplY3RlZFNjcmlwdHMoKTsKLSAgICB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChsb25nIGluamVj
dGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwotCi0gICAgc3RhdGljIGJv
b2wgY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KFNjcmlwdFN0YXRlKik7Ci0KIHByaXZhdGU6Ci0g
ICAgSW5qZWN0ZWRTY3JpcHRIb3N0KEluc3BlY3RvckFnZW50Kik7Ci0gICAgSW5zcGVjdG9yRnJv
bnRlbmQqIGZyb250ZW5kKCk7Ci0gICAgU3RyaW5nIGluamVjdGVkU2NyaXB0U291cmNlKCk7Ci0g
ICAgU2NyaXB0T2JqZWN0IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNl
LCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGxvbmcgaWQpOwotICAgIHZvaWQgZGlzY2FyZElu
amVjdGVkU2NyaXB0KFNjcmlwdFN0YXRlKik7CisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KCk7CiAK
ICAgICBJbnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudDsKLSAgICBsb25nIG1fbmV4dElu
amVjdGVkU2NyaXB0SWQ7CisgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2NvbnNvbGVBZ2Vu
dDsKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisgICAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogbV9k
YXRhYmFzZUFnZW50OworI2VuZGlmCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorICAgIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudCogbV9kb21TdG9yYWdlQWdlbnQ7CisjZW5kaWYKKyAgICBJbnNw
ZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKICAgICBsb25nIG1fbGFzdFdvcmtlcklkOwotICAg
IHR5cGVkZWYgSGFzaE1hcDxsb25nLCBJbmplY3RlZFNjcmlwdD4gSWRUb0luamVjdGVkU2NyaXB0
TWFwOwotICAgIElkVG9JbmplY3RlZFNjcmlwdE1hcCBtX2lkVG9JbmplY3RlZFNjcmlwdDsKICAg
ICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbV9pbnNwZWN0ZWROb2RlczsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ1Mzc4YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0w
LDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3
ZWJraXRAbWF0dGxpbGVrLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1
ZGUgIkluamVjdGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1
ZXMuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitQYXNzT3duUHRyPEluamVjdGVkU2NyaXB0TWFuYWdlcj4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKCkpOworfQorCitJbmplY3RlZFNjcmlwdE1hbmFnZXI6OkluamVjdGVkU2NyaXB0TWFuYWdl
cigpCisgICAgOiBtX25leHRJbmplY3RlZFNjcmlwdElkKDEpCisgICAgLCBtX2luamVjdGVkU2Ny
aXB0SG9zdChJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKQoreworfQorCitJbmplY3RlZFNj
cmlwdE1hbmFnZXI6On5JbmplY3RlZFNjcmlwdE1hbmFnZXIoKQoreworfQorCit2b2lkIEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6ZGlzY29ubmVjdCgpCit7CisgICAgbV9pbmplY3RlZFNjcmlwdEhv
c3QtPmRpc2Nvbm5lY3QoKTsKKyAgICBtX2luamVjdGVkU2NyaXB0SG9zdC5jbGVhcigpOworfQor
CitJbmplY3RlZFNjcmlwdEhvc3QqIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3Jp
cHRIb3N0KCkKK3sKKyAgICByZXR1cm4gbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCk7Cit9CisK
K0luamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3JJ
ZChsb25nIGlkKQoreworICAgIHJldHVybiBtX2lkVG9JbmplY3RlZFNjcmlwdC5nZXQoaWQpOwor
fQorCitJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0
Rm9yT2JqZWN0SWQoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3RJZCkKK3sKKyAgICBsb25nIGluamVj
dGVkU2NyaXB0SWQgPSAwOworICAgIGJvb2wgc3VjY2VzcyA9IG9iamVjdElkLT5nZXROdW1iZXIo
ImluamVjdGVkU2NyaXB0SWQiLCAmaW5qZWN0ZWRTY3JpcHRJZCk7CisgICAgaWYgKHN1Y2Nlc3Mp
CisgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdEZvcklkKGluamVjdGVkU2NyaXB0SWQpOwor
ICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOworfQorCit2b2lkIEluamVjdGVkU2NyaXB0TWFu
YWdlcjo6ZGlzY2FyZEluamVjdGVkU2NyaXB0cygpCit7CisgICAgSWRUb0luamVjdGVkU2NyaXB0
TWFwOjppdGVyYXRvciBlbmQgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5lbmQoKTsKKyAgICBmb3Ig
KElkVG9JbmplY3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lkVG9JbmplY3RlZFNjcmlw
dC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGRpc2NhcmRJbmplY3RlZFNjcmlw
dChpdC0+c2Vjb25kLnNjcmlwdFN0YXRlKCkpOworICAgIG1faWRUb0luamVjdGVkU2NyaXB0LmNs
ZWFyKCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpyZWxlYXNlT2JqZWN0R3Jv
dXAobG9uZyBpbmplY3RlZFNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQorewor
ICAgIGlmIChpbmplY3RlZFNjcmlwdElkKSB7CisgICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCA9IG1faWRUb0luamVjdGVkU2NyaXB0LmdldChpbmplY3RlZFNjcmlwdElkKTsK
KyAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICAgICAg
IGluamVjdGVkU2NyaXB0LnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91cCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBhbGwgaW5qZWN0ZWQgc2NyaXB0cyBpZiBp
bmplY3RlZFNjcmlwdElkIGlzIG5vdCBzcGVjaWZpZWQuCisgICAgICAgICBmb3IgKElkVG9Jbmpl
Y3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5iZWdpbigp
OyBpdCAhPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgICAg
aXQtPnNlY29uZC5yZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0R3JvdXApOworICAgIH0KK30KKwor
U3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKQorewor
ICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oSW5qZWN0ZWRTY3JpcHRT
b3VyY2VfanMpLCBzaXplb2YoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMpKTsKK30KKworcGFpcjxs
b25nLCBTY3JpcHRPYmplY3Q+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0U2NyaXB0KGNv
bnN0IFN0cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCit7CisgICAgbG9u
ZyBpZCA9IG1fbmV4dEluamVjdGVkU2NyaXB0SWQrKzsKKyAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoaWQsIGNyZWF0ZUluamVjdGVkU2NyaXB0KHNvdXJjZSwgc2NyaXB0U3RhdGUsIGlkKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM1MjY4ZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmplY3RlZFNjcmlwdE1hbmFnZXJfaAor
I2RlZmluZSBJbmplY3RlZFNjcmlwdE1hbmFnZXJfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEluamVjdGVkU2NyaXB0OworY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OworY2xhc3MgSW5z
cGVjdG9yT2JqZWN0OworY2xhc3MgU2NyaXB0T2JqZWN0OworCitjbGFzcyBJbmplY3RlZFNjcmlw
dE1hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluamVjdGVkU2NyaXB0TWFuYWdl
cik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
PiBjcmVhdGUoKTsKKyAgICB+SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCk7CisKKyAgICB2b2lkIGRp
c2Nvbm5lY3QoKTsKKworICAgIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0
KCk7CisKKyAgICBwYWlyPGxvbmcsIFNjcmlwdE9iamVjdD4gaW5qZWN0U2NyaXB0KGNvbnN0IFN0
cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSopOworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVk
U2NyaXB0Rm9yKFNjcmlwdFN0YXRlKik7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHRGb3JJZChsb25nKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvck9iamVj
dElkKEluc3BlY3Rvck9iamVjdCogb2JqZWN0SWQpOworICAgIHZvaWQgZGlzY2FyZEluamVjdGVk
U2NyaXB0cygpOworICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKGxvbmcgaW5qZWN0ZWRTY3Jp
cHRJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7CisKKyAgICBzdGF0aWMgYm9vbCBjYW5B
Y2Nlc3NJbnNwZWN0ZWRXaW5kb3coU2NyaXB0U3RhdGUqKTsKKworcHJpdmF0ZToKKyAgICBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKTsKKworICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNvdXJjZSgp
OworICAgIFNjcmlwdE9iamVjdCBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNv
dXJjZSwgU2NyaXB0U3RhdGUqLCBsb25nIGlkKTsKKyAgICB2b2lkIGRpc2NhcmRJbmplY3RlZFNj
cmlwdChTY3JpcHRTdGF0ZSopOworCisgICAgbG9uZyBtX25leHRJbmplY3RlZFNjcmlwdElkOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBJbmplY3RlZFNjcmlwdD4gSWRUb0luamVjdGVkU2Ny
aXB0TWFwOworICAgIElkVG9JbmplY3RlZFNjcmlwdE1hcCBtX2lkVG9JbmplY3RlZFNjcmlwdDsK
KyAgICBSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0SG9zdDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVkKEluamVjdGVk
U2NyaXB0TWFuYWdlcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRl
eCA5YTJiN2UxLi5hOWU5MWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlk
bApAQCAtODgsNiArODgsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQgY2xlYXJDb25z
b2xlTWVzc2FnZXMoKTsKICAgICAgICAgW2V2ZW50XSB2b2lkIGNvbnNvbGVNZXNzYWdlc0NsZWFy
ZWQoKTsKICAgICAgICAgdm9pZCBzZXRNb25pdG9yaW5nWEhSRW5hYmxlZChpbiBib29sZWFuIGVu
YWJsZWQpOworICAgICAgICB2b2lkIGFkZEluc3BlY3RlZE5vZGUoaW4gbG9uZyBub2RlSWQpOwog
ICAgIH07CiAKICAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPUlOU1BFQ1RPUl0gTmV0d29yayB7
CkBAIC0xNjIsOCArMTYzLDYgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIG91dGVySFRN
TChpbiBsb25nIG5vZGVJZCwgb3V0IFN0cmluZyBvdXRlckhUTUwpOwogICAgICAgICB2b2lkIHNl
dE91dGVySFRNTChpbiBsb25nIG5vZGVJZCwgaW4gU3RyaW5nIG91dGVySFRNTCwgb3V0IGxvbmcg
b3V0Tm9kZUlkKTsKIAotICAgICAgICB2b2lkIGFkZEluc3BlY3RlZE5vZGUoaW4gbG9uZyBub2Rl
SWQpOwotCiAgICAgICAgIHZvaWQgcGVyZm9ybVNlYXJjaChpbiBTdHJpbmcgcXVlcnksIGluIGJv
b2xlYW4gcnVuU3luY2hyb25vdXNseSk7CiAgICAgICAgIHZvaWQgc2VhcmNoQ2FuY2VsZWQoKTsK
ICAgICAgICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoaW4gU3RyaW5nIHBhdGgsIG91
dCBsb25nIG5vZGVJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
LmNwcAppbmRleCAxNWNlYmEwLi43M2VlNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckNTU0FnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCkBAIC0xMzIsMTQgKzEz
MywxNCBAQCBzdGF0aWMgY29uc3QgY2hhciBzY3JpcHRzUGFuZWxOYW1lW10gPSAic2NyaXB0cyI7
CiBzdGF0aWMgY29uc3QgY2hhciBjb25zb2xlUGFuZWxOYW1lW10gPSAiY29uc29sZSI7CiBzdGF0
aWMgY29uc3QgY2hhciBwcm9maWxlc1BhbmVsTmFtZVtdID0gInByb2ZpbGVzIjsKIAotSW5zcGVj
dG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xp
ZW50KQorSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogY2xpZW50LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFu
YWdlcikKICAgICA6IG1faW5zcGVjdGVkUGFnZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50
KQogICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKG5ldyBJ
bnN0cnVtZW50aW5nQWdlbnRzKCkpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0SG9zdChJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fc3RhdGUobmV3IEluc3BlY3RvclN0YXRl
KGNsaWVudCkpCi0gICAgLCBtX2RvbUFnZW50KEluc3BlY3RvckRPTUFnZW50OjpjcmVhdGUobV9p
bnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX2luamVjdGVkU2NyaXB0
SG9zdC5nZXQoKSkpCisgICAgLCBtX2RvbUFnZW50KEluc3BlY3RvckRPTUFnZW50OjpjcmVhdGUo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBpbmplY3RlZFNjcmlw
dE1hbmFnZXIpKQogICAgICwgbV9jc3NBZ2VudChuZXcgSW5zcGVjdG9yQ1NTQWdlbnQobV9pbnN0
cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2RvbUFnZW50LmdldCgpKSkKICNpZiBFTkFCTEUoREFU
QUJBU0UpCiAgICAgLCBtX2RhdGFiYXNlQWdlbnQoSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Y3Jl
YXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpCkBAIC0xNTIsOSArMTUzLDkgQEAgSW5z
cGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCog
Y2xpZW50KQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlQWdlbnQobmV3IEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudChtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2UpKQogI2Vu
ZGlmCiAgICAgLCBtX3Jlc291cmNlQWdlbnQoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y3JlYXRl
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSwgbV9zdGF0ZS5nZXQoKSkpCi0gICAg
LCBtX2NvbnNvbGVBZ2VudChuZXcgSW5zcGVjdG9yQ29uc29sZUFnZW50KG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5nZXQoKSwgdGhpcywgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdEhvc3Qu
Z2V0KCksIG1fZG9tQWdlbnQuZ2V0KCkpKQorICAgICwgbV9jb25zb2xlQWdlbnQobmV3IEluc3Bl
Y3RvckNvbnNvbGVBZ2VudChtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHRoaXMsIG1fc3Rh
dGUuZ2V0KCksIGluamVjdGVkU2NyaXB0TWFuYWdlciwgbV9kb21BZ2VudC5nZXQoKSkpCiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgLCBtX2RlYnVnZ2VyQWdlbnQoSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9z
dGF0ZS5nZXQoKSwgcGFnZSwgbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCkpKQorICAgICwgbV9k
ZWJ1Z2dlckFnZW50KEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRp
bmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2UsIGluamVjdGVkU2NyaXB0TWFuYWdl
cikpCiAgICAgLCBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50KEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgp
LCBtX2RvbUFnZW50LmdldCgpLCBtX2RlYnVnZ2VyQWdlbnQuZ2V0KCksIHRoaXMpKQogICAgICwg
bV9wcm9maWxlckFnZW50KEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1l
bnRpbmdBZ2VudHMuZ2V0KCksIG1fY29uc29sZUFnZW50LmdldCgpLCBwYWdlKSkKICNlbmRpZgpA
QCAtMTYzLDYgKzE2NCwxNiBAQCBJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQoUGFnZSog
cGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgQVNTRVJUX0FSRyhwYWdlLCBwYWdl
KTsKICAgICBBU1NFUlRfQVJHKGNsaWVudCwgY2xpZW50KTsKICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmJpbmRJbnNwZWN0b3JBZ2VudChtX2luc3BlY3RlZFBhZ2UsIHRoaXMpOworCisg
ICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5pbml0KHRo
aXMKKyAgICAgICAgLCBtX2NvbnNvbGVBZ2VudC5nZXQoKQorI2lmIEVOQUJMRShEQVRBQkFTRSkK
KyAgICAgICAgLCBtX2RhdGFiYXNlQWdlbnQuZ2V0KCkKKyNlbmRpZgorI2lmIEVOQUJMRShET01f
U1RPUkFHRSkKKyAgICAgICAgLCBtX2RvbVN0b3JhZ2VBZ2VudC5nZXQoKQorI2VuZGlmCisgICAg
KTsKIH0KIAogSW5zcGVjdG9yQWdlbnQ6On5JbnNwZWN0b3JBZ2VudCgpCkBAIC0xOTMsNyArMjA0
LDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiAgICAg
bV9pbnNwZWN0ZWRQYWdlID0gMDsKIAogICAgIHJlbGVhc2VGcm9udGVuZExpZmV0aW1lQWdlbnRz
KCk7Ci0gICAgbV9pbmplY3RlZFNjcmlwdEhvc3QtPmRpc2Nvbm5lY3RDb250cm9sbGVyKCk7Cisg
ICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsKIAogICAgIG1fY2xpZW50
LT5pbnNwZWN0b3JEZXN0cm95ZWQoKTsKICAgICBtX2NsaWVudCA9IDA7CkBAIC0yNTMsNyArMjY0
LDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6Zm9jdXNOb2RlKCkKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1f
aW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihtYWluV29ybGRTY3JpcHRTdGF0
ZShmcmFtZSkpOworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZy
YW1lKSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0zMjksMTkgKzM0MCwxOSBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQqCiAKICAg
ICBpZiAoZW5hYmxlZCgpKSB7CiAgICAgICAgIGlmIChtX2Zyb250ZW5kICYmIGZyYW1lID09IG1f
aW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtX2luamVjdGVkU2NyaXB0
SG9zdC0+ZGlzY2FyZEluamVjdGVkU2NyaXB0cygpOworICAgICAgICAgICAgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmRpc2NhcmRJbmplY3RlZFNjcmlwdHMoKTsKIAogICAgICAgICBpZiAobV9z
Y3JpcHRzVG9FdmFsdWF0ZU9uTG9hZC5zaXplKCkpIHsKICAgICAgICAgICAgIFNjcmlwdFN0YXRl
KiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZyYW1lKTsKICAgICAgICAgICAg
IGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gbV9zY3JpcHRzVG9FdmFsdWF0ZU9u
TG9hZC5iZWdpbigpOwogICAgICAgICAgICAgICAgICAgaXQgIT0gbV9zY3JpcHRzVG9FdmFsdWF0
ZU9uTG9hZC5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAgICAgIG1faW5qZWN0ZWRTY3JpcHRI
b3N0LT5pbmplY3RTY3JpcHQoKml0LCBzY3JpcHRTdGF0ZSk7CisgICAgICAgICAgICAgICAgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdFNjcmlwdCgqaXQsIHNjcmlwdFN0YXRlKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghbV9pbnNwZWN0b3JFeHRl
bnNpb25BUEkuaXNFbXB0eSgpKQotICAgICAgICBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0
U2NyaXB0KG1faW5zcGVjdG9yRXh0ZW5zaW9uQVBJLCBtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFt
ZSkpOworICAgICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0U2NyaXB0KG1faW5z
cGVjdG9yRXh0ZW5zaW9uQVBJLCBtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSkpOwogfQogCiB2
b2lkIEluc3BlY3RvckFnZW50OjpzZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKQEAg
LTQzOCw3ICs0NDksNyBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpkaXNjb25uZWN0RnJvbnRlbmQo
KQogCiB2b2lkIEluc3BlY3RvckFnZW50OjpjcmVhdGVGcm9udGVuZExpZmV0aW1lQWdlbnRzKCkK
IHsKLSAgICBtX3J1bnRpbWVBZ2VudCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y3JlYXRlKG1f
aW5qZWN0ZWRTY3JpcHRIb3N0LmdldCgpKTsKKyAgICBtX3J1bnRpbWVBZ2VudCA9IEluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6Y3JlYXRlKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBtX2luc3BlY3Rl
ZFBhZ2UpOwogfQogCiB2b2lkIEluc3BlY3RvckFnZW50OjpyZWxlYXNlRnJvbnRlbmRMaWZldGlt
ZUFnZW50cygpCkBAIC01MDksNyArNTIwLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ29t
bWl0TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICBtX2Zyb250ZW5kLT5pbnNw
ZWN0b3IoKS0+aW5zcGVjdGVkVVJMQ2hhbmdlZChsb2FkZXItPnVybCgpLnN0cmluZygpKTsKICAg
ICAgICAgbV9mcm9udGVuZC0+aW5zcGVjdG9yKCktPnJlc2V0KCk7CiAgICAgfQotICAgIG1faW5q
ZWN0ZWRTY3JpcHRIb3N0LT5kaXNjYXJkSW5qZWN0ZWRTY3JpcHRzKCk7CisgICAgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXItPmRpc2NhcmRJbmplY3RlZFNjcmlwdHMoKTsKICNpZiBFTkFCTEUoV09S
S0VSUykKICAgICBtX3dvcmtlcnMuY2xlYXIoKTsKICNlbmRpZgpAQCAtNTIwLDYgKzUzMSw3IEBA
IHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRvbUNvbnRlbnRMb2FkZWRFdmVudEZpcmVkKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVCiAgICAgaWYgKCFlbmFibGVkKCkgfHwgIWlzTWFpblJl
c291cmNlTG9hZGVyKGxvYWRlciwgdXJsKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5jbGVhckluc3BlY3RlZE5v
ZGVzKCk7CiAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPm1haW5G
cmFtZURPTUNvbnRlbnRMb2FkZWQoKTsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVB
Z2VudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAppbmRleCAx
NTFkYmE1Li5lYTNiOTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnQuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBIVFRQ
SGVhZGVyTWFwOwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEluamVjdGVkU2NyaXB0Owot
Y2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OworY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwog
Y2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKQEAgLTEwMCwxMSArMTAwLDEwIEBAIGNsYXNzIElu
c3BlY3RvckFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBZ2VudCk7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yQWdl
bnQoUGFnZSosIEluc3BlY3RvckNsaWVudCopOworICAgIEluc3BlY3RvckFnZW50KFBhZ2UqLCBJ
bnNwZWN0b3JDbGllbnQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIH5J
bnNwZWN0b3JBZ2VudCgpOwogCiAgICAgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQo
KSB7IHJldHVybiBtX2NsaWVudDsgfQotICAgIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRT
Y3JpcHRIb3N0KCkgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCk7IH0KIAogICAg
IHZvaWQgaW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpOwogCkBAIC0yNDUsNyArMjQ0LDcgQEAgcHJp
dmF0ZToKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIEluc3BlY3RvckZyb250
ZW5kKiBtX2Zyb250ZW5kOwogICAgIE93blB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3Ry
dW1lbnRpbmdBZ2VudHM7Ci0gICAgUmVmUHRyPEluamVjdGVkU2NyaXB0SG9zdD4gbV9pbmplY3Rl
ZFNjcmlwdEhvc3Q7CisgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcjsKICAgICBPd25QdHI8SW5zcGVjdG9yU3RhdGU+IG1fc3RhdGU7CiAgICAgT3duUHRy
PEluc3BlY3RvckRPTUFnZW50PiBtX2RvbUFnZW50OwogICAgIE93blB0cjxJbnNwZWN0b3JDU1NB
Z2VudD4gbV9jc3NBZ2VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDBjYmE3NzUuLmU3YjVl
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2Vy
RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpICYmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogCiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDNiODVlNDMuLjA1NTkwZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkNvbnNv
bGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
LmgiCkBAIC01NSwxMSArNTYsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIgbW9uaXRvcmluZ1hIUltd
ID0gIm1vbml0b3JpbmdYSFIiOwogc3RhdGljIGNvbnN0IGNoYXIgY29uc29sZU1lc3NhZ2VzRW5h
YmxlZFtdID0gImNvbnNvbGVNZXNzYWdlc0VuYWJsZWQiOwogfQogCi1JbnNwZWN0b3JDb25zb2xl
QWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIEluc3BlY3RvclN0
YXRlKiBzdGF0ZSwgSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QsIEluc3Bl
Y3RvckRPTUFnZW50KiBkb21BZ2VudCkKK0luc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9y
Q29uc29sZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIElu
c3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yRE9NQWdl
bnQqIGRvbUFnZW50KQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3RydW1lbnRpbmdB
Z2VudHMpCiAgICAgLCBtX2luc3BlY3RvckFnZW50KGluc3BlY3RvckFnZW50KQogICAgICwgbV9p
bnNwZWN0b3JTdGF0ZShzdGF0ZSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRIb3N0KGluamVjdGVk
U2NyaXB0SG9zdCkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0
TWFuYWdlcikKICAgICAsIG1faW5zcGVjdG9yRE9NQWdlbnQoZG9tQWdlbnQpCiAgICAgLCBtX2Zy
b250ZW5kKDApCiAgICAgLCBtX3ByZXZpb3VzTWVzc2FnZSgwKQpAQCAtNzQsNyArNzUsNyBAQCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6On5JbnNwZWN0b3JDb25zb2xlQWdlbnQoKQogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cyA9IDA7CiAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IDA7CiAgICAgbV9p
bnNwZWN0b3JTdGF0ZSA9IDA7Ci0gICAgbV9pbmplY3RlZFNjcmlwdEhvc3QgPSAwOworICAgIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyID0gMDsKICAgICBtX2luc3BlY3RvckRPTUFnZW50ID0gMDsK
IH0KIApAQCAtODksOSArOTAsOCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y2xlYXJD
b25zb2xlTWVzc2FnZXMoRXJyb3JTdHJpbmcqKQogICAgIG1fY29uc29sZU1lc3NhZ2VzLmNsZWFy
KCk7CiAgICAgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCA9IDA7CiAgICAgbV9wcmV2aW91
c01lc3NhZ2UgPSAwOwotICAgIG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5yZWxlYXNlT2JqZWN0R3Jv
dXAoMCAvKiByZWxlYXNlIHRoZSBncm91cCBpbiBhbGwgc2NyaXB0cyAqLywgImNvbnNvbGUiKTsK
LSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gbV9pbnNwZWN0b3JBZ2VudC0+
ZG9tQWdlbnQoKSkKLSAgICAgICAgZG9tQWdlbnQtPnJlbGVhc2VEYW5nbGluZ05vZGVzKCk7Cisg
ICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPnJlbGVhc2VPYmplY3RHcm91cCgwIC8qIHJlbGVh
c2UgdGhlIGdyb3VwIGluIGFsbCBzY3JpcHRzICovLCAiY29uc29sZSIpOworICAgIG1faW5zcGVj
dG9yRE9NQWdlbnQtPnJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CiAgICAgaWYgKG1fZnJvbnRlbmQp
CiAgICAgICAgIG1fZnJvbnRlbmQtPmNvbnNvbGVNZXNzYWdlc0NsZWFyZWQoKTsKIH0KQEAgLTIx
OCw2ICsyMTgsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnNldE1vbml0b3JpbmdY
SFJFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKQogICAgIG1faW5zcGVjdG9yU3Rh
dGUtPnNldEJvb2xlYW4oQ29uc29sZUFnZW50U3RhdGU6Om1vbml0b3JpbmdYSFIsIGVuYWJsZWQp
OwogfQogCit2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkSW5zcGVjdGVkTm9kZShFcnJv
clN0cmluZyosIGxvbmcgbm9kZUlkKQoreworICAgIE5vZGUqIG5vZGUgPSBtX2luc3BlY3RvckRP
TUFnZW50LT5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmFk
ZEluc3BlY3RlZE5vZGUobm9kZSk7Cit9CisKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpz
ZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX2luc3BlY3Rv
clN0YXRlLT5zZXRCb29sZWFuKENvbnNvbGVBZ2VudFN0YXRlOjpjb25zb2xlTWVzc2FnZXNFbmFi
bGVkLCBlbmFibGVkKTsKQEAgLTIyOCw3ICsyMzYsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6c2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgICAgIG1f
ZnJvbnRlbmQtPnVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENvdW50KG1fZXhwaXJlZENvbnNv
bGVNZXNzYWdlQ291bnQpOwogICAgIHVuc2lnbmVkIG1lc3NhZ2VDb3VudCA9IG1fY29uc29sZU1l
c3NhZ2VzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWVzc2FnZUNvdW50
OyArK2kpCi0gICAgICAgIG1fY29uc29sZU1lc3NhZ2VzW2ldLT5hZGRUb0Zyb250ZW5kKG1fZnJv
bnRlbmQsIG1faW5qZWN0ZWRTY3JpcHRIb3N0KTsKKyAgICAgICAgbV9jb25zb2xlTWVzc2FnZXNb
aV0tPmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZCwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpOwog
fQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2UoUGFzc093
blB0cjxDb25zb2xlTWVzc2FnZT4gY29uc29sZU1lc3NhZ2UpCkBAIC0yNDQsNyArMjUyLDcgQEAg
dm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKFBhc3NPd25QdHI8
Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGUKICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UgPSBjb25z
b2xlTWVzc2FnZS5nZXQoKTsKICAgICAgICAgbV9jb25zb2xlTWVzc2FnZXMuYXBwZW5kKGNvbnNv
bGVNZXNzYWdlKTsKICAgICAgICAgaWYgKG1faW5zcGVjdG9yU3RhdGUtPmdldEJvb2xlYW4oQ29u
c29sZUFnZW50U3RhdGU6OmNvbnNvbGVNZXNzYWdlc0VuYWJsZWQpICYmIG1fZnJvbnRlbmQpCi0g
ICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kLCBt
X2luamVjdGVkU2NyaXB0SG9zdCk7CisgICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+YWRk
VG9Gcm9udGVuZChtX2Zyb250ZW5kLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcik7CiAgICAgfQog
CiAgICAgaWYgKCFtX2Zyb250ZW5kICYmIG1fY29uc29sZU1lc3NhZ2VzLnNpemUoKSA+PSBtYXhp
bXVtQ29uc29sZU1lc3NhZ2VzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggOGQzYTU3MC4uODc0OWQ5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtNDIsNyAr
NDIsNyBAQCBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRPTUFnZW50Owog
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKLWNsYXNzIElu
amVjdGVkU2NyaXB0SG9zdDsKK2NsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIElu
c3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKQEAgLTU1LDcgKzU1LDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiBj
bGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElu
c3BlY3RvckNvbnNvbGVBZ2VudCk7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yQ29uc29sZUFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JBZ2VudCosIEluc3BlY3RvclN0YXRlKiwg
SW5qZWN0ZWRTY3JpcHRIb3N0KiwgSW5zcGVjdG9yRE9NQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JD
b25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvckFnZW50KiwgSW5zcGVj
dG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JET01BZ2VudCopOwog
ICAgIH5JbnNwZWN0b3JDb25zb2xlQWdlbnQoKTsKIAogICAgIHZvaWQgc2V0Q29uc29sZU1lc3Nh
Z2VzRW5hYmxlZChFcnJvclN0cmluZyogZXJyb3IsIGJvb2wgZW5hYmxlZCwgYm9vbCogbmV3U3Rh
dGUpOwpAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTdGFydFByb2ZpbGlu
Z01lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogI2VuZGlmCiAgICAgdm9pZCBzZXRNb25pdG9y
aW5nWEhSRW5hYmxlZChFcnJvclN0cmluZyogZXJyb3IsIGJvb2wgZW5hYmxlZCk7CisgICAgdm9p
ZCBhZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQpOwogCiBwcml2YXRl
OgogICAgIHZvaWQgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChib29sKTsKQEAgLTg3LDcgKzg4
LDcgQEAgcHJpdmF0ZToKICAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdB
Z2VudHM7CiAgICAgSW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7CiAgICAgSW5zcGVj
dG9yU3RhdGUqIG1faW5zcGVjdG9yU3RhdGU7Ci0gICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBtX2lu
amVjdGVkU2NyaXB0SG9zdDsKKyAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2luc3BlY3RvckRPTUFnZW50
OwogICAgIEluc3BlY3RvckZyb250ZW5kOjpDb25zb2xlKiBtX2Zyb250ZW5kOwogICAgIENvbnNv
bGVNZXNzYWdlKiBtX3ByZXZpb3VzTWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA1N2FlNzdiLi4xYmZmZDRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQuaCIKQEAgLTUyLDcgKzUzLDggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdl
LCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKLSAgICA6IG1faW5zcGVjdG9yQWdl
bnQobmV3IEluc3BlY3RvckFnZW50KHBhZ2UsIGluc3BlY3RvckNsaWVudCkpCisgICAgOiBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZSgpKQorICAg
ICwgbV9pbnNwZWN0b3JBZ2VudChuZXcgSW5zcGVjdG9yQWdlbnQocGFnZSwgaW5zcGVjdG9yQ2xp
ZW50LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkpCiAgICAgLCBtX2luc3BlY3RvckNs
aWVudChpbnNwZWN0b3JDbGllbnQpCiAgICAgLCBtX29wZW5pbmdGcm9udGVuZChmYWxzZSkKIHsK
QEAgLTk5LDYgKzEwMSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKCkKIHsKICAgICBtX29wZW5pbmdGcm9udGVuZCA9IGZhbHNlOwogICAgIG1faW5zcGVjdG9y
RnJvbnRlbmQgPSBuZXcgSW5zcGVjdG9yRnJvbnRlbmQobV9pbnNwZWN0b3JDbGllbnQpOworICAg
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+c2V0RnJvbnRl
bmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CiAgICAgbV9pbnNwZWN0b3JBZ2VudC0+c2V0
RnJvbnRlbmQobV9pbnNwZWN0b3JGcm9udGVuZC5nZXQoKSk7CiAKICAgICBpZiAoIUluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpCkBAIC0xNDIsNiArMTQ1LDcgQEAgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoKQogICAgIG1faW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKIAogICAgIG1faW5zcGVjdG9yQWdlbnQtPmRp
c2Nvbm5lY3RGcm9udGVuZCgpOworICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3Rl
ZFNjcmlwdEhvc3QoKS0+Y2xlYXJGcm9udGVuZCgpOwogCiAgICAgbV9pbnNwZWN0b3JGcm9udGVu
ZC5jbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaAppbmRleCA3ZGIwMjRjLi45MzUzMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7CitjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNw
ZWN0b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5z
cGVjdG9yQ2xpZW50OwpAQCAtMTAyLDYgKzEwMyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIFBvc3RXb3JrZXJOb3RpZmljYXRpb25Ub0Zyb250ZW5kVGFzazsKIAorICAg
IE93blB0cjxJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwog
ICAgIE93blB0cjxJbnNwZWN0b3JBZ2VudD4gbV9pbnNwZWN0b3JBZ2VudDsKICAgICBPd25QdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7
CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZyb250ZW5k
Q2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHAKaW5kZXggODk5YTU5My4uMDVkMTAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01OSw3ICs1
OSw3IEBACiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNj
cmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5j
bHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgpAQCAtMjQ4LDEwICsyNDgsMTAgQEAgdm9pZCBS
ZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrOjpvblRpbWVyKFRpbWVyPFJldmFsaWRhdGVTdHls
ZUF0dHJpYnV0ZVRhc2s+KikKICAgICBtX2VsZW1lbnRzLmNsZWFyKCk7CiB9CiAKLUluc3BlY3Rv
ckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIEluamVjdGVkU2Ny
aXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0KQorSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3Rv
ckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGlu
Z0FnZW50cykKICAgICAsIG1faW5zcGVjdG9yU3RhdGUoaW5zcGVjdG9yU3RhdGUpCi0gICAgLCBt
X2luamVjdGVkU2NyaXB0SG9zdChpbmplY3RlZFNjcmlwdEhvc3QpCisgICAgLCBtX2luamVjdGVk
U2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2Zyb250ZW5kKDAp
CiAgICAgLCBtX2RvbUxpc3RlbmVyKDApCiAgICAgLCBtX2xhc3ROb2RlSWQoMSkKQEAgLTQxNCw3
ICs0MTQsNiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQogICAg
IG1faWRUb05vZGUuY2xlYXIoKTsKICAgICByZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwogICAgIG1f
Y2hpbGRyZW5SZXF1ZXN0ZWQuY2xlYXIoKTsKLSAgICBtX2luamVjdGVkU2NyaXB0SG9zdC0+Y2xl
YXJJbnNwZWN0ZWROb2RlcygpOwogfQogCiBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZv
cklkKGxvbmcgaWQpCkBAIC03MTksMTQgKzcxOCw2IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGxvbmcgbm9kZUlkLCBsb25n
CiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKEVy
cm9yU3RyaW5nKiwgbG9uZyBub2RlSWQpCi17Ci0gICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChu
b2RlSWQpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1faW5qZWN0ZWRT
Y3JpcHRIb3N0LT5hZGRJbnNwZWN0ZWROb2RlKG5vZGUpOwotfQotCiB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB3
aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBib29sIHJ1blN5bmNocm9ub3VzbHkpCiB7CiAgICAgLy8g
RklYTUU6IEZldyB0aGluZ3MgYXJlIG1pc3NpbmcgaGVyZToKQEAgLTgzNSw3ICs4MjYsNyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3IsIGxv
bmcgbm9kZUlkLCBjb25zdCBTdHJpbgogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9k
ZVRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2Jq
ZWN0SWQsIGxvbmcqIG5vZGVJZCkKIHsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVj
dElkLmdldCgpKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkLmdldCgp
KTsKICAgICBOb2RlKiBub2RlID0gaW5qZWN0ZWRTY3JpcHQubm9kZUZvck9iamVjdElkKG9iamVj
dElkKTsKICAgICBpZiAobm9kZSkKICAgICAgICAgKm5vZGVJZCA9IHB1c2hOb2RlUGF0aFRvRnJv
bnRlbmQobm9kZSk7CkBAIC0xMjMzLDcgKzEyMjQsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0
cgogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRG
b3IobWFpbldvcmxkU2NyaXB0U3RhdGUoZnJhbWUpKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvciht
YWluV29ybGRTY3JpcHRTdGF0ZShmcmFtZSkpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNO
b1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDk4ZTEwYjcuLjMyYTk1Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDggKzMwLDkgQEAKICNp
Zm5kZWYgSW5zcGVjdG9yRE9NQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JET01BZ2VudF9oCiAK
KyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCi0j
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtOTEsOSArOTIsOSBAQCBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKSA9IDA7
CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTUFnZW50PiBjcmVh
dGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3Rh
dGUqIGluc3BlY3RvclN0YXRlLCBJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9z
dCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JET01BZ2VudD4gY3JlYXRlKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNw
ZWN0b3JTdGF0ZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckRPTUFnZW50KGlu
c3RydW1lbnRpbmdBZ2VudHMsIGluc3BlY3RvclN0YXRlLCBpbmplY3RlZFNjcmlwdEhvc3QpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JET01BZ2VudChpbnN0cnVtZW50
aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSk7CiAgICAg
fQogCiAgICAgfkluc3BlY3RvckRPTUFnZW50KCk7CkBAIC0xMTcsNyArMTE4LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiwgbG9uZyBub2RlSWQsIGNvbnN0
IFN0cmluZyYgb3V0ZXJIVE1MLCBsb25nKiBuZXdJZCk7CiAgICAgdm9pZCBzZXROb2RlVmFsdWUo
RXJyb3JTdHJpbmcqLCBsb25nIG5vZGVJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCogc3Vj
Y2Vzcyk7CiAgICAgdm9pZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBs
b25nIG5vZGVJZCwgbG9uZyogb3V0Tm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBsaXN0
ZW5lcnNBcnJheSk7Ci0gICAgdm9pZCBhZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nKiwgbG9u
ZyBub2RlSWQpOwogICAgIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgYm9vbCBydW5TeW5jaHJvbm91c2x5KTsKICAg
ICB2b2lkIHNlYXJjaENhbmNlbGVkKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCByZXNvbHZlTm9k
ZShFcnJvclN0cmluZyosIGxvbmcgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgYm9vbCBpc1doaXRlc3BhY2UoTm9kZSopOwogCiBwcml2YXRlOgotICAg
IEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSos
IEluamVjdGVkU2NyaXB0SG9zdCopOworICAgIEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwogCiAg
ICAgLy8gTm9kZS1yZWxhdGVkIG1ldGhvZHMuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxO
b2RlPiwgbG9uZz4gTm9kZVRvSWRNYXA7CkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKIAog
ICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKICAgICBJbnNw
ZWN0b3JTdGF0ZSogbV9pbnNwZWN0b3JTdGF0ZTsKLSAgICBJbmplY3RlZFNjcmlwdEhvc3QqIG1f
aW5qZWN0ZWRTY3JpcHRIb3N0OworICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkRPTSogbV9mcm9udGVuZDsK
ICAgICBET01MaXN0ZW5lciogbV9kb21MaXN0ZW5lcjsKICAgICBOb2RlVG9JZE1hcCBtX2RvY3Vt
ZW50Tm9kZVRvSWRNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMGNkYzJiMC4uMzMwMzBmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAt
MzIsNyArMzIsNyBAQAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJM
RShJTlNQRUNUT1IpCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKLSNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCkBAIC00OSwxNiArNDksMTYgQEAgc3RhdGlj
IGNvbnN0IGNoYXIgZW5hYmxlV2hlblNob3duW10gPSAiZGVidWdnZXJFbmFibGVXaGVuU2hvd24i
Owogc3RhdGljIGNvbnN0IGNoYXIgamF2YVNjcmlwdEJyZWFrcG9pbnRzW10gPSAiamF2YVNjcmlw
dEJyZWFrb3BpbnRzIjsKIH07CiAKLVBhc3NPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4g
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgUGFnZSogaW5z
cGVjdGVkUGFnZSwgSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QpCitQYXNz
T3duUHRyPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNy
ZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JT
dGF0ZSogaW5zcGVjdG9yU3RhdGUsIFBhZ2UqIGluc3BlY3RlZFBhZ2UsIEluamVjdGVkU2NyaXB0
TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogewotICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgSW5zcGVjdG9yRGVidWdnZXJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JT
dGF0ZSwgaW5zcGVjdGVkUGFnZSwgaW5qZWN0ZWRTY3JpcHRIb3N0KSk7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGlu
c3BlY3RvclN0YXRlLCBpbnNwZWN0ZWRQYWdlLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIpKTsKIH0K
IAotSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVj
dG9yU3RhdGUsIFBhZ2UqIGluc3BlY3RlZFBhZ2UsIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0
ZWRTY3JpcHRIb3N0KQorSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JT
dGF0ZSogaW5zcGVjdG9yU3RhdGUsIFBhZ2UqIGluc3BlY3RlZFBhZ2UsIEluamVjdGVkU2NyaXB0
TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdl
bnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luc3BlY3RvclN0YXRlKGluc3BlY3Rv
clN0YXRlKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGluc3BlY3RlZFBhZ2UpCi0gICAgLCBtX2lu
amVjdGVkU2NyaXB0SG9zdChpbmplY3RlZFNjcmlwdEhvc3QpCisgICAgLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2Zyb250ZW5kKDApCiAg
ICAgLCBtX3BhdXNlZFNjcmlwdFN0YXRlKDApCiAgICAgLCBtX2phdmFTY3JpcHRQYXVzZVNjaGVk
dWxlZChmYWxzZSkKQEAgLTMyOSw3ICszMjksNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoRXJyb3JTdHJpbmcqLCBsb25nIHBhdXNlUwog
CiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JT
dHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRl
Q29tbWFuZExpbmVBUEksIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKIHsKLSAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmpl
Y3RlZFNjcmlwdEZvck9iamVjdElkKGNhbGxGcmFtZUlkLmdldCgpKTsKKyAgICBJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNj
cmlwdEZvck9iamVjdElkKGNhbGxGcmFtZUlkLmdldCgpKTsKICAgICBpZiAoIWluamVjdGVkU2Ny
aXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxG
cmFtZShjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgcmVzdWx0KTsKIH0KQEAgLTMzOCw3ICszMzgsNyBAQCBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcygpCiB7
CiAgICAgaWYgKCFtX3BhdXNlZFNjcmlwdFN0YXRlKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9y
VmFsdWU6Om51bGwoKTsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5q
ZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihtX3BhdXNlZFNjcmlwdFN0YXRlKTsK
KyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLT5pbmplY3RlZFNjcmlwdEZvcihtX3BhdXNlZFNjcmlwdFN0YXRlKTsKICAgICBpZiAoaW5q
ZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDM5NDAzNGEu
LmJlNmIwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaApAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKK2NsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsK
IGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3Mg
SW5zcGVjdG9yU3RhdGU7CkBAIC02Myw3ICs2Myw3IEBAIGVudW0gRGVidWdnZXJFdmVudFR5cGUg
ewogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3Rl
bmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNw
ZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdEhvc3QqKTsKKyAgICBzdGF0aWMgUGFz
c093blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50
cyosIEluc3BlY3RvclN0YXRlKiwgUGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwogICAg
IHZpcnR1YWwgfkluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKTsKIAogICAgIHZvaWQgc3RhcnRVc2Vy
SW5pdGlhdGVkRGVidWdnaW5nKCk7CkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0TGlzdGVuZXIoTGlzdGVuZXIqIGxpc3RlbmVyKSB7IG1fbGlzdGVuZXIgPSBsaXN0ZW5l
cjsgfQogCiBwcml2YXRlOgotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgUGFnZSosIEluamVjdGVkU2NyaXB0SG9zdCopOwor
ICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3Rv
clN0YXRlKiwgUGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwogCiAgICAgdm9pZCBlbmFi
bGUoYm9vbCByZXN0b3JpbmdGcm9tU3RhdGUpOwogCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0
ZToKICAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAg
SW5zcGVjdG9yU3RhdGUqIG1faW5zcGVjdG9yU3RhdGU7CiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQ
YWdlOwotICAgIEluamVjdGVkU2NyaXB0SG9zdCogbV9pbmplY3RlZFNjcmlwdEhvc3Q7CisgICAg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNw
ZWN0b3JGcm9udGVuZDo6RGVidWdnZXIqIG1fZnJvbnRlbmQ7CiAgICAgU2NyaXB0U3RhdGUqIG1f
cGF1c2VkU2NyaXB0U3RhdGU7CiAgICAgU2NyaXB0c01hcCBtX3NjcmlwdHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IGJh
ZGQ4ZTEuLjc1ZTIxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC0zMyw1NiArMzMsNjkgQEAKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdC5oIgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yUnVudGltZUFnZW50OjpJbnNwZWN0b3JSdW50aW1lQWdl
bnQoSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QpCi0gICAgOiBtX2luamVj
dGVkU2NyaXB0SG9zdChpbmplY3RlZFNjcmlwdEhvc3QpCitQYXNzT3duUHRyPEluc3BlY3RvclJ1
bnRpbWVBZ2VudD4gSW5zcGVjdG9yUnVudGltZUFnZW50OjpjcmVhdGUoSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIFBhZ2UqIGluc3BlY3RlZFBhZ2UpCiB7Cisg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JSdW50aW1lQWdlbnQoaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLCBpbnNwZWN0ZWRQYWdlKSk7CiB9CiAKLUluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
fkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpIHsgfQorSW5zcGVjdG9yUnVudGltZUFnZW50OjpJbnNw
ZWN0b3JSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1h
bmFnZXIsIFBhZ2UqIGluc3BlY3RlZFBhZ2UpCisgICAgOiBtX2luamVjdGVkU2NyaXB0TWFuYWdl
cihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgLCBtX2luc3BlY3RlZFBhZ2UoaW5zcGVjdGVk
UGFnZSkKK3sKK30KKworSW5zcGVjdG9yUnVudGltZUFnZW50Ojp+SW5zcGVjdG9yUnVudGltZUFn
ZW50KCkKK3sKK30KIAogdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdy
b3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiog
cmVzdWx0KQogewotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3Rl
ZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0Rm9yTWFpbkZyYW1lKCk7CisgICAgU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkU2NyaXB0U3RhdGUobV9pbnNwZWN0ZWRQYWdlLT5t
YWluRnJhbWUoKSk7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVj
dGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogICAgIGlm
ICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICBpbmplY3RlZFNjcmlwdC5l
dmFsdWF0ZShleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBy
ZXN1bHQpOwogfQogCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGVPbihFcnJv
clN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3RJZCwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCiB7Ci0gICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5q
ZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZC5nZXQoKSk7CisgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZChvYmplY3RJZC5nZXQoKSk7CiAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5o
YXNOb1ZhbHVlKCkpCiAgICAgICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRlT24ob2JqZWN0SWQs
IGV4cHJlc3Npb24sIHJlc3VsdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9i
amVjdElkLCBib29sIGlnbm9yZUhhc093blByb3BlcnR5LCBib29sIGFiYnJldmlhdGUsIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKIHsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3Rl
ZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElk
KG9iamVjdElkLmdldCgpKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElk
LmdldCgpKTsKICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAg
aW5qZWN0ZWRTY3JpcHQuZ2V0UHJvcGVydGllcyhvYmplY3RJZCwgaWdub3JlSGFzT3duUHJvcGVy
dHksIGFiYnJldmlhdGUsIHJlc3VsdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50
OjpzZXRQcm9wZXJ0eVZhbHVlKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IG9iamVjdElkLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpCiB7Ci0gICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRT
Y3JpcHRGb3JPYmplY3RJZChvYmplY3RJZC5nZXQoKSk7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JP
YmplY3RJZChvYmplY3RJZC5nZXQoKSk7CiAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1Zh
bHVlKCkpCiAgICAgICAgIGluamVjdGVkU2NyaXB0LnNldFByb3BlcnR5VmFsdWUob2JqZWN0SWQs
IHByb3BlcnR5TmFtZSwgZXhwcmVzc2lvbiwgcmVzdWx0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OnJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gb2JqZWN0SWQpCiB7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHQgPSBtX2luamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmpl
Y3RJZC5nZXQoKSk7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVj
dGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZC5nZXQo
KSk7CiAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIGluamVj
dGVkU2NyaXB0LnJlbGVhc2VPYmplY3Qob2JqZWN0SWQpOwogfQogCiB2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nKiwgbG9uZyBpbmplY3Rl
ZFNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogewotICAgIG1faW5qZWN0ZWRT
Y3JpcHRIb3N0LT5yZWxlYXNlT2JqZWN0R3JvdXAoaW5qZWN0ZWRTY3JpcHRJZCwgb2JqZWN0R3Jv
dXApOworICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5yZWxlYXNlT2JqZWN0R3JvdXAoaW5q
ZWN0ZWRTY3JpcHRJZCwgb2JqZWN0R3JvdXApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgK
aW5kZXggNDI3NGVlYS4uMzA2NjUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtMzMsMjkgKzMzLDIyIEBACiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5qZWN0
ZWRTY3JpcHRIb3N0OworY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7CitjbGFzcyBQYWdlOwogCiB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgSW5zcGVjdG9yUnVudGltZUFnZW50IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JSdW50aW1lQWdlbnQpOwogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclJ1bnRpbWVBZ2VudD4gY3JlYXRlKEluamVj
dGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0KQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JSdW50aW1lQWdlbnQoaW5qZWN0ZWRTY3JpcHRIb3N0KSk7
Ci0gICAgfQotCisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yUnVudGltZUFnZW50PiBj
cmVhdGUoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgUGFnZSopOwogICAgIH5JbnNwZWN0b3JSdW50
aW1lQWdlbnQoKTsKIAogICAgIC8vIFBhcnQgb2YgdGhlIHByb3RvY29sLgpAQCAtNjcsOSArNjAs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nKiwg
bG9uZyBpbmplY3RlZFNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsKIAogcHJp
dmF0ZToKLSAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRIb3N0Kik7Cisg
ICAgSW5zcGVjdG9yUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciosIFBhZ2UqKTsK
IAotICAgIEluamVjdGVkU2NyaXB0SG9zdCogbV9pbmplY3RlZFNjcmlwdEhvc3Q7CisgICAgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKKyAgICBQYWdlKiBt
X2luc3BlY3RlZFBhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKaW5kZXgg
YTYxMTVhMC4uNDU4NzBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FbGVtZW50c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwpAQCAtNjEsNyArNjEsNyBAQCBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICAgICAgdGhpcy5wYW5lbC51cGRhdGVFdmVu
dExpc3RlbmVycygpOwogCiAgICAgICAgIGlmICh0aGlzLl9mb2N1c2VkRE9NTm9kZSkgewotICAg
ICAgICAgICAgRE9NQWdlbnQuYWRkSW5zcGVjdGVkTm9kZSh0aGlzLl9mb2N1c2VkRE9NTm9kZS5p
ZCk7CisgICAgICAgICAgICBDb25zb2xlQWdlbnQuYWRkSW5zcGVjdGVkTm9kZSh0aGlzLl9mb2N1
c2VkRE9NTm9kZS5pZCk7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVy
Lm5vdGlmeU9iamVjdFNlbGVjdGVkKHRoaXMucGFuZWwubmFtZSk7CiAgICAgICAgIH0KICAgICB9
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>