<?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>233675</bug_id>
          
          <creation_ts>2021-11-30 18:49:51 -0800</creation_ts>
          <short_desc>Add csp-report resource type to WKContentRuleList</short_desc>
          <delta_ts>2021-12-01 13:31:17 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1819050</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-30 18:49:51 -0800</bug_when>
    <thetext>Add csp-report resource type to WKContentRuleList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819052</commentid>
    <comment_count>1</comment_count>
      <attachid>445501</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-30 18:56:59 -0800</bug_when>
    <thetext>Created attachment 445501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819053</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-30 18:57:03 -0800</bug_when>
    <thetext>&lt;rdar://problem/71869893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819075</commentid>
    <comment_count>3</comment_count>
      <attachid>445513</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-30 21:04:06 -0800</bug_when>
    <thetext>Created attachment 445513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819322</commentid>
    <comment_count>4</comment_count>
      <attachid>445591</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-01 11:07:36 -0800</bug_when>
    <thetext>Created attachment 445591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819388</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-01 13:31:17 -0800</bug_when>
    <thetext>http://trac.webkit.org/r286383</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445501</attachid>
            <date>2021-11-30 18:56:59 -0800</date>
            <delta_ts>2021-11-30 21:04:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233675-20211130185658.patch</filename>
            <type>text/plain</type>
            <size>69141</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGEzZGEzNmE5YTRhYjY1
MjE1NjQwODA5ZWFiZmNiMmQzNzRhZTA1YS4uNDYyZTczNDk0NDE1NWFlODYyM2E2ODgzMzQ4ZDNl
ODc4MTIyNWJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIxLTExLTMwICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGNz
cC1yZXBvcnQgcmVzb3VyY2UgdHlwZSB0byBXS0NvbnRlbnRSdWxlTGlzdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc1CisgICAgICAgIDxyZGFy
Oi8vNzE4Njk4OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBmZWF0dXJlIGlzIHRyaXZpYWwgdG8gaW1wbGVtZW50IGFuZCB0ZXN0IGV4Y2Vw
dCBmb3Igb25lIHNtYWxsIHRoaW5nOiB3ZSB1c2UgYSB1aW50MTZfdCB0byByZXByZXNlbnQgdGhl
CisgICAgICAgIHJlc291cmNlIHR5cGUgYW5kIGNvbnRleHQgYW5kIGZpcnN0IHBhcnR5IGZsYWdz
LCBhbmQgd2UgYWxyZWFkeSBoYXZlIDE2IG9mIHRoZW0uICBTbyB3ZSBuZWVkZWQgdG8gZ2V0IGFu
b3RoZXIKKyAgICAgICAgYml0IGZyb20gc29tZXdoZXJlLiAgV2hhdCBJIGRpZCB3YXMgbWFrZSB0
aGUgZmxhZ3MgaGF2ZSBhIHZhcmlhYmxlIGxlbmd0aCBmcm9tIDEtMyBieXRlcyBpbnN0ZWFkIG9m
IGp1c3QgMiBieXRlcy4KKyAgICAgICAgSSB1c2VkIHRoZSB1bnVzZWQgdXBwZXIgYml0cyBpbiB0
aGUgaW5zdHJ1Y3Rpb24gdG8gaW5kaWNhdGUgdGhlIGxlbmd0aCBvZiB0aGUgZmxhZ3MsIGFuZCBp
ZiB0aGUgdXBwZXIgYml0cyB3ZXJlIDAsCisgICAgICAgIHRoZW4gSSBhc3N1bWUgaXQgd2FzIDIg
Ynl0ZXMsIHdoaWNoIGlzIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggZXhpc3RpbmcgY29tcGlsZWQg
V0tDb250ZW50UnVsZUxpc3RzLCBzbyBubyBuZWVkCisgICAgICAgIHRvIGluY3JlbWVudCB0aGUg
dmVyc2lvbiBudW1iZXIgYW5kIGZvcmNlIGEgcmVjb21waWxlLiAgSXQgd29ya2VkIHNvIHdlbGwg
dGhhdCBJIGRpZCB0aGUgc2FtZSB0aGluZyB3aXRoIHRoZSBhY3Rpb25zLAorICAgICAgICB3aGlj
aCB3ZXJlIDQgYnl0ZXMgYnV0IGFyZSBub3cgMS00IGJ5dGVzLiAgVGhpcyByZWR1Y2VkIHRoZSBj
b21waWxlZCBiaW5hcnkgc2l6ZSBvZiBvbmUgb2YgdGhlIHRlc3RzIGZyb20gMzEzIGJ5dGVzCisg
ICAgICAgIHRvIDI4OCBieXRlcywgYSByZWR1Y3Rpb24gb2YgYWJvdXQgOCUgb2YgdGhlIGJpbmFy
eSBzaXplIG9mIHRoZSBjb21waWxlZCBXS0NvbnRlbnRSdWxlTGlzdHMuICBMYXJnZXIgbGlzdHMg
d2lsbCBzZWUKKyAgICAgICAgc2xpZ2h0bHkgbGVzcyBiaW5hcnkgc2l6ZSByZWR1Y3Rpb24sIGJ1
dCBzdGlsbCBhbiBpbXByb3ZlbWVudC4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkNvbnRlbnRFeHRlbnNpb246OkNvbnRlbnRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OnBvcHVsYXRlQ29uZGl0aW9uQ2Fj
aGVJZk5lZWRlZCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQgY29uc3QpOgorICAg
ICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6c21hbGxlc3RQb3NzaWJsZUp1bXBTaXplKToKKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6aW5zdHJ1
Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjphcHBlbmQyNEJpdEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OmFwcGVuZFplcm9lcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
c2V0Qml0cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Ynl0ZWNvZGVG
bGFnc1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmJ5dGVjb2Rl
QWN0aW9uU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6YXBwZW5k
VmFyaWFibGVMZW5ndGhJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0QXBwZW5kQWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0SnVtcCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21waWxl
cjo6ZW1pdENoZWNrVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkRGQUJ5dGVjb2RlQ29tcGlsZXI6OmVtaXRDaGVja1ZhbHVlUmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlQ29tcGlsZXI6OnRyYW5zaXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBp
bGVyOjpjb21waWxlSnVtcFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjpub2RlVHJhbnNpdGlvbnNNYXhCeXRlY29kZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlQ29tcGls
ZXI6OmNvbXBpbGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldEJp
dHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldDI0Qml0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2V0SW5zdHJ1Y3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Omp1bXBTaXplSW5CeXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29uc3VtZUludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbnN1bWUyNEJpdEludGVnZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Omhhc0ZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpoYXNBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OmNvbnN1bWVSZXNvdXJjZUZsYWdzQW5kSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbnN1bWVBY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldEp1bXBTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpnZXRKdW1wRGlzdGFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Om1hdGNoZXNDb25kaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVy
cHJldEFwcGVuZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUludGVy
cHJldGVyOjppbnRlcnBldEp1bXBUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6YWN0aW9uc01hdGNoaW5nRXZlcnl0aGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRl
cnByZXRlcjo6aW50ZXJwcmV0V2l0aENvbmRpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldCk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkRG
QUJ5dGVjb2RlSW50ZXJwcmV0ZXIpOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpyZWFkUmVzb3VyY2VUeXBlKToKKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VMb2FkSW5mby5oOgorCiAyMDIxLTExLTI5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGJhc2ljIGhldXJpc3RpYyBmb3Igc2l6aW5n
IHRleHQgaW4gaW1hZ2Ugb3ZlcmxheSBibG9ja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKaW5kZXggN2U0YzEyODc1NzRm
ZTBkOTc3NzFmODRiOTVhOTQ3ZDI2NzdjZDM1MS4uZGUyMjk0ZTY1OGRhYzc4ZTIzY2Y1MDE3NTFi
ODQzOGZhYWUxNmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgQ29udGVudEV4dGVu
c2lvbjo6Q29udGVudEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFJlZjxDb21w
aWxlZENvbnRlbnQKICAgICAsIG1fY29tcGlsZWRFeHRlbnNpb24oV1RGTW92ZShjb21waWxlZEV4
dGVuc2lvbikpCiAgICAgLCBtX2V4dGVuc2lvbkJhc2VVUkwoV1RGTW92ZShleHRlbnNpb25CYXNl
VVJMKSkKIHsKLSAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdpdGhvdXRDb25kaXRpb25zKG1f
Y29tcGlsZWRFeHRlbnNpb24tPmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCksIG1f
Y29tcGlsZWRFeHRlbnNpb24tPmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3Ro
KCkpOwotICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0aENvbmRpdGlvbnMobV9jb21waWxl
ZEV4dGVuc2lvbi0+ZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoKSwgbV9jb21waWxlZEV4
dGVuc2lvbi0+ZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgREZB
Qnl0ZWNvZGVJbnRlcnByZXRlciB3aXRob3V0Q29uZGl0aW9ucyh7IG1fY29tcGlsZWRFeHRlbnNp
b24tPmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCksIG1fY29tcGlsZWRFeHRlbnNp
b24tPmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CisgICAgREZB
Qnl0ZWNvZGVJbnRlcnByZXRlciB3aXRoQ29uZGl0aW9ucyh7IG1fY29tcGlsZWRFeHRlbnNpb24t
PmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKCksIG1fY29tcGlsZWRFeHRlbnNpb24tPmZp
bHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CiAgICAgZm9yICh1aW50NjRf
dCBhY3Rpb24gOiB3aXRob3V0Q29uZGl0aW9ucy5hY3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nKCkp
IHsKICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihhY3Rpb24pID09IGFjdGlv
bik7CiAgICAgICAgIG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zLmFwcGVuZChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oYWN0aW9uKSk7CkBAIC0xMjMsOCArMTIzLDggQEAgdm9pZCBD
b250ZW50RXh0ZW5zaW9uOjpjb21waWxlR2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KCkKIHZv
aWQgQ29udGVudEV4dGVuc2lvbjo6cG9wdWxhdGVDb25kaXRpb25DYWNoZUlmTmVlZGVkKGNvbnN0
IFVSTCYgdG9wVVJMKQogewogICAgIGlmIChtX2NhY2hlZFRvcFVSTCAhPSB0b3BVUkwpIHsKLSAg
ICAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcihtX2NvbXBpbGVkRXh0ZW5z
aW9uLT50b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSwgbV9jb21waWxlZEV4dGVuc2lvbi0+dG9wVVJM
RmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkpOwotICAgICAgICBjb25zdGV4cHIgdWludDE2X3QgYWxs
TG9hZFR5cGVzQW5kUmVzb3VyY2VUeXBlcyA9IExvYWRUeXBlTWFzayB8IFJlc291cmNlVHlwZU1h
c2sgfCBMb2FkQ29udGV4dE1hc2s7CisgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgaW50
ZXJwcmV0ZXIoeyBtX2NvbXBpbGVkRXh0ZW5zaW9uLT50b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSwg
bV9jb21waWxlZEV4dGVuc2lvbi0+dG9wVVJMRmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkgfSk7Cisg
ICAgICAgIGNvbnN0ZXhwciBSZXNvdXJjZUZsYWdzIGFsbExvYWRUeXBlc0FuZFJlc291cmNlVHlw
ZXMgPSBMb2FkVHlwZU1hc2sgfCBSZXNvdXJjZVR5cGVNYXNrIHwgTG9hZENvbnRleHRNYXNrOwog
ICAgICAgICBTdHJpbmcgc3RyaW5nID0gbV9jb21waWxlZEV4dGVuc2lvbi0+Y29uZGl0aW9uc0Fw
cGx5T25seVRvRG9tYWluKCkgPyB0b3BVUkwuaG9zdCgpLnRvU3RyaW5nKCkgOiB0b3BVUkwuc3Ry
aW5nKCk7CiAgICAgICAgIGF1dG8gdG9wVVJMQWN0aW9ucyA9IGludGVycHJldGVyLmludGVycHJl
dChzdHJpbmcudXRmOCgpLCBhbGxMb2FkVHlwZXNBbmRSZXNvdXJjZVR5cGVzKTsKICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAppbmRleCBjMDNhMjRiNTdiMDUzOTk0NWM0MjdjN2Y3
NjFkZWU0NjQwMTQxMjY4Li43MzFhNjhlNDI2MTkwZDMxZDdjNTFhZWQ0YTIwNzEzZDhiNTQ0MmIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKQEAgLTEyMSwxMSArMTIxLDExIEBAIGF1dG8g
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjphY3Rpb25zRm9yUmVzb3VyY2VMb2FkKGNvbnN0IFJl
c291cmNlTG9hZEluZm8mIHJlCiAKICAgICAgICAgY29uc3QgQ29tcGlsZWRDb250ZW50RXh0ZW5z
aW9uJiBjb21waWxlZEV4dGVuc2lvbiA9IGNvbnRlbnRFeHRlbnNpb24tPmNvbXBpbGVkRXh0ZW5z
aW9uKCk7CiAgICAgICAgIAotICAgICAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdpdGhvdXRD
b25kaXRpb25zSW50ZXJwcmV0ZXIoY29tcGlsZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zQnl0ZWNvZGUoKSwgY29tcGlsZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhvdXRDb25kaXRp
b25zQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0
aG91dENvbmRpdGlvbnNJbnRlcnByZXRlcih7IGNvbXBpbGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRo
b3V0Q29uZGl0aW9uc0J5dGVjb2RlKCksIGNvbXBpbGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRob3V0
Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CiAgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJw
cmV0ZXI6OkFjdGlvbnMgd2l0aG91dENvbmRpdGlvbnNBY3Rpb25zID0gd2l0aG91dENvbmRpdGlv
bnNJbnRlcnByZXRlci5pbnRlcnByZXQodXJsQ1N0cmluZywgZmxhZ3MpOwogICAgICAgICAKICAg
ICAgICAgVVJMIHRvcFVSTCA9IHJlc291cmNlTG9hZEluZm8ubWFpbkRvY3VtZW50VVJMOwotICAg
ICAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdpdGhDb25kaXRpb25zSW50ZXJwcmV0ZXIoY29t
cGlsZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoKSwgY29tcGlsZWRF
eHRlbnNpb24uZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgICAg
IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0aENvbmRpdGlvbnNJbnRlcnByZXRlcih7IGNvbXBp
bGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKCksIGNvbXBpbGVkRXh0
ZW5zaW9uLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CiAgICAgICAg
IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgd2l0aENvbmRpdGlvbnNBY3Rpb25zID0g
d2l0aENvbmRpdGlvbnNJbnRlcnByZXRlci5pbnRlcnByZXRXaXRoQ29uZGl0aW9ucyh1cmxDU3Ry
aW5nLCBmbGFncywgY29udGVudEV4dGVuc2lvbi0+dG9wVVJMQWN0aW9ucyh0b3BVUkwpKTsKICAg
ICAgICAgCiAgICAgICAgIGNvbnN0IFNlcmlhbGl6ZWRBY3Rpb25CeXRlKiBhY3Rpb25zID0gY29t
cGlsZWRFeHRlbnNpb24uYWN0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0RGQUJ5dGVjb2RlLmgKaW5kZXggOTA2MTAzNDkxNTQ5NzVkM2FlY2EyMDQzMDk3MjMz
MjM0MzY2YWRmYy4uM2MwZGZhOWE1NzE4ODc2ZTZmOTgyMjdhMWFlZjVjYTE0MTc0NWFkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZS5oCkBAIC0y
NywxMSArMjcsOSBAQAogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKIAotbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIAotbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKK25hbWVz
cGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucyB7CiAKLXR5cGVkZWYgdWludDhfdCBERkFC
eXRlY29kZTsKK3VzaW5nIERGQUJ5dGVjb2RlID0gdWludDhfdDsKIAogLy8gSW5jcmVtZW50IENv
bnRlbnRFeHRlbnNpb25TdG9yZTo6Q3VycmVudENvbnRlbnRFeHRlbnNpb25GaWxlVmVyc2lvbgog
Ly8gd2hlbiBtYWtpbmcgYW55IG5vbi1iYWNrd2FyZHMtY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRo
ZSBieXRlY29kZS4KQEAgLTYwLDEzICs1OCwxMyBAQCBlbnVtIGNsYXNzIERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb24gOiB1aW50OF90IHsKICAgICBDaGVja1ZhbHVlUmFuZ2VDYXNlU2Vuc2l0aXZlID0g
MHg1LAogCiAgICAgLy8gQXBwZW5kQWN0aW9uIGhhcyBvbmUgYXJndW1lbnQ6Ci0gICAgLy8gVGhl
IGFjdGlvbiB0byBhcHBlbmQgKDQgYnl0ZXMpLgorICAgIC8vIFRoZSBhY3Rpb24gdG8gYXBwZW5k
ICgxLTQgYnl0ZXMpLgogICAgIEFwcGVuZEFjdGlvbiA9IDB4NiwKICAgICBBcHBlbmRBY3Rpb25X
aXRoSWZDb25kaXRpb24gPSAweDcsCiAgICAgCiAgICAgLy8gVGVzdEZsYWdzQW5kQXBwZW5kQWN0
aW9uIGhhcyB0d28gYXJndW1lbnRzOgotICAgIC8vIFRoZSBmbGFncyB0byBjaGVjayBiZWZvcmUg
YXBwZW5kaW5nICgyIGJ5dGVzKS4KLSAgICAvLyBUaGUgYWN0aW9uIHRvIGFwcGVuZCAoNCBieXRl
cykuCisgICAgLy8gVGhlIGZsYWdzIHRvIGNoZWNrIGJlZm9yZSBhcHBlbmRpbmcgKDEtMyBieXRl
cykuCisgICAgLy8gVGhlIGFjdGlvbiB0byBhcHBlbmQgKDEtNCBieXRlcykuCiAgICAgVGVzdEZs
YWdzQW5kQXBwZW5kQWN0aW9uID0gMHg4LAogICAgIFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbldp
dGhJZkNvbmRpdGlvbiA9IDB4OSwKIApAQCAtNzksNTcgKzc3LDUxIEBAIGVudW0gY2xhc3MgREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbiA6IHVpbnQ4X3QgewogfTsKIAogLy8gVGhlIGxhc3QgZm91ciBi
aXRzIGNvbnRhaW4gdGhlIGluc3RydWN0aW9uIHR5cGUuCi1jb25zdCB1aW50OF90IERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb25NYXNrID0gMHgwRjsKLWNvbnN0IHVpbnQ4X3QgREZBQnl0ZWNvZGVKdW1w
U2l6ZU1hc2sgPSAweEYwOworc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb25NYXNrID0gMHgwRjsKK3N0YXRpYyBjb25zdGV4cHIgdWludDhfdCBERkFCeXRlY29k
ZUp1bXBTaXplTWFzayA9IDB4RjA7CitzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgREZBQnl0ZWNv
ZGVGbGFnc1NpemVNYXNrID0gMHgzMDsKK3N0YXRpYyBjb25zdGV4cHIgdWludDhfdCBERkFCeXRl
Y29kZUFjdGlvblNpemVNYXNrID0gMHhDMDsKIAogLy8gREZBIGJ5dGVjb2RlIHN0YXJ0cyB3aXRo
IGEgNCBieXRlIGhlYWRlciB3aGljaCBjb250YWlucyB0aGUgc2l6ZSBvZiB0aGlzIERGQS4KLXR5
cGVkZWYgdWludDMyX3QgREZBSGVhZGVyOwordXNpbmcgREZBSGVhZGVyID0gdWludDMyX3Q7CisK
Ky8vIERGQUJ5dGVjb2RlRmxhZ3NTaXplIGFuZCBERkFCeXRlY29kZUFjdGlvblNpemUgYXJlIHN0
b3JlZCBpbiB0aGUgdG9wIGZvdXIgYml0cyBvZiB0aGUgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbnMg
dGhhdCBoYXZlIGZsYWdzIGFuZCBhY3Rpb25zLgorZW51bSBjbGFzcyBERkFCeXRlY29kZUZsYWdz
U2l6ZSA6IHVpbnQ4X3QgeworICAgIFVJbnQ4ID0gMHgxMCwKKyAgICBVSW50MTYgPSAweDAwLCAv
LyBOZWVkcyB0byBiZSB6ZXJvIHRvIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggYnl0ZWNvZGUg
Y29tcGlsZWQgd2l0aCBmaXhlZC1zaXplIGZsYWdzLgorICAgIFVJbnQyNCA9IDB4MjAsCit9Owor
ZW51bSBjbGFzcyBERkFCeXRlY29kZUFjdGlvblNpemUgOiB1aW50OF90IHsKKyAgICBVSW50OCA9
IDB4NDAsCisgICAgVUludDE2ID0gMHg4MCwKKyAgICBVSW50MjQgPSAweEMwLAorICAgIFVJbnQz
MiA9IDB4MDAsIC8vIE5lZWRzIHRvIGJlIHplcm8gdG8gYmUgYmluYXJ5IGNvbXBhdGlibGUgd2l0
aCBieXRlY29kZSBjb21waWxlZCB3aXRoIGZpeGVkLXNpemUgYWN0aW9ucy4KK307CiAKIC8vIEEg
REZBQnl0ZWNvZGVKdW1wU2l6ZSBpcyBzdG9yZWQgaW4gdGhlIHRvcCBmb3VyIGJpdHMgb2YgdGhl
IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb25zIHRoYXQgaGF2ZSBhIGp1bXAuCi1lbnVtIERGQUJ5dGVj
b2RlSnVtcFNpemUgeworZW51bSBjbGFzcyBERkFCeXRlY29kZUp1bXBTaXplIDogdWludDhfdCB7
CiAgICAgSW50OCA9IDB4MTAsCiAgICAgSW50MTYgPSAweDIwLAogICAgIEludDI0ID0gMHgzMCwK
ICAgICBJbnQzMiA9IDB4NDAsCiB9OwotY29uc3QgaW50MzJfdCBJbnQyNE1heCA9ICgxIDw8IDIz
KSAtIDE7Ci1jb25zdCBpbnQzMl90IEludDI0TWluID0gLSgxIDw8IDIzKTsKK3N0YXRpYyBjb25z
dGV4cHIgaW50MzJfdCBVSW50MjRNYXggPSAoMSA8PCAyNCkgLSAxOworc3RhdGljIGNvbnN0ZXhw
ciBpbnQzMl90IEludDI0TWF4ID0gKDEgPDwgMjMpIC0gMTsKK3N0YXRpYyBjb25zdGV4cHIgaW50
MzJfdCBJbnQyNE1pbiA9IC0oMSA8PCAyMyk7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBJbnQy
NFNpemUgPSAzOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgVUludDI0U2l6ZSA9IDM7CiAKIHN0
YXRpYyBpbmxpbmUgREZBQnl0ZWNvZGVKdW1wU2l6ZSBzbWFsbGVzdFBvc3NpYmxlSnVtcFNpemUo
aW50MzJfdCBsb25nZXN0UG9zc2libGVKdW1wKQogewogICAgIGlmIChsb25nZXN0UG9zc2libGVK
dW1wIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50OF90Pjo6bWF4KCkgJiYgbG9uZ2VzdFBvc3Np
YmxlSnVtcCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDhfdD46Om1pbigpKQotICAgICAgICBy
ZXR1cm4gSW50ODsKKyAgICAgICAgcmV0dXJuIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDg7CiAg
ICAgaWYgKGxvbmdlc3RQb3NzaWJsZUp1bXAgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90
Pjo6bWF4KCkgJiYgbG9uZ2VzdFBvc3NpYmxlSnVtcCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDE2X3Q+OjptaW4oKSkKLSAgICAgICAgcmV0dXJuIEludDE2OworICAgICAgICByZXR1cm4gREZB
Qnl0ZWNvZGVKdW1wU2l6ZTo6SW50MTY7CiAgICAgaWYgKGxvbmdlc3RQb3NzaWJsZUp1bXAgPD0g
SW50MjRNYXggJiYgbG9uZ2VzdFBvc3NpYmxlSnVtcCA+PSBJbnQyNE1pbikKLSAgICAgICAgcmV0
dXJuIEludDI0OwotICAgIHJldHVybiBJbnQzMjsKKyAgICAgICAgcmV0dXJuIERGQUJ5dGVjb2Rl
SnVtcFNpemU6OkludDI0OworICAgIHJldHVybiBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQzMjsK
IH0KLSAgICAKLXN0YXRpYyBpbmxpbmUgc2l6ZV90IGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVu
dHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbikKLXsKLSAgICBzd2l0Y2ggKGlu
c3RydWN0aW9uKSB7Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVl
Q2FzZVNlbnNpdGl2ZToKLSAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkNoZWNrVmFs
dWVDYXNlSW5zZW5zaXRpdmU6Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpKdW1w
VGFibGVDYXNlSW5zZW5zaXRpdmU6Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpK
dW1wVGFibGVDYXNlU2Vuc2l0aXZlOgotICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6
Q2hlY2tWYWx1ZVJhbmdlQ2FzZVNlbnNpdGl2ZToKLSAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1
Y3Rpb246OkNoZWNrVmFsdWVSYW5nZUNhc2VJbnNlbnNpdGl2ZToKLSAgICBjYXNlIERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246Okp1bXA6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IC8vIFZhcmlhYmxlIGluc3RydWN0aW9uIHNpemUuCi0gICAgY2FzZSBERkFCeXRlY29kZUlu
c3RydWN0aW9uOjpBcHBlbmRBY3Rpb246Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9u
OjpBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb246Ci0gICAgICAgIHJldHVybiBzaXplb2YoREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbikgKyBzaXplb2YodWludDMyX3QpOwotICAgIGNhc2UgREZBQnl0
ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uOgotICAgIGNhc2UgREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0
aW9uOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pICsgc2l6
ZW9mKHVpbnQxNl90KSArIHNpemVvZih1aW50MzJfdCk7Ci0gICAgY2FzZSBERkFCeXRlY29kZUlu
c3RydWN0aW9uOjpUZXJtaW5hdGU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoREZBQnl0ZWNvZGVJ
bnN0cnVjdGlvbik7Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyAgICAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMK
IAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCmlu
ZGV4IGM3M2IxMWNhNzMwMzY0ZDBlOWU3OTQ5Njc2N2JmNGRiZGIxMmYyMjUuLjZhOGYzN2JiMTIx
MjZjYWRiMTRjNzRmNWZlOWQzYWEyMGU0MDM1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCkBAIC0zMiwx
OCArMzIsMjIgQEAKICNpbmNsdWRlICJERkEuaCIKICNpbmNsdWRlICJERkFOb2RlLmgiCiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLW5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7Citu
YW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSW50VHlwZT4KLWlubGluZSB2b2lkIGFwcGVuZChWZWN0b3I8REZBQnl0ZWNvZGU+JiBieXRl
Y29kZSwgSW50VHlwZSB2YWx1ZSkKK3ZvaWQgYXBwZW5kKFZlY3RvcjxERkFCeXRlY29kZT4mIGJ5
dGVjb2RlLCBJbnRUeXBlIHZhbHVlKQogewogICAgIGJ5dGVjb2RlLmdyb3coYnl0ZWNvZGUuc2l6
ZSgpICsgc2l6ZW9mKEludFR5cGUpKTsKICAgICBtZW1jcHkoJmJ5dGVjb2RlW2J5dGVjb2RlLnNp
emUoKSAtIHNpemVvZihJbnRUeXBlKV0sICZ2YWx1ZSwgc2l6ZW9mKEludFR5cGUpKTsKIH0KIAot
aW5saW5lIHZvaWQgYXBwZW5kWmVyb2VzKFZlY3RvcjxERkFCeXRlY29kZT4mIGJ5dGVjb2RlLCBE
RkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplKQorc3RhdGljIHZvaWQgYXBwZW5kMjRCaXRJbnRl
Z2VyKFZlY3RvcjxERkFCeXRlY29kZT4mIGJ5dGVjb2RlLCB1aW50MzJfdCB2YWx1ZSkKK3sKKyAg
ICBhcHBlbmQ8dWludDE2X3Q+KGJ5dGVjb2RlLCB2YWx1ZSk7CisgICAgYXBwZW5kPHVpbnQ4X3Q+
KGJ5dGVjb2RlLCB2YWx1ZSA+PiAxNik7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZFplcm9lcyhW
ZWN0b3I8REZBQnl0ZWNvZGU+JiBieXRlY29kZSwgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6
ZSkKIHsKICAgICBzd2l0Y2ggKGp1bXBTaXplKSB7CiAgICAgY2FzZSBERkFCeXRlY29kZUp1bXBT
aXplOjpJbnQ4OgpAQCAtNTMsOCArNTcsNyBAQCBpbmxpbmUgdm9pZCBhcHBlbmRaZXJvZXMoVmVj
dG9yPERGQUJ5dGVjb2RlPiYgYnl0ZWNvZGUsIERGQUJ5dGVjb2RlSnVtcFNpemUganVtcAogICAg
ICAgICBhcHBlbmQ8aW50MTZfdD4oYnl0ZWNvZGUsIDApOyAvLyBUaGlzIHZhbHVlIHdpbGwgYmUg
c2V0IHdoZW4gbGlua2luZy4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBERkFCeXRlY29kZUp1
bXBTaXplOjpJbnQyNDoKLSAgICAgICAgYXBwZW5kPHVpbnQxNl90PihieXRlY29kZSwgMCk7Ci0g
ICAgICAgIGFwcGVuZDxpbnQ4X3Q+KGJ5dGVjb2RlLCAwKTsgLy8gVGhlc2UgdmFsdWVzIHdpbGwg
YmUgc2V0IHdoZW4gbGlua2luZy4KKyAgICAgICAgYXBwZW5kMjRCaXRJbnRlZ2VyKGJ5dGVjb2Rl
LCAwKTsgLy8gVGhpcyB2YWx1ZSB3aWxsIGJlIHNldCB3aGVuIGxpbmtpbmcuCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MzI6CiAgICAgICAgIGFwcGVu
ZDxpbnQzMl90PihieXRlY29kZSwgMCk7IC8vIFRoaXMgdmFsdWUgd2lsbCBiZSBzZXQgd2hlbiBs
aW5raW5nLgpAQCAtNjMsNyArNjYsNyBAQCBpbmxpbmUgdm9pZCBhcHBlbmRaZXJvZXMoVmVjdG9y
PERGQUJ5dGVjb2RlPiYgYnl0ZWNvZGUsIERGQUJ5dGVjb2RlSnVtcFNpemUganVtcAogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KLWlubGluZSB2b2lkIHNldEJpdHMoVmVjdG9yPERG
QUJ5dGVjb2RlPiYgYnl0ZWNvZGUsIHVpbnQzMl90IGluZGV4LCBJbnRUeXBlIHZhbHVlKQordm9p
ZCBzZXRCaXRzKFZlY3RvcjxERkFCeXRlY29kZT4mIGJ5dGVjb2RlLCB1aW50MzJfdCBpbmRleCwg
SW50VHlwZSB2YWx1ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCArIHNpemVvZihJbnRU
eXBlKSA8PSBieXRlY29kZS5zaXplKCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoISpyZWlu
dGVycHJldF9jYXN0PEludFR5cGUqPigmYnl0ZWNvZGVbaW5kZXhdKSwgIlJpZ2h0IG5vdyB3ZSBz
aG91bGQgb25seSBiZSB1c2luZyBzZXRCaXRzIHRvIG92ZXJ3cml0ZSB2YWx1ZXMgdGhhdCB3ZXJl
IHplcm8gYXMgYSBwbGFjZWhvbGRlci4iKTsKQEAgLTc2LDI0ICs3OSw1OSBAQCBzdGF0aWMgdW5z
aWduZWQgYXBwZW5kQWN0aW9uQnl0ZWNvZGVTaXplKHVpbnQ2NF90IGFjdGlvbikKICAgICAgICAg
cmV0dXJuIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIHNpemVvZih1aW50MTZfdCkg
KyBzaXplb2YodWludDMyX3QpOwogICAgIHJldHVybiBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVj
dGlvbikgKyBzaXplb2YodWludDMyX3QpOwogfQotICAgIAorCitzdGF0aWMgREZBQnl0ZWNvZGVG
bGFnc1NpemUgYnl0ZWNvZGVGbGFnc1NpemUoUmVzb3VyY2VGbGFncyBmbGFncykKK3sKKyAgICBp
ZiAoZmxhZ3MgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpCisgICAgICAg
IHJldHVybiBERkFCeXRlY29kZUZsYWdzU2l6ZTo6VUludDg7CisgICAgaWYgKGZsYWdzIDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIERGQUJ5
dGVjb2RlRmxhZ3NTaXplOjpVSW50MTY7CisgICAgUkVMRUFTRV9BU1NFUlQoZmxhZ3MgPD0gVUlu
dDI0TWF4KTsKKyAgICByZXR1cm4gREZBQnl0ZWNvZGVGbGFnc1NpemU6OlVJbnQyNDsKK30KKwor
c3RhdGljIERGQUJ5dGVjb2RlQWN0aW9uU2l6ZSBieXRlY29kZUFjdGlvblNpemUodWludDMyX3Qg
YWN0aW9uV2l0aG91dEZsYWdzKQoreworICAgIGlmIChhY3Rpb25XaXRob3V0RmxhZ3MgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpCisgICAgICAgIHJldHVybiBERkFCeXRl
Y29kZUFjdGlvblNpemU6OlVJbnQ4OworICAgIGlmIChhY3Rpb25XaXRob3V0RmxhZ3MgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQorICAgICAgICByZXR1cm4gREZBQnl0
ZWNvZGVBY3Rpb25TaXplOjpVSW50MTY7CisgICAgaWYgKGFjdGlvbldpdGhvdXRGbGFncyA8PSBV
SW50MjRNYXgpCisgICAgICAgIHJldHVybiBERkFCeXRlY29kZUFjdGlvblNpemU6OlVJbnQyNDsK
KyAgICByZXR1cm4gREZBQnl0ZWNvZGVBY3Rpb25TaXplOjpVSW50MzI7Cit9CisKK3N0YXRpYyB2
b2lkIGFwcGVuZFZhcmlhYmxlTGVuZ3RoSW50ZWdlcihWZWN0b3I8REZBQnl0ZWNvZGU+JiBieXRl
Y29kZSwgdWludDMyX3QgaW50ZWdlcikKK3sKKyAgICBpZiAoaW50ZWdlciA8PSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIGFwcGVuZDx1aW50OF90
PihieXRlY29kZSwgaW50ZWdlcik7CisgICAgaWYgKGludGVnZXIgPD0gc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MTZfdD46Om1heCgpKQorICAgICAgICByZXR1cm4gYXBwZW5kPHVpbnQxNl90Pihi
eXRlY29kZSwgaW50ZWdlcik7CisgICAgaWYgKGludGVnZXIgPD0gVUludDI0TWF4KQorICAgICAg
ICByZXR1cm4gYXBwZW5kMjRCaXRJbnRlZ2VyKGJ5dGVjb2RlLCBpbnRlZ2VyKTsKKyAgICByZXR1
cm4gYXBwZW5kPHVpbnQzMl90PihieXRlY29kZSwgaW50ZWdlcik7Cit9CisKIHZvaWQgREZBQnl0
ZWNvZGVDb21waWxlcjo6ZW1pdEFwcGVuZEFjdGlvbih1aW50NjRfdCBhY3Rpb24pCiB7CisgICAg
dWludDMyX3QgYWN0aW9uV2l0aG91dEZsYWdzID0gYWN0aW9uOworICAgIGF1dG8gYWN0aW9uU2l6
ZSA9IGJ5dGVjb2RlQWN0aW9uU2l6ZShhY3Rpb25XaXRob3V0RmxhZ3MpOworICAgIAogICAgIC8v
IEhpZ2ggYml0cyBhcmUgdXNlZCB0byBzdG9yZSBmbGFncy4gU2VlIGNvbXBpbGVSdWxlTGlzdC4K
LSAgICBpZiAoYWN0aW9uICYgQWN0aW9uRmxhZ01hc2spIHsKLSAgICAgICAgaWYgKGFjdGlvbiAm
IElmQ29uZGl0aW9uRmxhZykKLSAgICAgICAgICAgIGFwcGVuZDxERkFCeXRlY29kZUluc3RydWN0
aW9uPihtX2J5dGVjb2RlLCBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBl
bmRBY3Rpb25XaXRoSWZDb25kaXRpb24pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBl
bmQ8REZBQnl0ZWNvZGVJbnN0cnVjdGlvbj4obV9ieXRlY29kZSwgREZBQnl0ZWNvZGVJbnN0cnVj
dGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKTsKLSAgICAgICAgYXBwZW5kPHVpbnQxNl90
PihtX2J5dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50MTZfdD4oYWN0aW9uID4+IDMyKSk7Ci0gICAg
ICAgIGFwcGVuZDx1aW50MzJfdD4obV9ieXRlY29kZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFj
dGlvbikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChhY3Rpb24gJiBJZkNvbmRpdGlvbkZs
YWcpCi0gICAgICAgICAgICBhcHBlbmQ8REZBQnl0ZWNvZGVJbnN0cnVjdGlvbj4obV9ieXRlY29k
ZSwgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kPERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24+
KG1fYnl0ZWNvZGUsIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbik7Ci0gICAg
ICAgIGFwcGVuZDx1aW50MzJfdD4obV9ieXRlY29kZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFj
dGlvbikpOworICAgIGlmIChSZXNvdXJjZUZsYWdzIGZsYWdzID0gKGFjdGlvbiAmIEFjdGlvbkZs
YWdNYXNrKSA+PiAzMikgeworICAgICAgICBhdXRvIGZsYWdzU2l6ZSA9IGJ5dGVjb2RlRmxhZ3NT
aXplKGZsYWdzKTsKKyAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IChhY3Rpb24gJiBJZkNvbmRp
dGlvbkZsYWcpID8gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0
aW9uV2l0aElmQ29uZGl0aW9uIDogREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5k
QXBwZW5kQWN0aW9uOworICAgICAgICBBU1NFUlQoIShzdGF0aWNfY2FzdDx1aW50OF90PihpbnN0
cnVjdGlvbikgJiBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFnc1NpemUpICYgc3RhdGljX2Nhc3Q8
dWludDhfdD4oYWN0aW9uU2l6ZSkpKTsKKyAgICAgICAgYXBwZW5kPHVpbnQ4X3Q+KG1fYnl0ZWNv
ZGUsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGluc3RydWN0aW9uKSB8IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGZsYWdzU2l6ZSkgfCBzdGF0aWNfY2FzdDx1aW50OF90PihhY3Rpb25TaXplKSk7CisgICAg
ICAgIGFwcGVuZFZhcmlhYmxlTGVuZ3RoSW50ZWdlcihtX2J5dGVjb2RlLCBmbGFncyk7CisgICAg
ICAgIGFwcGVuZFZhcmlhYmxlTGVuZ3RoSW50ZWdlcihtX2J5dGVjb2RlLCBhY3Rpb25XaXRob3V0
RmxhZ3MpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgYXV0byBpbnN0cnVjdGlvbiA9
IChhY3Rpb24gJiBJZkNvbmRpdGlvbkZsYWcpID8gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBw
ZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uIDogREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5k
QWN0aW9uOworICAgIEFTU0VSVCghKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGluc3RydWN0aW9uKSAm
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGFjdGlvblNpemUpKSk7CisgICAgYXBwZW5kPHVpbnQ4X3Q+
KG1fYnl0ZWNvZGUsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGluc3RydWN0aW9uKSB8IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KGFjdGlvblNpemUpKTsKKyAgICBhcHBlbmRWYXJpYWJsZUxlbmd0aEludGVn
ZXIobV9ieXRlY29kZSwgYWN0aW9uV2l0aG91dEZsYWdzKTsKIH0KIAogaW50MzJfdCBERkFCeXRl
Y29kZUNvbXBpbGVyOjpsb25nZXN0UG9zc2libGVKdW1wKHVpbnQzMl90IGluc3RydWN0aW9uTG9j
YXRpb24sIHVpbnQzMl90IHNvdXJjZU5vZGVJbmRleCwgdWludDMyX3QgZGVzdGluYXRpb25Ob2Rl
SW5kZXgpCkBAIC0xMTksNyArMTU3LDcgQEAgdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0
SnVtcCh1aW50MzJfdCBzb3VyY2VOb2RlSW5kZXgsIHVpbnQzMl90IGRlc3RpbmF0aW8KICAgICB1
aW50MzJfdCBqdW1wTG9jYXRpb24gPSBpbnN0cnVjdGlvbkxvY2F0aW9uICsgc2l6ZW9mKHVpbnQ4
X3QpOwogICAgIGludDMyX3QgbG9uZ2VzdFBvc3NpYmxlSnVtcERpc3RhbmNlID0gbG9uZ2VzdFBv
c3NpYmxlSnVtcChpbnN0cnVjdGlvbkxvY2F0aW9uLCBzb3VyY2VOb2RlSW5kZXgsIGRlc3RpbmF0
aW9uTm9kZUluZGV4KTsKICAgICBERkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplID0gc21hbGxl
c3RQb3NzaWJsZUp1bXBTaXplKGxvbmdlc3RQb3NzaWJsZUp1bXBEaXN0YW5jZSk7Ci0gICAgYXBw
ZW5kPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb246Okp1bXApIHwganVtcFNpemUpOworICAgIGFwcGVuZDx1aW50OF90PihtX2J5
dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50OF90PihERkFCeXRlY29kZUluc3RydWN0aW9uOjpKdW1w
KSB8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGp1bXBTaXplKSk7CiAKICAgICBtX2xpbmtSZWNvcmRz
LmFwcGVuZChMaW5rUmVjb3JkKHtqdW1wU2l6ZSwgbG9uZ2VzdFBvc3NpYmxlSnVtcERpc3RhbmNl
LCBpbnN0cnVjdGlvbkxvY2F0aW9uLCBqdW1wTG9jYXRpb24sIGRlc3RpbmF0aW9uTm9kZUluZGV4
fSkpOwogICAgIGFwcGVuZFplcm9lcyhtX2J5dGVjb2RlLCBqdW1wU2l6ZSk7CkBAIC0xMzIsNyAr
MTcwLDcgQEAgdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0Q2hlY2tWYWx1ZSh1aW50OF90
IHZhbHVlLCB1aW50MzJfdCBzb3VyY2VOb2RlSW5kZXgKICAgICBpbnQzMl90IGxvbmdlc3RQb3Nz
aWJsZUp1bXBEaXN0YW5jZSA9IGxvbmdlc3RQb3NzaWJsZUp1bXAoaW5zdHJ1Y3Rpb25Mb2NhdGlv
biwgc291cmNlTm9kZUluZGV4LCBkZXN0aW5hdGlvbk5vZGVJbmRleCk7CiAgICAgREZBQnl0ZWNv
ZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IHNtYWxsZXN0UG9zc2libGVKdW1wU2l6ZShsb25nZXN0UG9z
c2libGVKdW1wRGlzdGFuY2UpOwogICAgIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rp
b24gPSBjYXNlU2Vuc2l0aXZlID8gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZUNh
c2VTZW5zaXRpdmUgOiBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlQ2FzZUluc2Vu
c2l0aXZlOwotICAgIGFwcGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50
OF90PihpbnN0cnVjdGlvbikgfCBqdW1wU2l6ZSk7CisgICAgYXBwZW5kPHVpbnQ4X3Q+KG1fYnl0
ZWNvZGUsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGluc3RydWN0aW9uKSB8IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KGp1bXBTaXplKSk7CiAgICAgYXBwZW5kPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHZhbHVl
KTsKICAgICBtX2xpbmtSZWNvcmRzLmFwcGVuZChMaW5rUmVjb3JkKHtqdW1wU2l6ZSwgbG9uZ2Vz
dFBvc3NpYmxlSnVtcERpc3RhbmNlLCBpbnN0cnVjdGlvbkxvY2F0aW9uLCBqdW1wTG9jYXRpb24s
IGRlc3RpbmF0aW9uTm9kZUluZGV4fSkpOwogICAgIGFwcGVuZFplcm9lcyhtX2J5dGVjb2RlLCBq
dW1wU2l6ZSk7CkBAIC0xNDcsNyArMTg1LDcgQEAgdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjpl
bWl0Q2hlY2tWYWx1ZVJhbmdlKHVpbnQ4X3QgbG93VmFsdWUsIHVpbnQ4X3QgaGlnaFZhbHUKICAg
ICBpbnQzMl90IGxvbmdlc3RQb3NzaWJsZUp1bXBEaXN0YW5jZSA9IGxvbmdlc3RQb3NzaWJsZUp1
bXAoaW5zdHJ1Y3Rpb25Mb2NhdGlvbiwgc291cmNlTm9kZUluZGV4LCBkZXN0aW5hdGlvbk5vZGVJ
bmRleCk7CiAgICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IHNtYWxsZXN0UG9zc2li
bGVKdW1wU2l6ZShsb25nZXN0UG9zc2libGVKdW1wRGlzdGFuY2UpOwogICAgIERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb24gPSBjYXNlU2Vuc2l0aXZlID8gREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbjo6Q2hlY2tWYWx1ZVJhbmdlQ2FzZVNlbnNpdGl2ZSA6IERGQUJ5dGVjb2RlSW5zdHJ1
Y3Rpb246OkNoZWNrVmFsdWVSYW5nZUNhc2VJbnNlbnNpdGl2ZTsKLSAgICBhcHBlbmQ8dWludDhf
dD4obV9ieXRlY29kZSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oaW5zdHJ1Y3Rpb24pIHwganVtcFNp
emUpOworICAgIGFwcGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50OF90
PihpbnN0cnVjdGlvbikgfCBzdGF0aWNfY2FzdDx1aW50OF90PihqdW1wU2l6ZSkpOwogICAgIGFw
cGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBsb3dWYWx1ZSk7CiAgICAgYXBwZW5kPHVpbnQ4X3Q+
KG1fYnl0ZWNvZGUsIGhpZ2hWYWx1ZSk7CiAgICAgbV9saW5rUmVjb3Jkcy5hcHBlbmQoTGlua1Jl
Y29yZCh7anVtcFNpemUsIGxvbmdlc3RQb3NzaWJsZUp1bXBEaXN0YW5jZSwgaW5zdHJ1Y3Rpb25M
b2NhdGlvbiwganVtcExvY2F0aW9uLCBkZXN0aW5hdGlvbk5vZGVJbmRleH0pKTsKQEAgLTIyNiw3
ICsyNjQsNyBAQCBERkFCeXRlY29kZUNvbXBpbGVyOjpKdW1wVGFibGUgREZBQnl0ZWNvZGVDb21w
aWxlcjo6ZXh0cmFjdEp1bXBUYWJsZShWZWN0b3I8REZBQgogICAgIHJldHVybiBqdW1wVGFibGU7
CiB9CiAKLURGQUJ5dGVjb2RlQ29tcGlsZXI6OlRyYW5zaXRpb25zIERGQUJ5dGVjb2RlQ29tcGls
ZXI6OnRyYW5zaXRpb25zKGNvbnN0IERGQU5vZGUmIG5vZGUpCithdXRvIERGQUJ5dGVjb2RlQ29t
cGlsZXI6OnRyYW5zaXRpb25zKGNvbnN0IERGQU5vZGUmIG5vZGUpIC0+IFRyYW5zaXRpb25zCiB7
CiAgICAgVHJhbnNpdGlvbnMgdHJhbnNpdGlvbnM7CiAKQEAgLTM1MCw3ICszODgsNyBAQCB2b2lk
IERGQUJ5dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVKdW1wVGFibGUodWludDMyX3Qgbm9kZUluZGV4
LCBjb25zdCBKdW1wVGFibGUmCiAgICAgQVNTRVJUKGp1bXBUYWJsZS5taW4gPD0ganVtcFRhYmxl
Lm1heCk7CiAKICAgICB1aW50MzJfdCBpbnN0cnVjdGlvbkxvY2F0aW9uID0gbV9ieXRlY29kZS5z
aXplKCk7Ci0gICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IEludDg7CisgICAgYXV0
byBqdW1wU2l6ZSA9IERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDg7CiAgICAgZm9yICh1aW50MzJf
dCBkZXN0aW5hdGlvbk5vZGVJbmRleCA6IGp1bXBUYWJsZS5kZXN0aW5hdGlvbnMpIHsKICAgICAg
ICAgaW50MzJfdCBsb25nZXN0UG9zc2libGVKdW1wRGlzdGFuY2UgPSBsb25nZXN0UG9zc2libGVK
dW1wKGluc3RydWN0aW9uTG9jYXRpb24sIG5vZGVJbmRleCwgZGVzdGluYXRpb25Ob2RlSW5kZXgp
OwogICAgICAgICBERkFCeXRlY29kZUp1bXBTaXplIGxvY2FsSnVtcFNpemUgPSBzbWFsbGVzdFBv
c3NpYmxlSnVtcFNpemUobG9uZ2VzdFBvc3NpYmxlSnVtcERpc3RhbmNlKTsKQEAgLTM1OCw3ICsz
OTYsNyBAQCB2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVKdW1wVGFibGUodWludDMy
X3Qgbm9kZUluZGV4LCBjb25zdCBKdW1wVGFibGUmCiAgICAgfQogCiAgICAgREZBQnl0ZWNvZGVJ
bnN0cnVjdGlvbiBpbnN0cnVjdGlvbiA9IGp1bXBUYWJsZS5jYXNlU2Vuc2l0aXZlID8gREZBQnl0
ZWNvZGVJbnN0cnVjdGlvbjo6SnVtcFRhYmxlQ2FzZVNlbnNpdGl2ZSA6IERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb246Okp1bXBUYWJsZUNhc2VJbnNlbnNpdGl2ZTsKLSAgICBhcHBlbmQ8dWludDhfdD4o
bV9ieXRlY29kZSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oaW5zdHJ1Y3Rpb24pIHwganVtcFNpemUp
OworICAgIGFwcGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50OF90Pihp
bnN0cnVjdGlvbikgfCBzdGF0aWNfY2FzdDx1aW50OF90PihqdW1wU2l6ZSkpOwogICAgIGFwcGVu
ZDx1aW50OF90PihtX2J5dGVjb2RlLCBqdW1wVGFibGUubWluKTsKICAgICBhcHBlbmQ8dWludDhf
dD4obV9ieXRlY29kZSwganVtcFRhYmxlLm1heCk7CiAKQEAgLTM5Nyw3ICs0MzUsNyBAQCB1bnNp
Z25lZCBERkFCeXRlY29kZUNvbXBpbGVyOjpub2RlVHJhbnNpdGlvbnNNYXhCeXRlY29kZVNpemUo
Y29uc3QgREZBTm9kZSYgbm9kZQogICAgIGlmIChub2RlVHJhbnNpdGlvbnMudXNlRmFsbGJhY2tU
cmFuc2l0aW9uKQogICAgICAgICBzaXplICs9IHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9u
OjpKdW1wKSArIHNpemVvZih1aW50MzJfdCk7CiAgICAgZWxzZQotICAgICAgICBzaXplICs9IGlu
c3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVybWlu
YXRlKTsKKyAgICAgICAgc2l6ZSArPSBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVy
bWluYXRlKTsKICAgICByZXR1cm4gc2l6ZTsKIH0KIApAQCAtNDY2LDIwICs1MDQsMjAgQEAgdm9p
ZCBERkFCeXRlY29kZUNvbXBpbGVyOjpjb21waWxlKCkKICAgICAgICAgQVNTRVJUKGFicyhkaXN0
YW5jZSkgPD0gYWJzKGxpbmtSZWNvcmQubG9uZ2VzdFBvc3NpYmxlSnVtcCkpOwogICAgICAgICAK
ICAgICAgICAgc3dpdGNoIChsaW5rUmVjb3JkLmp1bXBTaXplKSB7Ci0gICAgICAgIGNhc2UgSW50
ODoKKyAgICAgICAgY2FzZSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQ4OgogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZGlzdGFuY2UgPT0gc3RhdGljX2Nhc3Q8aW50OF90PihkaXN0YW5jZSkp
OwogICAgICAgICAgICAgc2V0Qml0czxpbnQ4X3Q+KG1fYnl0ZWNvZGUsIGxpbmtSZWNvcmQuanVt
cExvY2F0aW9uLCBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGRpc3RhbmNlKSk7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBJbnQxNjoKKyAgICAgICAgY2FzZSBERkFCeXRlY29kZUp1bXBT
aXplOjpJbnQxNjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpc3RhbmNlID09IHN0YXRp
Y19jYXN0PGludDE2X3Q+KGRpc3RhbmNlKSk7CiAgICAgICAgICAgICBzZXRCaXRzPGludDE2X3Q+
KG1fYnl0ZWNvZGUsIGxpbmtSZWNvcmQuanVtcExvY2F0aW9uLCBzdGF0aWNfY2FzdDxpbnQxNl90
PihkaXN0YW5jZSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50MjQ6Cisg
ICAgICAgIGNhc2UgREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MjQ6CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChkaXN0YW5jZSA+PSBJbnQyNE1pbiAmJiBkaXN0YW5jZSA8PSBJbnQyNE1heCk7
CiAgICAgICAgICAgICBzZXRCaXRzPHVpbnQxNl90PihtX2J5dGVjb2RlLCBsaW5rUmVjb3JkLmp1
bXBMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGRpc3RhbmNlKSk7CiAgICAgICAgICAg
ICBzZXRCaXRzPGludDhfdD4obV9ieXRlY29kZSwgbGlua1JlY29yZC5qdW1wTG9jYXRpb24gKyBz
aXplb2YoaW50MTZfdCksIHN0YXRpY19jYXN0PGludDhfdD4oZGlzdGFuY2UgPj4gMTYpKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDMyOgorICAgICAgICBjYXNlIERGQUJ5
dGVjb2RlSnVtcFNpemU6OkludDMyOgogICAgICAgICAgICAgc2V0Qml0czxpbnQzMl90PihtX2J5
dGVjb2RlLCBsaW5rUmVjb3JkLmp1bXBMb2NhdGlvbiwgZGlzdGFuY2UpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTQ4Nyw5ICs1MjUsNyBAQCB2b2lkIERGQUJ5dGVjb2RlQ29t
cGlsZXI6OmNvbXBpbGUoKQogICAgIAogICAgIHNldEJpdHM8REZBSGVhZGVyPihtX2J5dGVjb2Rl
LCBzdGFydExvY2F0aW9uLCBtX2J5dGVjb2RlLnNpemUoKSAtIHN0YXJ0TG9jYXRpb24pOwogfQot
ICAgIAotfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMKIAogI2Vu
ZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCmlu
ZGV4IGJkYzEzOWZjOWFiMzI2M2E3YTVmNmE1ZmNlZDdiYWZlNWM5YjlhOTQuLjQ2MjhhZWFkM2Nl
NzRkZGY0YmJlNWJiNDNlY2U5ZGU1MjczNzc2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDYyICszMSwxNTUgQEAKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICAKLW5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CituYW1l
c3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SW50VHlwZT4KLXN0YXRpYyBpbmxpbmUgSW50VHlwZSBnZXRCaXRzKGNvbnN0IERGQUJ5dGVjb2Rl
KiBieXRlY29kZSwgdWludDMyX3QgYnl0ZWNvZGVMZW5ndGgsIHVpbnQzMl90IGluZGV4KQorc3Rh
dGljIEludFR5cGUgZ2V0Qml0cyhTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1aW50MzJf
dCBpbmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggKyBzaXplb2YoSW50VHlwZSkgPD0gYnl0ZWNv
ZGUuc2l6ZSgpKTsKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW50VHlwZSo+
KGJ5dGVjb2RlLmRhdGEoKSArIGluZGV4KTsKK30KKworc3RhdGljIHVpbnQzMl90IGdldDI0Qml0
cyhTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1aW50MzJfdCBpbmRleCkKIHsKLSAgICBB
U1NFUlRfVU5VU0VEKGJ5dGVjb2RlTGVuZ3RoLCBpbmRleCArIHNpemVvZihJbnRUeXBlKSA8PSBi
eXRlY29kZUxlbmd0aCk7Ci0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEludFR5
cGUqPigmYnl0ZWNvZGVbaW5kZXhdKTsKKyAgICBBU1NFUlQoaW5kZXggKyBVSW50MjRTaXplIDw9
IGJ5dGVjb2RlLnNpemUoKSk7CisgICAgdWludDMyX3QgaGlnaEJpdHMgPSBnZXRCaXRzPHVpbnQ4
X3Q+KGJ5dGVjb2RlLCBpbmRleCArIHNpemVvZih1aW50MTZfdCkpOworICAgIHVpbnQzMl90IGxv
d0JpdHMgPSBnZXRCaXRzPHVpbnQxNl90PihieXRlY29kZSwgaW5kZXgpOworICAgIHJldHVybiAo
aGlnaEJpdHMgPDwgMTYpIHwgbG93Qml0czsKIH0KIAotc3RhdGljIGlubGluZSBERkFCeXRlY29k
ZUluc3RydWN0aW9uIGdldEluc3RydWN0aW9uKGNvbnN0IERGQUJ5dGVjb2RlKiBieXRlY29kZSwg
dWludDMyX3QgYnl0ZWNvZGVMZW5ndGgsIHVpbnQzMl90IGluZGV4KQorc3RhdGljIERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb24gZ2V0SW5zdHJ1Y3Rpb24oU3Bhbjxjb25zdCB1aW50OF90PiBieXRlY29k
ZSwgdWludDMyX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb24+KGdldEJpdHM8dWludDhfdD4oYnl0ZWNvZGUsIGJ5dGVjb2RlTGVuZ3RoLCBp
bmRleCkgJiBERkFCeXRlY29kZUluc3RydWN0aW9uTWFzayk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24+KGdldEJpdHM8dWludDhfdD4oYnl0ZWNvZGUsIGlu
ZGV4KSAmIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb25NYXNrKTsKIH0KIAotc3RhdGljIGlubGluZSBz
aXplX3QganVtcFNpemVJbkJ5dGVzKERGQUJ5dGVjb2RlSnVtcFNpemUganVtcFNpemUpCitzdGF0
aWMgc2l6ZV90IGp1bXBTaXplSW5CeXRlcyhERkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplKQog
ewogICAgIHN3aXRjaCAoanVtcFNpemUpIHsKLSAgICBjYXNlIEludDg6CisgICAgY2FzZSBERkFC
eXRlY29kZUp1bXBTaXplOjpJbnQ4OgogICAgICAgICByZXR1cm4gc2l6ZW9mKGludDhfdCk7Ci0g
ICAgY2FzZSBJbnQxNjoKKyAgICBjYXNlIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDE2OgogICAg
ICAgICByZXR1cm4gc2l6ZW9mKGludDE2X3QpOwotICAgIGNhc2UgSW50MjQ6Ci0gICAgICAgIHJl
dHVybiBzaXplb2YodWludDE2X3QpICsgc2l6ZW9mKGludDhfdCk7Ci0gICAgY2FzZSBJbnQzMjoK
KyAgICBjYXNlIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDI0OgorICAgICAgICByZXR1cm4gSW50
MjRTaXplOworICAgIGNhc2UgREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MzI6CiAgICAgICAgIHJl
dHVybiBzaXplb2YoaW50MzJfdCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdWludDMyX3QgY29uc3VtZUludGVnZXIoU3Bh
bjxjb25zdCB1aW50OF90PiBieXRlY29kZSwgdWludDMyX3QmIHByb2dyYW1Db3VudGVyKQorewor
ICAgIHByb2dyYW1Db3VudGVyICs9IHNpemVvZihUKTsKKyAgICByZXR1cm4gZ2V0Qml0czxUPihi
eXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgLSBzaXplb2YoVCkpOworfQorc3RhdGljIHVpbnQzMl90
IGNvbnN1bWUyNEJpdEludGVnZXIoU3Bhbjxjb25zdCB1aW50OF90PiBieXRlY29kZSwgdWludDMy
X3QmIHByb2dyYW1Db3VudGVyKQoreworICAgIHByb2dyYW1Db3VudGVyICs9IFVJbnQyNFNpemU7
CisgICAgcmV0dXJuIGdldDI0Qml0cyhieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgLSBVSW50MjRT
aXplKTsKK30KKworc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc0ZsYWdzKERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb24gaW5zdHJ1Y3Rpb24pCit7CisgICAgc3dpdGNoIChpbnN0cnVjdGlvbikgeworICAg
IGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uOgor
ICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9u
V2l0aElmQ29uZGl0aW9uOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246OkNoZWNrVmFsdWVDYXNlU2Vuc2l0aXZlOgorICAgIGNhc2UgREZBQnl0
ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZUNhc2VJbnNlbnNpdGl2ZToKKyAgICBjYXNlIERG
QUJ5dGVjb2RlSW5zdHJ1Y3Rpb246Okp1bXBUYWJsZUNhc2VJbnNlbnNpdGl2ZToKKyAgICBjYXNl
IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246Okp1bXBUYWJsZUNhc2VTZW5zaXRpdmU6CisgICAgY2Fz
ZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlUmFuZ2VDYXNlU2Vuc2l0aXZlOgor
ICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZVJhbmdlQ2FzZUluc2Vu
c2l0aXZlOgorICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6SnVtcDoKKyAgICBjYXNl
IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbjoKKyAgICBjYXNlIERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbjoKKyAgICBjYXNlIERG
QUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlcm1pbmF0ZToKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGlubGluZSBERkFCeXRlY29kZUp1bXBTaXpl
IGdldEp1bXBTaXplKGNvbnN0IERGQUJ5dGVjb2RlKiBieXRlY29kZSwgdWludDMyX3QgYnl0ZWNv
ZGVMZW5ndGgsIHVpbnQzMl90IGluZGV4KQorc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc0FjdGlv
bihERkFCeXRlY29kZUluc3RydWN0aW9uIGluc3RydWN0aW9uKQogewotICAgIERGQUJ5dGVjb2Rl
SnVtcFNpemUganVtcFNpemUgPSBzdGF0aWNfY2FzdDxERkFCeXRlY29kZUp1bXBTaXplPihnZXRC
aXRzPHVpbnQ4X3Q+KGJ5dGVjb2RlLCBieXRlY29kZUxlbmd0aCwgaW5kZXgpICYgREZBQnl0ZWNv
ZGVKdW1wU2l6ZU1hc2spOwotICAgIEFTU0VSVChqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBT
aXplOjpJbnQzMiB8fCBqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQyNCB8fCBq
dW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQxNiB8fCBqdW1wU2l6ZSA9PSBERkFC
eXRlY29kZUp1bXBTaXplOjpJbnQ4KTsKKyAgICBzd2l0Y2ggKGluc3RydWN0aW9uKSB7CisgICAg
Y2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb246Cisg
ICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25X
aXRoSWZDb25kaXRpb246CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRB
Y3Rpb246CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb25XaXRo
SWZDb25kaXRpb246CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgREZBQnl0ZWNvZGVJ
bnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZUNhc2VTZW5zaXRpdmU6CisgICAgY2FzZSBERkFCeXRlY29k
ZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlQ2FzZUluc2Vuc2l0aXZlOgorICAgIGNhc2UgREZBQnl0
ZWNvZGVJbnN0cnVjdGlvbjo6SnVtcFRhYmxlQ2FzZUluc2Vuc2l0aXZlOgorICAgIGNhc2UgREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbjo6SnVtcFRhYmxlQ2FzZVNlbnNpdGl2ZToKKyAgICBjYXNlIERG
QUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkNoZWNrVmFsdWVSYW5nZUNhc2VTZW5zaXRpdmU6CisgICAg
Y2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlUmFuZ2VDYXNlSW5zZW5zaXRp
dmU6CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpKdW1wOgorICAgIGNhc2UgREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVybWluYXRlOgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgUmVzb3VyY2VGbGFncyBjb25zdW1lUmVzb3Vy
Y2VGbGFnc0FuZEluc3RydWN0aW9uKFNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUsIHVpbnQz
Ml90JiBwcm9ncmFtQ291bnRlcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGhhc0ZsYWdzLCBoYXNG
bGFncyhnZXRJbnN0cnVjdGlvbihieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpKSk7CisgICAgc3dp
dGNoIChzdGF0aWNfY2FzdDxERkFCeXRlY29kZUZsYWdzU2l6ZT4oYnl0ZWNvZGVbcHJvZ3JhbUNv
dW50ZXIrK10gJiBERkFCeXRlY29kZUZsYWdzU2l6ZU1hc2spKSB7CisgICAgY2FzZSBERkFCeXRl
Y29kZUZsYWdzU2l6ZTo6VUludDg6CisgICAgICAgIHJldHVybiBjb25zdW1lSW50ZWdlcjx1aW50
OF90PihieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOworICAgIGNhc2UgREZBQnl0ZWNvZGVGbGFn
c1NpemU6OlVJbnQxNjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyPHVpbnQxNl90Pihi
eXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOworICAgIGNhc2UgREZBQnl0ZWNvZGVGbGFnc1NpemU6
OlVJbnQyNDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWUyNEJpdEludGVnZXIoYnl0ZWNvZGUsIHBy
b2dyYW1Db3VudGVyKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBjb25zdW1lQWN0aW9uKFNwYW48Y29uc3QgdWlu
dDhfdD4gYnl0ZWNvZGUsIHVpbnQzMl90JiBwcm9ncmFtQ291bnRlciwgdWludDMyX3QgaW5zdHJ1
Y3Rpb25Mb2NhdGlvbikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGhhc0FjdGlvbiwgaGFzQWN0aW9u
KGdldEluc3RydWN0aW9uKGJ5dGVjb2RlLCBpbnN0cnVjdGlvbkxvY2F0aW9uKSkpOworICAgIEFT
U0VSVChwcm9ncmFtQ291bnRlciA+IGluc3RydWN0aW9uTG9jYXRpb24pOworICAgIHN3aXRjaCAo
c3RhdGljX2Nhc3Q8REZBQnl0ZWNvZGVBY3Rpb25TaXplPihieXRlY29kZVtpbnN0cnVjdGlvbkxv
Y2F0aW9uXSAmIERGQUJ5dGVjb2RlQWN0aW9uU2l6ZU1hc2spKSB7CisgICAgY2FzZSBERkFCeXRl
Y29kZUFjdGlvblNpemU6OlVJbnQ4OgorICAgICAgICByZXR1cm4gY29uc3VtZUludGVnZXI8dWlu
dDhfdD4oYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKTsKKyAgICBjYXNlIERGQUJ5dGVjb2RlQWN0
aW9uU2l6ZTo6VUludDE2OgorICAgICAgICByZXR1cm4gY29uc3VtZUludGVnZXI8dWludDE2X3Q+
KGJ5dGVjb2RlLCBwcm9ncmFtQ291bnRlcik7CisgICAgY2FzZSBERkFCeXRlY29kZUFjdGlvblNp
emU6OlVJbnQyNDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWUyNEJpdEludGVnZXIoYnl0ZWNvZGUs
IHByb2dyYW1Db3VudGVyKTsKKyAgICBjYXNlIERGQUJ5dGVjb2RlQWN0aW9uU2l6ZTo6VUludDMy
OgorICAgICAgICByZXR1cm4gY29uc3VtZUludGVnZXI8dWludDMyX3Q+KGJ5dGVjb2RlLCBwcm9n
cmFtQ291bnRlcik7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biAwOworfQorCitzdGF0aWMgREZBQnl0ZWNvZGVKdW1wU2l6ZSBnZXRKdW1wU2l6ZShTcGFuPGNv
bnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1aW50MzJfdCBpbmRleCkKK3sKKyAgICBhdXRvIGp1bXBT
aXplID0gc3RhdGljX2Nhc3Q8REZBQnl0ZWNvZGVKdW1wU2l6ZT4oZ2V0Qml0czx1aW50OF90Pihi
eXRlY29kZSwgaW5kZXgpICYgREZBQnl0ZWNvZGVKdW1wU2l6ZU1hc2spOworICAgIEFTU0VSVChq
dW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQzMgorICAgICAgICB8fCBqdW1wU2l6
ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQyNAorICAgICAgICB8fCBqdW1wU2l6ZSA9PSBE
RkFCeXRlY29kZUp1bXBTaXplOjpJbnQxNgorICAgICAgICB8fCBqdW1wU2l6ZSA9PSBERkFCeXRl
Y29kZUp1bXBTaXplOjpJbnQ4KTsKICAgICByZXR1cm4ganVtcFNpemU7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgaW50MzJfdCBnZXRKdW1wRGlzdGFuY2UoY29uc3QgREZBQnl0ZWNvZGUqIGJ5dGVjb2Rl
LCB1aW50MzJfdCBieXRlY29kZUxlbmd0aCwgdWludDMyX3QgaW5kZXgsIERGQUJ5dGVjb2RlSnVt
cFNpemUganVtcFNpemUpCitzdGF0aWMgaW50MzJfdCBnZXRKdW1wRGlzdGFuY2UoU3Bhbjxjb25z
dCB1aW50OF90PiBieXRlY29kZSwgdWludDMyX3QgaW5kZXgsIERGQUJ5dGVjb2RlSnVtcFNpemUg
anVtcFNpemUpCiB7CiAgICAgc3dpdGNoIChqdW1wU2l6ZSkgewotICAgIGNhc2UgSW50ODoKLSAg
ICAgICAgcmV0dXJuIGdldEJpdHM8aW50OF90PihieXRlY29kZSwgYnl0ZWNvZGVMZW5ndGgsIGlu
ZGV4KTsKLSAgICBjYXNlIEludDE2OgotICAgICAgICByZXR1cm4gZ2V0Qml0czxpbnQxNl90Pihi
eXRlY29kZSwgYnl0ZWNvZGVMZW5ndGgsIGluZGV4KTsKLSAgICBjYXNlIEludDI0OgotICAgICAg
ICByZXR1cm4gZ2V0Qml0czx1aW50MTZfdD4oYnl0ZWNvZGUsIGJ5dGVjb2RlTGVuZ3RoLCBpbmRl
eCkgfCAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oZ2V0Qml0czxpbnQ4X3Q+KGJ5dGVjb2RlLCBieXRl
Y29kZUxlbmd0aCwgaW5kZXggKyBzaXplb2YodWludDE2X3QpKSkgPDwgMTYpOwotICAgIGNhc2Ug
SW50MzI6Ci0gICAgICAgIHJldHVybiBnZXRCaXRzPGludDMyX3Q+KGJ5dGVjb2RlLCBieXRlY29k
ZUxlbmd0aCwgaW5kZXgpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgY2FzZSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQ4OgorICAgICAg
ICByZXR1cm4gZ2V0Qml0czxpbnQ4X3Q+KGJ5dGVjb2RlLCBpbmRleCk7CisgICAgY2FzZSBERkFC
eXRlY29kZUp1bXBTaXplOjpJbnQxNjoKKyAgICAgICAgcmV0dXJuIGdldEJpdHM8aW50MTZfdD4o
Ynl0ZWNvZGUsIGluZGV4KTsKKyAgICBjYXNlIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDI0Ogor
ICAgICAgICByZXR1cm4gZ2V0MjRCaXRzKGJ5dGVjb2RlLCBpbmRleCk7CisgICAgY2FzZSBERkFC
eXRlY29kZUp1bXBTaXplOjpJbnQzMjoKKyAgICAgICAgcmV0dXJuIGdldEJpdHM8aW50MzJfdD4o
Ynl0ZWNvZGUsIGluZGV4KTsKICAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIG1hdGNoZXNDb25kaXRpb24odWludDY0X3QgYWN0
aW9uQW5kRmxhZ3MsIGNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIGNvbmRp
dGlvbkFjdGlvbnMpCitzdGF0aWMgYm9vbCBtYXRjaGVzQ29uZGl0aW9uKHVpbnQ2NF90IGFjdGlv
bkFuZEZsYWdzLCBjb25zdCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zJiBjb25kaXRp
b25BY3Rpb25zKQogewogICAgIGJvb2wgaWZDb25kaXRpb24gPSBhY3Rpb25BbmRGbGFncyAmIElm
Q29uZGl0aW9uRmxhZzsKICAgICBib29sIGNvbmRpdGlvbiA9IGNvbmRpdGlvbkFjdGlvbnMuY29u
dGFpbnMoYWN0aW9uQW5kRmxhZ3MpOwpAQCAtOTUsNTEgKzE4OCw0OCBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgbWF0Y2hlc0NvbmRpdGlvbih1aW50NjRfdCBhY3Rpb25BbmRGbGFncywgY29uc3QgREZB
Qnl0ZWNvZGVJbgogCiB2b2lkIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldEFwcGVu
ZEFjdGlvbih1aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIsIEFjdGlvbnMmIGFjdGlvbnMsIGJvb2wg
aWZDb25kaXRpb24pCiB7Ci0gICAgQVNTRVJUKGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIG1f
Ynl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSA9PSBERkFCeXRlY29kZUluc3RydWN0aW9u
OjpBcHBlbmRBY3Rpb24KLSAgICAgICAgfHwgZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgbV9i
eXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIpID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246
OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbik7Ci0gICAgdWludDY0X3QgYWN0aW9uID0gKGlm
Q29uZGl0aW9uID8gSWZDb25kaXRpb25GbGFnIDogMCkgfCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
Z2V0Qml0czx1aW50MzJfdD4obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNv
dW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikpKTsKKyAgICBBU1NFUlQoZ2V0
SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpID09IERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb246OkFwcGVuZEFjdGlvbgorICAgICAgICB8fCBnZXRJbnN0cnVjdGlvbihtX2J5dGVj
b2RlLCBwcm9ncmFtQ291bnRlcikgPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0
aW9uV2l0aElmQ29uZGl0aW9uKTsKKyAgICBhdXRvIGluc3RydWN0aW9uTG9jYXRpb24gPSBwcm9n
cmFtQ291bnRlcisrOworICAgIHVpbnQ2NF90IGFjdGlvbldpdGhvdXRGbGFncyA9IGNvbnN1bWVB
Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIsIGluc3RydWN0aW9uTG9jYXRpb24pOwor
ICAgIHVpbnQ2NF90IGFjdGlvbiA9IChpZkNvbmRpdGlvbiA/IElmQ29uZGl0aW9uRmxhZyA6IDAp
IHwgYWN0aW9uV2l0aG91dEZsYWdzOwogICAgIGlmICghbV90b3BVUkxBY3Rpb25zIHx8IG1hdGNo
ZXNDb25kaXRpb24oYWN0aW9uLCAqbV90b3BVUkxBY3Rpb25zKSkKICAgICAgICAgYWN0aW9ucy5h
ZGQoYWN0aW9uKTsKLSAgICAKLSAgICBwcm9ncmFtQ291bnRlciArPSBpbnN0cnVjdGlvblNpemVX
aXRoQXJndW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbik7Ci0gICAg
QVNTRVJUKGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlv
bjo6QXBwZW5kQWN0aW9uKSA9PSBpbnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRzKERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbikpOwogfQogCi12b2lk
IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlv
bih1aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIsIHVpbnQxNl90IGZsYWdzLCBBY3Rpb25zJiBhY3Rp
b25zLCBib29sIGlmQ29uZGl0aW9uKQordm9pZCBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRl
cnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24odWludDMyX3QmIHByb2dyYW1Db3VudGVyLCBS
ZXNvdXJjZUZsYWdzIGZsYWdzLCBBY3Rpb25zJiBhY3Rpb25zLCBib29sIGlmQ29uZGl0aW9uKQog
ewotICAgIEFTU0VSVChnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3Ro
LCBwcm9ncmFtQ291bnRlcikgPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5k
QXBwZW5kQWN0aW9uCi0gICAgICAgIHx8IGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIG1fYnl0
ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpU
ZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24pOwotICAgIHVpbnQxNl90IGZs
YWdzVG9DaGVjayA9IGdldEJpdHM8dWludDE2X3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5n
dGgsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pKTsKKyAg
ICBhdXRvIGluc3RydWN0aW9uTG9jYXRpb24gPSBwcm9ncmFtQ291bnRlcjsKKyAgICBhdXRvIGZs
YWdzVG9DaGVjayA9IGNvbnN1bWVSZXNvdXJjZUZsYWdzQW5kSW5zdHJ1Y3Rpb24obV9ieXRlY29k
ZSwgcHJvZ3JhbUNvdW50ZXIpOwogCi0gICAgdWludDE2X3QgbG9hZFR5cGVGbGFncyA9IGZsYWdz
VG9DaGVjayAmIExvYWRUeXBlTWFzazsKLSAgICB1aW50MTZfdCBsb2FkQ29udGV4dEZsYWdzID0g
ZmxhZ3NUb0NoZWNrICYgTG9hZENvbnRleHRNYXNrOwotICAgIHVpbnQxNl90IHJlc291cmNlVHlw
ZUZsYWdzID0gZmxhZ3NUb0NoZWNrICYgUmVzb3VyY2VUeXBlTWFzazsKKyAgICBSZXNvdXJjZUZs
YWdzIGxvYWRUeXBlRmxhZ3MgPSBmbGFnc1RvQ2hlY2sgJiBMb2FkVHlwZU1hc2s7CisgICAgUmVz
b3VyY2VGbGFncyBsb2FkQ29udGV4dEZsYWdzID0gZmxhZ3NUb0NoZWNrICYgTG9hZENvbnRleHRN
YXNrOworICAgIFJlc291cmNlRmxhZ3MgcmVzb3VyY2VUeXBlRmxhZ3MgPSBmbGFnc1RvQ2hlY2sg
JiBSZXNvdXJjZVR5cGVNYXNrOwogCiAgICAgYm9vbCBsb2FkVHlwZU1hdGNoZXMgPSBsb2FkVHlw
ZUZsYWdzID8gKGxvYWRUeXBlRmxhZ3MgJiBmbGFncykgOiB0cnVlOwogICAgIGJvb2wgbG9hZENv
bnRleHRNYXRjaGVzID0gbG9hZENvbnRleHRGbGFncyA/IChsb2FkQ29udGV4dEZsYWdzICYgZmxh
Z3MpIDogdHJ1ZTsKICAgICBib29sIHJlc291cmNlVHlwZU1hdGNoZXMgPSByZXNvdXJjZVR5cGVG
bGFncyA/IChyZXNvdXJjZVR5cGVGbGFncyAmIGZsYWdzKSA6IHRydWU7CiAgICAgCisgICAgYXV0
byBhY3Rpb25XaXRob3V0RmxhZ3MgPSBjb25zdW1lQWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1D
b3VudGVyLCBpbnN0cnVjdGlvbkxvY2F0aW9uKTsKICAgICBpZiAobG9hZFR5cGVNYXRjaGVzICYm
IGxvYWRDb250ZXh0TWF0Y2hlcyAmJiByZXNvdXJjZVR5cGVNYXRjaGVzKSB7Ci0gICAgICAgIHVp
bnQ2NF90IGFjdGlvbkFuZEZsYWdzID0gKGlmQ29uZGl0aW9uID8gSWZDb25kaXRpb25GbGFnIDog
MCkgfCAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGZsYWdzVG9DaGVjaykgPDwgMzIpIHwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGdldEJpdHM8dWludDMyX3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVM
ZW5ndGgsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pICsg
c2l6ZW9mKHVpbnQxNl90KSkpOworICAgICAgICB1aW50NjRfdCBhY3Rpb25BbmRGbGFncyA9IChp
ZkNvbmRpdGlvbiA/IElmQ29uZGl0aW9uRmxhZyA6IDApIHwgKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihmbGFnc1RvQ2hlY2spIDw8IDMyKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhY3Rpb25XaXRo
b3V0RmxhZ3MpOwogICAgICAgICBpZiAoIW1fdG9wVVJMQWN0aW9ucyB8fCBtYXRjaGVzQ29uZGl0
aW9uKGFjdGlvbkFuZEZsYWdzLCAqbV90b3BVUkxBY3Rpb25zKSkKICAgICAgICAgICAgIGFjdGlv
bnMuYWRkKGFjdGlvbkFuZEZsYWdzKTsKICAgICB9Ci0gICAgcHJvZ3JhbUNvdW50ZXIgKz0gaW5z
dHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0Rmxh
Z3NBbmRBcHBlbmRBY3Rpb24pOwotICAgIEFTU0VSVChpbnN0cnVjdGlvblNpemVXaXRoQXJndW1l
bnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbikgPT0g
aW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0
RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24pKTsKIH0KIAogdGVtcGxhdGU8Ym9v
bCBjYXNlU2Vuc2l0aXZlPgogaW5saW5lIHZvaWQgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50
ZXJwZXRKdW1wVGFibGUoY29uc3QgY2hhciogdXJsLCB1aW50MzJfdCYgdXJsSW5kZXgsIHVpbnQz
Ml90JiBwcm9ncmFtQ291bnRlciwgYm9vbCYgdXJsSW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcpCiB7
Ci0gICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IGdldEp1bXBTaXplKG1fYnl0ZWNv
ZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKTsKKyAgICBERkFCeXRlY29kZUp1
bXBTaXplIGp1bXBTaXplID0gZ2V0SnVtcFNpemUobV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIp
OwogCiAgICAgY2hhciBjaGFyYWN0ZXIgPSBjYXNlU2Vuc2l0aXZlID8gdXJsW3VybEluZGV4XSA6
IHRvQVNDSUlMb3dlcih1cmxbdXJsSW5kZXhdKTsKLSAgICB1aW50OF90IGZpcnN0Q2hhcmFjdGVy
ID0gZ2V0Qml0czx1aW50OF90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFt
Q291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSk7Ci0gICAgdWludDhfdCBs
YXN0Q2hhcmFjdGVyID0gZ2V0Qml0czx1aW50OF90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVu
Z3RoLCBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIHNp
emVvZih1aW50OF90KSk7CisgICAgdWludDhfdCBmaXJzdENoYXJhY3RlciA9IGdldEJpdHM8dWlu
dDhfdD4obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbikpOworICAgIHVpbnQ4X3QgbGFzdENoYXJhY3RlciA9IGdldEJpdHM8dWludDhfdD4o
bV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlv
bikgKyBzaXplb2YodWludDhfdCkpOwogICAgIGlmIChjaGFyYWN0ZXIgPj0gZmlyc3RDaGFyYWN0
ZXIgJiYgY2hhcmFjdGVyIDw9IGxhc3RDaGFyYWN0ZXIpIHsKICAgICAgICAgdWludDMyX3Qgc3Rh
cnRPZmZzZXQgPSBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9u
KSArIDIgKiBzaXplb2YodWludDhfdCk7CiAgICAgICAgIHVpbnQzMl90IGp1bXBMb2NhdGlvbiA9
IHN0YXJ0T2Zmc2V0ICsgKGNoYXJhY3RlciAtIGZpcnN0Q2hhcmFjdGVyKSAqIGp1bXBTaXplSW5C
eXRlcyhqdW1wU2l6ZSk7Ci0gICAgICAgIHByb2dyYW1Db3VudGVyICs9IGdldEp1bXBEaXN0YW5j
ZShtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBqdW1wTG9jYXRpb24sIGp1bXBTaXplKTsK
KyAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gZ2V0SnVtcERpc3RhbmNlKG1fYnl0ZWNvZGUsIGp1
bXBMb2NhdGlvbiwganVtcFNpemUpOwogICAgICAgICBpZiAoIWNoYXJhY3RlcikKICAgICAgICAg
ICAgIHVybEluZGV4SXNBZnRlckVuZE9mU3RyaW5nID0gdHJ1ZTsKICAgICAgICAgdXJsSW5kZXgr
KzsgLy8gVGhpcyByZXByZXNlbnRzIGFuIGVkZ2UgaW4gdGhlIERGQS4KQEAgLTE0Nyw0MCArMjM3
LDQxIEBAIGlubGluZSB2b2lkIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycGV0SnVtcFRh
YmxlKGNvbnN0IGNoYXIqIHVybCwgdWludDMyX3QmCiAgICAgICAgIHByb2dyYW1Db3VudGVyICs9
IHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIDIgKiBzaXplb2YodWludDhfdCkgKyBq
dW1wU2l6ZUluQnl0ZXMoanVtcFNpemUpICogKGxhc3RDaGFyYWN0ZXIgLSBmaXJzdENoYXJhY3Rl
ciArIDEpOwogfQogCi1ERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXI6OmFjdGlvbnNNYXRjaGluZ0V2ZXJ5dGhpbmcoKQorYXV0byBERkFCeXRlY29k
ZUludGVycHJldGVyOjphY3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nKCkgLT4gQWN0aW9ucwogewog
ICAgIEFjdGlvbnMgYWN0aW9uczsKIAogICAgIC8vIERGQSBoZWFkZXIuCi0gICAgdWludDMyX3Qg
ZGZhQnl0ZWNvZGVMZW5ndGggPSBnZXRCaXRzPHVpbnQzMl90PihtX2J5dGVjb2RlLCBtX2J5dGVj
b2RlTGVuZ3RoLCAwKTsKLSAgICB1aW50MzJfdCBwcm9ncmFtQ291bnRlciA9IHNpemVvZih1aW50
MzJfdCk7CisgICAgdWludDMyX3QgZGZhQnl0ZWNvZGVMZW5ndGggPSBnZXRCaXRzPHVpbnQzMl90
PihtX2J5dGVjb2RlLCAwKTsKKyAgICB1aW50MzJfdCBwcm9ncmFtQ291bnRlciA9IHNpemVvZihE
RkFIZWFkZXIpOwogCiAgICAgd2hpbGUgKHByb2dyYW1Db3VudGVyIDwgZGZhQnl0ZWNvZGVMZW5n
dGgpIHsKLSAgICAgICAgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbiA9IGdldElu
c3RydWN0aW9uKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKTsK
KyAgICAgICAgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbiA9IGdldEluc3RydWN0
aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKTsKICAgICAgICAgaWYgKGluc3RydWN0aW9u
ID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbikKICAgICAgICAgICAgIGlu
dGVycHJldEFwcGVuZEFjdGlvbihwcm9ncmFtQ291bnRlciwgYWN0aW9ucywgZmFsc2UpOwogICAg
ICAgICBlbHNlIGlmIChpbnN0cnVjdGlvbiA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBl
bmRBY3Rpb25XaXRoSWZDb25kaXRpb24pCiAgICAgICAgICAgICBpbnRlcnByZXRBcHBlbmRBY3Rp
b24ocHJvZ3JhbUNvdW50ZXIsIGFjdGlvbnMsIHRydWUpOwotICAgICAgICBlbHNlIGlmIChpbnN0
cnVjdGlvbiA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rp
b24pCi0gICAgICAgICAgICBwcm9ncmFtQ291bnRlciArPSBpbnN0cnVjdGlvblNpemVXaXRoQXJn
dW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbik7
Ci0gICAgICAgIGVsc2UgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246
OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbikKLSAgICAgICAgICAgIHBy
b2dyYW1Db3VudGVyICs9IGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJ
bnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKTsKLSAg
ICAgICAgZWxzZQorICAgICAgICBlbHNlIGlmIChpbnN0cnVjdGlvbiA9PSBERkFCeXRlY29kZUlu
c3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24KKyAgICAgICAgICAgIHx8IGluc3Ry
dWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlv
bldpdGhJZkNvbmRpdGlvbikgeworICAgICAgICAgICAgYXV0byBwcm9ncmFtQ291bnRlckF0SW5z
dHJ1Y3Rpb24gPSBwcm9ncmFtQ291bnRlcjsKKyAgICAgICAgICAgIGNvbnN1bWVSZXNvdXJjZUZs
YWdzQW5kSW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOworICAgICAgICAg
ICAgY29uc3VtZUFjdGlvbihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlciwgcHJvZ3JhbUNvdW50
ZXJBdEluc3RydWN0aW9uKTsKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgcmV0dXJuIGFjdGlvbnM7CiB9CiAgICAgCi1ERkFCeXRlY29kZUludGVycHJldGVy
OjpBY3Rpb25zIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldFdpdGhDb25kaXRpb25z
KGNvbnN0IENTdHJpbmcmIHVybENTdHJpbmcsIHVpbnQxNl90IGZsYWdzLCBjb25zdCBERkFCeXRl
Y29kZUludGVycHJldGVyOjpBY3Rpb25zJiB0b3BVUkxBY3Rpb25zKQorYXV0byBERkFCeXRlY29k
ZUludGVycHJldGVyOjppbnRlcnByZXRXaXRoQ29uZGl0aW9ucyhjb25zdCBDU3RyaW5nJiB1cmxD
U3RyaW5nLCBSZXNvdXJjZUZsYWdzIGZsYWdzLCBjb25zdCBBY3Rpb25zJiB0b3BVUkxBY3Rpb25z
KSAtPiBBY3Rpb25zCiB7CiAgICAgQVNTRVJUKCFtX3RvcFVSTEFjdGlvbnMpOwogICAgIG1fdG9w
VVJMQWN0aW9ucyA9ICZ0b3BVUkxBY3Rpb25zOwotICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6
OkFjdGlvbnMgYWN0aW9ucyA9IGludGVycHJldCh1cmxDU3RyaW5nLCBmbGFncyk7CisgICAgYXV0
byBhY3Rpb25zID0gaW50ZXJwcmV0KHVybENTdHJpbmcsIGZsYWdzKTsKICAgICBtX3RvcFVSTEFj
dGlvbnMgPSBudWxscHRyOwogICAgIHJldHVybiBhY3Rpb25zOwogfQogCi1ERkFCeXRlY29kZUlu
dGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldChjb25z
dCBDU3RyaW5nJiB1cmxDU3RyaW5nLCB1aW50MTZfdCBmbGFncykKK2F1dG8gREZBQnl0ZWNvZGVJ
bnRlcnByZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmIHVybENTdHJpbmcsIFJlc291cmNl
RmxhZ3MgZmxhZ3MpIC0+IEFjdGlvbnMKIHsKICAgICBjb25zdCBjaGFyKiB1cmwgPSB1cmxDU3Ry
aW5nLmRhdGEoKTsKICAgICBBU1NFUlQodXJsKTsKQEAgLTE4OCwzNSArMjc5LDM0IEBAIERGQUJ5
dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJw
cmV0KGNvbnN0IENTdHJpbmcmCiAgICAgQWN0aW9ucyBhY3Rpb25zOwogICAgIAogICAgIHVpbnQz
Ml90IHByb2dyYW1Db3VudGVyID0gMDsKLSAgICB3aGlsZSAocHJvZ3JhbUNvdW50ZXIgPCBtX2J5
dGVjb2RlTGVuZ3RoKSB7CisgICAgd2hpbGUgKHByb2dyYW1Db3VudGVyIDwgbV9ieXRlY29kZS5z
aXplKCkpIHsKIAogICAgICAgICAvLyBERkEgaGVhZGVyLgogICAgICAgICB1aW50MzJfdCBkZmFT
dGFydCA9IHByb2dyYW1Db3VudGVyOwotICAgICAgICB1aW50MzJfdCBkZmFCeXRlY29kZUxlbmd0
aCA9IGdldEJpdHM8dWludDMyX3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dy
YW1Db3VudGVyKTsKKyAgICAgICAgdWludDMyX3QgZGZhQnl0ZWNvZGVMZW5ndGggPSBnZXRCaXRz
PHVpbnQzMl90PihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcik7CiAgICAgICAgIHByb2dyYW1D
b3VudGVyICs9IHNpemVvZih1aW50MzJfdCk7CiAKICAgICAgICAgLy8gU2tpcCB0aGUgYWN0aW9u
cyB3aXRob3V0IGZsYWdzIG9uIHRoZSBERkEgcm9vdC4gVGhlc2UgYXJlIGFjY2Vzc2VkIHZpYSBh
Y3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nLgogICAgICAgICBpZiAoIWRmYVN0YXJ0KSB7CiAgICAg
ICAgICAgICB3aGlsZSAocHJvZ3JhbUNvdW50ZXIgPCBkZmFCeXRlY29kZUxlbmd0aCkgewotICAg
ICAgICAgICAgICAgIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb24gPSBnZXRJbnN0
cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlcik7Ci0g
ICAgICAgICAgICAgICAgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246
OkFwcGVuZEFjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gaW5z
dHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRB
Y3Rpb24pOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gaW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhE
RkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24pOwotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rp
b246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbikKKyAgICAgICAgICAgICAgICBERkFCeXRlY29k
ZUluc3RydWN0aW9uIGluc3RydWN0aW9uID0gZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJv
Z3JhbUNvdW50ZXIpOworICAgICAgICAgICAgICAgIGlmIChpbnN0cnVjdGlvbiA9PSBERkFCeXRl
Y29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24gfHwgaW5zdHJ1Y3Rpb24gPT0gREZBQnl0ZWNv
ZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKSB7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb25Mb2NhdGlvbiA9IHByb2dyYW1Db3VudGVyKys7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN1bWVBY3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50
ZXIsIGluc3RydWN0aW9uTG9jYXRpb24pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5z
dHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0
aW9uKQogICAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rp
b24ocHJvZ3JhbUNvdW50ZXIsIGZsYWdzLCBhY3Rpb25zLCBmYWxzZSk7CiAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoaW5zdHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZs
YWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKQogICAgICAgICAgICAgICAgICAgICBp
bnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24ocHJvZ3JhbUNvdW50ZXIsIGZsYWdzLCBh
Y3Rpb25zLCB0cnVlKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHByb2dyYW1Db3VudGVyID49
IG1fYnl0ZWNvZGVMZW5ndGgpCisgICAgICAgICAgICBpZiAocHJvZ3JhbUNvdW50ZXIgPj0gbV9i
eXRlY29kZS5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnM7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGdldEluc3RydWN0aW9u
KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSAhPSBERkFCeXRl
Y29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24KLSAgICAgICAgICAgICAgICAmJiBnZXRJbnN0
cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlcikgIT0g
REZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uCi0gICAg
ICAgICAgICAgICAgJiYgZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0
aCwgcHJvZ3JhbUNvdW50ZXIpICE9IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0Fu
ZEFwcGVuZEFjdGlvbgotICAgICAgICAgICAgICAgICYmIGdldEluc3RydWN0aW9uKG1fYnl0ZWNv
ZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSAhPSBERkFCeXRlY29kZUluc3Ry
dWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24sCisgICAgICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dy
YW1Db3VudGVyKSAhPSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24KKyAgICAg
ICAgICAgICAgICAmJiBnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcikg
IT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uCisg
ICAgICAgICAgICAgICAgJiYgZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50
ZXIpICE9IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbgor
ICAgICAgICAgICAgICAgICYmIGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3Vu
dGVyKSAhPSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25X
aXRoSWZDb25kaXRpb24sCiAgICAgICAgICAgICAgICAgIlRyaWdnZXJzIHRoYXQgbWF0Y2ggZXZl
cnl0aGluZyBzaG91bGQgb25seSBiZSBpbiB0aGUgZmlyc3QgREZBLiIpOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtMjI1LDggKzMxNSw4IEBAIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlv
bnMgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmCiAgICAg
ICAgIHVpbnQzMl90IHVybEluZGV4ID0gMDsKICAgICAgICAgYm9vbCB1cmxJbmRleElzQWZ0ZXJF
bmRPZlN0cmluZyA9IGZhbHNlOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAg
QVNTRVJUKHByb2dyYW1Db3VudGVyIDw9IG1fYnl0ZWNvZGVMZW5ndGgpOwotICAgICAgICAgICAg
c3dpdGNoIChnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9n
cmFtQ291bnRlcikpIHsKKyAgICAgICAgICAgIEFTU0VSVChwcm9ncmFtQ291bnRlciA8PSBtX2J5
dGVjb2RlLnNpemUoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGdldEluc3RydWN0aW9uKG1fYnl0
ZWNvZGUsIHByb2dyYW1Db3VudGVyKSkgewogCiAgICAgICAgICAgICBjYXNlIERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb246OlRlcm1pbmF0ZToKICAgICAgICAgICAgICAgICBnb3RvIG5leHRERkE7CkBA
IC0yMzcsMTAgKzMyNywxMCBAQCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIERGQUJ5
dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldChjb25zdCBDU3RyaW5nJgogCiAgICAgICAgICAg
ICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBuZXh0IGNoYXJhY3RlciBpbiB0aGUgdXJsIGlz
IHRoZSB2YWx1ZSBzdG9yZWQgd2l0aCB0aGUgYnl0ZWNvZGUuCiAgICAgICAgICAgICAgICAgY2hh
ciBjaGFyYWN0ZXIgPSB1cmxbdXJsSW5kZXhdOwotICAgICAgICAgICAgICAgIERGQUJ5dGVjb2Rl
SnVtcFNpemUganVtcFNpemUgPSBnZXRKdW1wU2l6ZShtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVu
Z3RoLCBwcm9ncmFtQ291bnRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBn
ZXRCaXRzPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3Vu
dGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pKSkgeworICAgICAgICAgICAgICAg
IERGQUJ5dGVjb2RlSnVtcFNpemUganVtcFNpemUgPSBnZXRKdW1wU2l6ZShtX2J5dGVjb2RlLCBw
cm9ncmFtQ291bnRlcik7CisgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBnZXRCaXRz
PHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb24pKSkgewogICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBqdW1wTG9jYXRp
b24gPSBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIHNp
emVvZih1aW50OF90KTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gZ2V0
SnVtcERpc3RhbmNlKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIGp1bXBMb2NhdGlvbiwg
anVtcFNpemUpOworICAgICAgICAgICAgICAgICAgICBwcm9ncmFtQ291bnRlciArPSBnZXRKdW1w
RGlzdGFuY2UobV9ieXRlY29kZSwganVtcExvY2F0aW9uLCBqdW1wU2l6ZSk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghY2hhcmFjdGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgdXJsSW5k
ZXhJc0FmdGVyRW5kT2ZTdHJpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB1cmxJbmRl
eCsrOyAvLyBUaGlzIHJlcHJlc2VudHMgYW4gZWRnZSBpbiB0aGUgREZBLgpAQCAtMjU1LDEwICsz
NDUsMTAgQEAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyBERkFCeXRlY29kZUludGVy
cHJldGVyOjppbnRlcnByZXQoY29uc3QgQ1N0cmluZyYKIAogICAgICAgICAgICAgICAgIC8vIENo
ZWNrIHRvIHNlZSBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIHVybCBpcyB0aGUgdmFsdWUg
c3RvcmVkIHdpdGggdGhlIGJ5dGVjb2RlLgogICAgICAgICAgICAgICAgIGNoYXIgY2hhcmFjdGVy
ID0gdG9BU0NJSUxvd2VyKHVybFt1cmxJbmRleF0pOwotICAgICAgICAgICAgICAgIERGQUJ5dGVj
b2RlSnVtcFNpemUganVtcFNpemUgPSBnZXRKdW1wU2l6ZShtX2J5dGVjb2RlLCBtX2J5dGVjb2Rl
TGVuZ3RoLCBwcm9ncmFtQ291bnRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9
PSBnZXRCaXRzPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1D
b3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pKSkgeworICAgICAgICAgICAg
ICAgIERGQUJ5dGVjb2RlSnVtcFNpemUganVtcFNpemUgPSBnZXRKdW1wU2l6ZShtX2J5dGVjb2Rl
LCBwcm9ncmFtQ291bnRlcik7CisgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBnZXRC
aXRzPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb24pKSkgewogICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBqdW1wTG9j
YXRpb24gPSBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSAr
IHNpemVvZih1aW50OF90KTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0g
Z2V0SnVtcERpc3RhbmNlKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIGp1bXBMb2NhdGlv
biwganVtcFNpemUpOworICAgICAgICAgICAgICAgICAgICBwcm9ncmFtQ291bnRlciArPSBnZXRK
dW1wRGlzdGFuY2UobV9ieXRlY29kZSwganVtcExvY2F0aW9uLCBqdW1wU2l6ZSk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgdXJs
SW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB1cmxJ
bmRleCsrOyAvLyBUaGlzIHJlcHJlc2VudHMgYW4gZWRnZSBpbiB0aGUgREZBLgpAQCAtMjg1LDEx
ICszNzUsMTEgQEAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyBERkFCeXRlY29kZUlu
dGVycHJldGVyOjppbnRlcnByZXQoY29uc3QgQ1N0cmluZyYKICAgICAgICAgICAgICAgICAgICAg
Z290byBuZXh0REZBOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNoYXIgY2hh
cmFjdGVyID0gdXJsW3VybEluZGV4XTsKLSAgICAgICAgICAgICAgICBERkFCeXRlY29kZUp1bXBT
aXplIGp1bXBTaXplID0gZ2V0SnVtcFNpemUobV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwg
cHJvZ3JhbUNvdW50ZXIpOwotICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPj0gZ2V0Qml0
czx1aW50OF90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlciAr
IHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAgJiYg
Y2hhcmFjdGVyIDw9IGdldEJpdHM8dWludDhfdD4obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0
aCwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikgKyBzaXpl
b2YodWludDhfdCkpKSB7CisgICAgICAgICAgICAgICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1w
U2l6ZSA9IGdldEp1bXBTaXplKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKTsKKyAgICAgICAg
ICAgICAgICBpZiAoY2hhcmFjdGVyID49IGdldEJpdHM8dWludDhfdD4obV9ieXRlY29kZSwgcHJv
Z3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikpCisgICAgICAgICAg
ICAgICAgICAgICYmIGNoYXJhY3RlciA8PSBnZXRCaXRzPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHBy
b2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pICsgc2l6ZW9mKHVp
bnQ4X3QpKSkgewogICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBqdW1wTG9jYXRpb24gPSBw
cm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIDIgKiBzaXpl
b2YodWludDhfdCk7Ci0gICAgICAgICAgICAgICAgICAgIHByb2dyYW1Db3VudGVyICs9IGdldEp1
bXBEaXN0YW5jZShtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBqdW1wTG9jYXRpb24sIGp1
bXBTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gZ2V0SnVtcERp
c3RhbmNlKG1fYnl0ZWNvZGUsIGp1bXBMb2NhdGlvbiwganVtcFNpemUpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNoYXJhY3RlcikKICAgICAgICAgICAgICAgICAgICAgICAgIHVybEluZGV4
SXNBZnRlckVuZE9mU3RyaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgdXJsSW5kZXgr
KzsgLy8gVGhpcyByZXByZXNlbnRzIGFuIGVkZ2UgaW4gdGhlIERGQS4KQEAgLTMwMywxMSArMzkz
LDExIEBAIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgREZBQnl0ZWNvZGVJbnRlcnBy
ZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmCiAgICAgICAgICAgICAgICAgICAgIGdvdG8g
bmV4dERGQTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjaGFyIGNoYXJhY3Rl
ciA9IHRvQVNDSUlMb3dlcih1cmxbdXJsSW5kZXhdKTsKLSAgICAgICAgICAgICAgICBERkFCeXRl
Y29kZUp1bXBTaXplIGp1bXBTaXplID0gZ2V0SnVtcFNpemUobV9ieXRlY29kZSwgbV9ieXRlY29k
ZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIpOwotICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIg
Pj0gZ2V0Qml0czx1aW50OF90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFt
Q291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSkKLSAgICAgICAgICAgICAg
ICAgICAgJiYgY2hhcmFjdGVyIDw9IGdldEJpdHM8dWludDhfdD4obV9ieXRlY29kZSwgbV9ieXRl
Y29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlv
bikgKyBzaXplb2YodWludDhfdCkpKSB7CisgICAgICAgICAgICAgICAgREZBQnl0ZWNvZGVKdW1w
U2l6ZSBqdW1wU2l6ZSA9IGdldEp1bXBTaXplKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKTsK
KyAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyID49IGdldEJpdHM8dWludDhfdD4obV9ieXRl
Y29kZSwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikpCisg
ICAgICAgICAgICAgICAgICAgICYmIGNoYXJhY3RlciA8PSBnZXRCaXRzPHVpbnQ4X3Q+KG1fYnl0
ZWNvZGUsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pICsg
c2l6ZW9mKHVpbnQ4X3QpKSkgewogICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBqdW1wTG9j
YXRpb24gPSBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSAr
IDIgKiBzaXplb2YodWludDhfdCk7Ci0gICAgICAgICAgICAgICAgICAgIHByb2dyYW1Db3VudGVy
ICs9IGdldEp1bXBEaXN0YW5jZShtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBqdW1wTG9j
YXRpb24sIGp1bXBTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0g
Z2V0SnVtcERpc3RhbmNlKG1fYnl0ZWNvZGUsIGp1bXBMb2NhdGlvbiwganVtcFNpemUpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoIWNoYXJhY3RlcikKICAgICAgICAgICAgICAgICAgICAgICAg
IHVybEluZGV4SXNBZnRlckVuZE9mU3RyaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
dXJsSW5kZXgrKzsgLy8gVGhpcyByZXByZXNlbnRzIGFuIGVkZ2UgaW4gdGhlIERGQS4KQEAgLTMy
MSw4ICs0MTEsOCBAQCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXI6OmludGVycHJldChjb25zdCBDU3RyaW5nJgogICAgICAgICAgICAgICAgICAg
ICBnb3RvIG5leHRERkE7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgdWludDMy
X3QganVtcExvY2F0aW9uID0gcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbik7Ci0gICAgICAgICAgICAgICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9
IGdldEp1bXBTaXplKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVy
KTsKLSAgICAgICAgICAgICAgICBwcm9ncmFtQ291bnRlciArPSBnZXRKdW1wRGlzdGFuY2UobV9i
eXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwganVtcExvY2F0aW9uLCBqdW1wU2l6ZSk7CisgICAg
ICAgICAgICAgICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IGdldEp1bXBTaXplKG1f
Ynl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKTsKKyAgICAgICAgICAgICAgICBwcm9ncmFtQ291bnRl
ciArPSBnZXRKdW1wRGlzdGFuY2UobV9ieXRlY29kZSwganVtcExvY2F0aW9uLCBqdW1wU2l6ZSk7
CiAgICAgICAgICAgICAgICAgdXJsSW5kZXgrKzsgLy8gVGhpcyByZXByZXNlbnRzIGFuIGVkZ2Ug
aW4gdGhlIERGQS4KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM1
Nyw4ICs0NDcsNiBAQCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXI6OmludGVycHJldChjb25zdCBDU3RyaW5nJgogICAgIHJldHVybiBhY3Rpb25z
OwogfQogCi19IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwotICAgIAotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMK
IAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmgK
aW5kZXggMWNmM2I4YzlhYjIxYzYyODg3MWY0YzE0NmI1ZWI2ZWEyYmYwZDdkNC4uNmIyYTFjZjJk
MWJjYTQ0YjExZmM3NjYzOTRmZTRjNzA2NGExYzA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaApAQCAt
MzMsMzcgKzMzLDMwIEBACiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1uYW1lc3BhY2UgQ29udGVu
dEV4dGVuc2lvbnMgeworbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zIHsKIAot
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgREZBQnl0ZWNvZGVJbnRlcnByZXRlciB7CitjbGFzcyBERkFC
eXRlY29kZUludGVycHJldGVyIHsKIHB1YmxpYzoKLSAgICBERkFCeXRlY29kZUludGVycHJldGVy
KGNvbnN0IERGQUJ5dGVjb2RlKiBieXRlY29kZSwgdW5zaWduZWQgYnl0ZWNvZGVMZW5ndGgpCi0g
ICAgICAgIDogbV9ieXRlY29kZShieXRlY29kZSkKLSAgICAgICAgLCBtX2J5dGVjb2RlTGVuZ3Ro
KGJ5dGVjb2RlTGVuZ3RoKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdHlwZWRlZiBIYXNoU2V0
PHVpbnQ2NF90LCBEZWZhdWx0SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dWludDY0X3Q+PiBBY3Rpb25zOwotICAgIAotICAgIEFjdGlvbnMgaW50ZXJw
cmV0KGNvbnN0IENTdHJpbmcmLCB1aW50MTZfdCBmbGFncyk7Ci0gICAgQWN0aW9ucyBpbnRlcnBy
ZXRXaXRoQ29uZGl0aW9ucyhjb25zdCBDU3RyaW5nJiwgdWludDE2X3QgZmxhZ3MsIGNvbnN0IERG
QUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIGNvbmRpdGlvbkFjdGlvbnMpOworICAgIERG
QUJ5dGVjb2RlSW50ZXJwcmV0ZXIoU3Bhbjxjb25zdCB1aW50OF90PiBieXRlY29kZSkKKyAgICAg
ICAgOiBtX2J5dGVjb2RlKGJ5dGVjb2RlKSB7IH0KKworICAgIHVzaW5nIEFjdGlvbnMgPSBIYXNo
U2V0PHVpbnQ2NF90LCBEZWZhdWx0SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PjsKKworICAgIFdFQkNPUkVfRVhQT1JUIEFjdGlvbnMg
aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmLCBSZXNvdXJjZUZsYWdzKTsKKyAgICBBY3Rpb25zIGlu
dGVycHJldFdpdGhDb25kaXRpb25zKGNvbnN0IENTdHJpbmcmLCBSZXNvdXJjZUZsYWdzLCBjb25z
dCBBY3Rpb25zJiBjb25kaXRpb25BY3Rpb25zKTsKICAgICBBY3Rpb25zIGFjdGlvbnNNYXRjaGlu
Z0V2ZXJ5dGhpbmcoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGludGVycHJldEFwcGVuZEFjdGlv
bih1bnNpZ25lZCYgcHJvZ3JhbUNvdW50ZXIsIEFjdGlvbnMmLCBib29sIGlmQ29uZGl0aW9uKTsK
LSAgICB2b2lkIGludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbih1bnNpZ25lZCYgcHJv
Z3JhbUNvdW50ZXIsIHVpbnQxNl90IGZsYWdzLCBBY3Rpb25zJiwgYm9vbCBpZkNvbmRpdGlvbik7
CisgICAgdm9pZCBpbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24odW5zaWduZWQmIHBy
b2dyYW1Db3VudGVyLCBSZXNvdXJjZUZsYWdzLCBBY3Rpb25zJiwgYm9vbCBpZkNvbmRpdGlvbik7
CiAKICAgICB0ZW1wbGF0ZTxib29sIGNhc2VTZW5zaXRpdmU+CiAgICAgdm9pZCBpbnRlcnBldEp1
bXBUYWJsZShjb25zdCBjaGFyKiB1cmwsIHVpbnQzMl90JiB1cmxJbmRleCwgdWludDMyX3QmIHBy
b2dyYW1Db3VudGVyLCBib29sJiB1cmxJbmRleElzQWZ0ZXJFbmRPZlN0cmluZyk7CiAKLSAgICBj
b25zdCBERkFCeXRlY29kZSogbV9ieXRlY29kZTsKLSAgICBjb25zdCB1bnNpZ25lZCBtX2J5dGVj
b2RlTGVuZ3RoOworICAgIGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4gbV9ieXRlY29kZTsKICAg
ICBjb25zdCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zKiBtX3RvcFVSTEFjdGlvbnMg
eyBudWxscHRyIH07CiB9OwogCi19IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyAgICAK
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDc5MWJjOTMyYmRjYzk4MTI2MDZmOGQ1NGI0
Mzk5YzNiNjc5M2Q0ZjMuLmE0NmU2MDBhYmNhYWVjYjRlODY5ZDdlYzFlNzVmNTViZmE2Njg2MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCB2
b2lkIFBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUmIGZyYW1lLCBjb25zdCBV
UkwmIHJlcG9ydFVSTCwgUmVmPEZvcgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocmVw
b3J0VVJMKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIGlmIChwcm9jZXNz
Q29udGVudFJ1bGVMaXN0c0ZvckxvYWQoZnJhbWUsIHJlcXVlc3QsIENvbnRlbnRFeHRlbnNpb25z
OjpSZXNvdXJjZVR5cGU6Ok90aGVyKSkKKyAgICBpZiAocHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNG
b3JMb2FkKGZyYW1lLCByZXF1ZXN0LCBDb250ZW50RXh0ZW5zaW9uczo6UmVzb3VyY2VUeXBlOjpD
U1BSZXBvcnQpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwCmluZGV4IDU0YjgxYmZiZWRiNWQ5Nzk2NjI5NmRmOGI5
NWNkZDU5YjQwNzc0NmMuLjJlZGVlYmQ0OTAxMzExM2I4ZDM2YjMwMWU2YzQ5ODJlNGQxYmM2NDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5jcHAKQEAgLTMyLDgg
KzMyLDcgQEAKICNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyB7CituYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCiBPcHRp
b25TZXQ8UmVzb3VyY2VUeXBlPiB0b1Jlc291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0
eXBlLCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXF1ZXN0ZXIgcmVxdWVzdGVyKQogewpAQCAtOTgs
MTMgKzk3LDEzIEBAIHN0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PFJlc291cmNlVHlwZT4+IHJlYWRS
ZXNvdXJjZVR5cGUoU3RyaW5nVmlldyBuYW1lKQogICAgIGlmIChuYW1lID09ICJmb250IikKICAg
ICAgICAgcmV0dXJuIHsgUmVzb3VyY2VUeXBlOjpGb250IH07CiAgICAgaWYgKG5hbWUgPT0gInJh
dyIpCi0gICAgICAgIHJldHVybiB7eyBSZXNvdXJjZVR5cGU6OkZldGNoLCBSZXNvdXJjZVR5cGU6
OldlYlNvY2tldCwgUmVzb3VyY2VUeXBlOjpPdGhlciwgUmVzb3VyY2VUeXBlOjpQaW5nIH19Owor
ICAgICAgICByZXR1cm4geyB7IFJlc291cmNlVHlwZTo6RmV0Y2gsIFJlc291cmNlVHlwZTo6V2Vi
U29ja2V0LCBSZXNvdXJjZVR5cGU6Ok90aGVyLCBSZXNvdXJjZVR5cGU6OlBpbmcgfSB9OwogICAg
IGlmIChuYW1lID09ICJ3ZWJzb2NrZXQiKQogICAgICAgICByZXR1cm4geyBSZXNvdXJjZVR5cGU6
OldlYlNvY2tldCB9OwogICAgIGlmIChuYW1lID09ICJmZXRjaCIpCiAgICAgICAgIHJldHVybiB7
IFJlc291cmNlVHlwZTo6RmV0Y2ggfTsKICAgICBpZiAobmFtZSA9PSAib3RoZXIiKQotICAgICAg
ICByZXR1cm4ge3sgUmVzb3VyY2VUeXBlOjpPdGhlciwgUmVzb3VyY2VUeXBlOjpQaW5nIH19Owor
ICAgICAgICByZXR1cm4geyB7IFJlc291cmNlVHlwZTo6T3RoZXIsIFJlc291cmNlVHlwZTo6UGlu
ZywgUmVzb3VyY2VUeXBlOjpDU1BSZXBvcnQgfSB9OwogICAgIGlmIChuYW1lID09ICJzdmctZG9j
dW1lbnQiKQogICAgICAgICByZXR1cm4geyBSZXNvdXJjZVR5cGU6OlNWR0RvY3VtZW50IH07CiAg
ICAgaWYgKG5hbWUgPT0gIm1lZGlhIikKQEAgLTExMyw2ICsxMTIsOCBAQCBzdGQ6Om9wdGlvbmFs
PE9wdGlvblNldDxSZXNvdXJjZVR5cGU+PiByZWFkUmVzb3VyY2VUeXBlKFN0cmluZ1ZpZXcgbmFt
ZSkKICAgICAgICAgcmV0dXJuIHsgUmVzb3VyY2VUeXBlOjpQb3B1cCB9OwogICAgIGlmIChuYW1l
ID09ICJwaW5nIikKICAgICAgICAgcmV0dXJuIHsgUmVzb3VyY2VUeXBlOjpQaW5nIH07CisgICAg
aWYgKG5hbWUgPT0gImNzcC1yZXBvcnQiKQorICAgICAgICByZXR1cm4geyBSZXNvdXJjZVR5cGU6
OkNTUFJlcG9ydCB9OwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKQEAgLTE0OSw3ICsx
NTAsNiBAQCBSZXNvdXJjZUZsYWdzIFJlc291cmNlTG9hZEluZm86OmdldFJlc291cmNlRmxhZ3Mo
KSBjb25zdAogICAgIHJldHVybiBmbGFnczsKIH0KIAotfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4
dGVuc2lvbnMKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKaW5kZXggZTA4ZWI4MmQw
NTBkN2U3ZTdiNmU5MDI1ZjBlNGRlZTNlZTdjZmZkNC4uYTlhYzA3YmU5YmIyOWEzYmJiOWY3YWQ1
YWZjNmJlMzc4OGE3MWQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5m
by5oCkBAIC0zMSwxMCArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBDb250ZW50
RXh0ZW5zaW9ucyB7CituYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCi1l
bnVtIGNsYXNzIFJlc291cmNlVHlwZSA6IHVpbnQxNl90IHsKK2VudW0gY2xhc3MgUmVzb3VyY2VU
eXBlIDogdWludDMyX3QgewogICAgIERvY3VtZW50ID0gMHgwMDAxLAogICAgIEltYWdlID0gMHgw
MDAyLAogICAgIFN0eWxlU2hlZXQgPSAweDAwMDQsCkBAIC00NywzNiArNDYsMzcgQEAgZW51bSBj
bGFzcyBSZXNvdXJjZVR5cGUgOiB1aW50MTZfdCB7CiAgICAgRmV0Y2ggPSAweDAyMDAsCiAgICAg
V2ViU29ja2V0ID0gMHgwNDAwLAogICAgIE90aGVyID0gMHgwODAwLAorICAgIENTUFJlcG9ydCA9
IDB4MTAwMDAsCiB9OwotY29uc3QgdWludDE2X3QgUmVzb3VyY2VUeXBlTWFzayA9IDB4MEZGRjsK
K3N0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgUmVzb3VyY2VUeXBlTWFzayA9IDB4MTBGRkY7CiAK
LWVudW0gY2xhc3MgTG9hZFR5cGUgOiB1aW50MTZfdCB7CitlbnVtIGNsYXNzIExvYWRUeXBlIDog
dWludDMyX3QgewogICAgIEZpcnN0UGFydHkgPSAweDEwMDAsCiAgICAgVGhpcmRQYXJ0eSA9IDB4
MjAwMCwKIH07Ci1jb25zdCB1aW50MTZfdCBMb2FkVHlwZU1hc2sgPSAweDMwMDA7CitzdGF0aWMg
Y29uc3RleHByIHVpbnQzMl90IExvYWRUeXBlTWFzayA9IDB4MzAwMDsKIAotZW51bSBjbGFzcyBM
b2FkQ29udGV4dCA6IHVpbnQxNl90IHsKK2VudW0gY2xhc3MgTG9hZENvbnRleHQgOiB1aW50MzJf
dCB7CiAgICAgVG9wRnJhbWUgPSAweDQwMDAsCiAgICAgQ2hpbGRGcmFtZSA9IDB4ODAwMCwKIH07
Ci1jb25zdCB1aW50MTZfdCBMb2FkQ29udGV4dE1hc2sgPSAweEMwMDA7CitzdGF0aWMgY29uc3Rl
eHByIHVpbnQzMl90IExvYWRDb250ZXh0TWFzayA9IDB4QzAwMDsKIAotc3RhdGljX2Fzc2VydCgh
KFJlc291cmNlVHlwZU1hc2sgJiBMb2FkVHlwZU1hc2spLCAiUmVzb3VyY2VUeXBlTWFzayBhbmQg
TG9hZFR5cGVNYXNrIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgYmVjYXVzZSB0aGV5IGFy
ZSBzdG9yZWQgaW4gdGhlIHNhbWUgdWludDE2X3QiKTsKLXN0YXRpY19hc3NlcnQoIShSZXNvdXJj
ZVR5cGVNYXNrICYgTG9hZENvbnRleHRNYXNrKSwgIlJlc291cmNlVHlwZU1hc2sgYW5kIExvYWRD
b250ZXh0TWFzayBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGJlY2F1c2UgdGhleSBhcmUg
c3RvcmVkIGluIHRoZSBzYW1lIHVpbnQxNl90Iik7Ci1zdGF0aWNfYXNzZXJ0KCEoTG9hZENvbnRl
eHRNYXNrICYgTG9hZFR5cGVNYXNrKSwgIkxvYWRDb250ZXh0TWFzayBhbmQgTG9hZFR5cGVNYXNr
IHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgYmVjYXVzZSB0aGV5IGFyZSBzdG9yZWQgaW4g
dGhlIHNhbWUgdWludDE2X3QiKTsKK3N0YXRpY19hc3NlcnQoIShSZXNvdXJjZVR5cGVNYXNrICYg
TG9hZFR5cGVNYXNrKSwgIlJlc291cmNlVHlwZU1hc2sgYW5kIExvYWRUeXBlTWFzayBzaG91bGQg
YmUgbXV0dWFsbHkgZXhjbHVzaXZlIGJlY2F1c2UgdGhleSBhcmUgc3RvcmVkIGluIHRoZSBzYW1l
IHVpbnQzMl90Iik7CitzdGF0aWNfYXNzZXJ0KCEoUmVzb3VyY2VUeXBlTWFzayAmIExvYWRDb250
ZXh0TWFzayksICJSZXNvdXJjZVR5cGVNYXNrIGFuZCBMb2FkQ29udGV4dE1hc2sgc2hvdWxkIGJl
IG11dHVhbGx5IGV4Y2x1c2l2ZSBiZWNhdXNlIHRoZXkgYXJlIHN0b3JlZCBpbiB0aGUgc2FtZSB1
aW50MzJfdCIpOworc3RhdGljX2Fzc2VydCghKExvYWRDb250ZXh0TWFzayAmIExvYWRUeXBlTWFz
ayksICJMb2FkQ29udGV4dE1hc2sgYW5kIExvYWRUeXBlTWFzayBzaG91bGQgYmUgbXV0dWFsbHkg
ZXhjbHVzaXZlIGJlY2F1c2UgdGhleSBhcmUgc3RvcmVkIGluIHRoZSBzYW1lIHVpbnQzMl90Iik7
CiAKLXR5cGVkZWYgdWludDE2X3QgUmVzb3VyY2VGbGFnczsKK3VzaW5nIFJlc291cmNlRmxhZ3Mg
PSB1aW50MzJfdDsKIAogLy8gVGhlIGZpcnN0IDMyIGJpdHMgb2YgYSB1aW50NjRfdCBhY3Rpb24g
YXJlIHVzZWQgZm9yIHRoZSBhY3Rpb24gbG9jYXRpb24uCi0vLyBUaGUgbmV4dCAxNiBiaXRzIGFy
ZSB1c2VkIGZvciB0aGUgZmxhZ3MgKFJlc291cmNlVHlwZSBhbmQgTG9hZFR5cGUpLgorLy8gVGhl
IG5leHQgMjQgYml0cyBhcmUgdXNlZCBmb3IgdGhlIGZsYWdzIChSZXNvdXJjZVR5cGUgYW5kIExv
YWRUeXBlKS4KIC8vIFRoZSBuZXh0IGJpdCBpcyB1c2VkIHRvIG1hcmsgYWN0aW9ucyB0aGF0IGFy
ZSBmcm9tIGEgcnVsZSB3aXRoIGFuIGlmLWRvbWFpbi4KIC8vICAgICBBY3Rpb25zIGZyb20gcnVs
ZXMgd2l0aCB1bmxlc3MtZG9tYWluIGNvbmRpdGlvbnMgYXJlIGRpc3Rpbmd1aXNoZWQgZnJvbQog
Ly8gICAgIHJ1bGVzIHdpdGggaWYtZG9tYWluIGNvbmRpdGlvbnMgYnkgbm90IGhhdmluZyB0aGlz
IGJpdCBzZXQuCiAvLyAgICAgQWN0aW9ucyBmcm9tIHJ1bGVzIHdpdGggbm8gY29uZGl0aW9ucyBh
cmUgcHV0IGluIHRoZSBERkEgd2l0aG91dCBjb25kaXRpb25zLgogLy8gVGhlIHZhbHVlcyAtMSBh
bmQgLTIgYXJlIHVzZWQgZm9yIHJlbW92ZWQgYW5kIGVtcHR5IHZhbHVlcyBpbiBIYXNoVGFibGVz
LgotY29uc3QgdWludDY0X3QgQWN0aW9uRmxhZ01hc2sgPSAweDAwMDBGRkZGMDAwMDAwMDA7Ci1j
b25zdCB1aW50NjRfdCBJZkNvbmRpdGlvbkZsYWcgPSAweDAwMDEwMDAwMDAwMDAwMDA7CitzdGF0
aWMgY29uc3RleHByIHVpbnQ2NF90IEFjdGlvbkZsYWdNYXNrID0gMHgwMEZGRkZGRjAwMDAwMDAw
Oworc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBJZkNvbmRpdGlvbkZsYWcgPSAweDAxMDAwMDAw
MDAwMDAwMDA7CiAKIE9wdGlvblNldDxSZXNvdXJjZVR5cGU+IHRvUmVzb3VyY2VUeXBlKENhY2hl
ZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXF1ZXN0ZXIpOwogc3RkOjpv
cHRpb25hbDxPcHRpb25TZXQ8UmVzb3VyY2VUeXBlPj4gcmVhZFJlc291cmNlVHlwZShTdHJpbmdW
aWV3KTsKQEAgLTkzLDcgKzkzLDYgQEAgc3RydWN0IFJlc291cmNlTG9hZEluZm8gewogICAgIFJl
c291cmNlRmxhZ3MgZ2V0UmVzb3VyY2VGbGFncygpIGNvbnN0OwogfTsKIAotfSAvLyBuYW1lc3Bh
Y2UgQ29udGVudEV4dGVuc2lvbnMKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhlOTBlODcxN2FlNjRiZDQxYmE4
ZjdlNDU2OTAxMjYxNmU1OTdjODEuLjdlMDI4ZjE4ZmEyODBhMjBhZjNkYzU3NjcwYzNkMmJmYmI3
OGYyMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMS0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBjc3AtcmVwb3J0IHJlc291cmNlIHR5cGUg
dG8gV0tDb250ZW50UnVsZUxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzY3NQorICAgICAgICA8cmRhcjovLzcxODY5ODkzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNvbXBhcmVDb250ZW50cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0
Tm90aWZpY2F0aW9uLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjEtMTEtMjkgIEpvbmF0aGFu
IEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRjb3JlcHldIERl
bGV0ZSB1bnVzZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAppbmRleCBiYzU0
ODRmM2YwNmM1YThiMTg2MjJhYmZlYTc4MDA1YmNiOWY4ZjdjLi4xYjQzZGM4NjkyY2JjNjQ5NzFj
MTdkZjA0M2E5ODk0OTFhZmI1M2JkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTU0MCw3ICs1NDAsNyBA
QCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIERpc3Rpbmd1aXNoYWJsZVByZWZpeEFyZU5v
dE1lcmdlZCkKICAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJo
dHRwOi8vZm9vLm9yZ2cvIiksIHsgdmFyaWFudEluZGV4PENvbnRlbnRFeHRlbnNpb25zOjpCbG9j
a0xvYWRBY3Rpb24+IH0pOwogfQogCi1zdGF0aWMgdm9pZCBjb21wYXJlQ29udGVudHMoY29uc3Qg
Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIGEsIGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIGIpCitzdGF0aWMgdm9pZCBjb21wYXJlQ29udGVudHMoY29u
c3QgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyYgYSwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgYikKIHsKICAgICBFWFBFQ1RfRVEoYS5zaXplKCksIGIuc2l6ZSgpKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYi5zaXplKCk7ICsraSkKQEAgLTU2Miw3ICs1NjIsNyBAQCBU
RVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFNlYXJjaFN1ZmZpeGVzV2l0aElkZW50aWNhbEFj
dGlvbkFyZU1lcmdlZCkKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2Rl
PiBieXRlY29kZTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21waWxlciBj
b21waWxlcihkZmEsIGJ5dGVjb2RlKTsKICAgICBjb21waWxlci5jb21waWxlKCk7Ci0gICAgQ29u
dGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgaW50ZXJwcmV0ZXIoYnl0ZWNv
ZGUuZGF0YSgpLCBieXRlY29kZS5zaXplKCkpOworICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIg
aW50ZXJwcmV0ZXIoeyBieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUoKSB9KTsKICAgICBj
b21wYXJlQ29udGVudHMoaW50ZXJwcmV0ZXIuaW50ZXJwcmV0KCJmb28ub3JnIiwgMCksIHsgMCB9
KTsKICAgICBjb21wYXJlQ29udGVudHMoaW50ZXJwcmV0ZXIuaW50ZXJwcmV0KCJiYS5vcmciLCAw
KSwgeyAwIH0pOwogICAgIGNvbXBhcmVDb250ZW50cyhpbnRlcnByZXRlci5pbnRlcnByZXQoImJh
ci5vcmciLCAwKSwgeyB9KTsKQEAgLTU4OCw3ICs1ODgsNyBAQCBURVNUX0YoQ29udGVudEV4dGVu
c2lvblRlc3QsIFNlYXJjaFN1ZmZpeGVzV2l0aERpc3Rpbmd1aXNoYWJsZUFjdGlvbkFyZU5vdE1l
cmdlZAogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+IGJ5dGVjb2Rl
OwogICAgIENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyIGNvbXBpbGVyKGRm
YSwgYnl0ZWNvZGUpOwogICAgIGNvbXBpbGVyLmNvbXBpbGUoKTsKLSAgICBDb250ZW50RXh0ZW5z
aW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcihieXRlY29kZS5kYXRhKCks
IGJ5dGVjb2RlLnNpemUoKSk7CisgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRl
cih7IGJ5dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpIH0pOwogICAgIGNvbXBhcmVDb250
ZW50cyhpbnRlcnByZXRlci5pbnRlcnByZXQoImZvby5vcmciLCAwKSwgeyAwIH0pOwogICAgIGNv
bXBhcmVDb250ZW50cyhpbnRlcnByZXRlci5pbnRlcnByZXQoImJhLm9yZyIsIDApLCB7IDEgfSk7
CiAgICAgY29tcGFyZUNvbnRlbnRzKGludGVycHJldGVyLmludGVycHJldCgiYmFyLm9yZyIsIDAp
LCB7IH0pOwpAQCAtOTcxLDkgKzk3MSw5IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwg
U3RyaW5nQ29tYmluaW5nKQogICAgIEFTU0VSVF9FUShzZXF1ZW5jZUluc3RhbmNlcyhkYXRhLmFj
dGlvbnMsICJHR0ciKSwgMSk7CiAKICAgICBBU1NFUlRfRVEoZGF0YS5hY3Rpb25zLnNpemUoKSwg
Nzh1KTsKLSAgICBBU1NFUlRfRVEoZGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnMuc2l6ZSgp
LCAgMzEzdSk7Ci0gICAgQVNTRVJUX0VRKGRhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zLnNpemUo
KSwgIDV1KTsKLSAgICBBU1NFUlRfRVEoZGF0YS50b3BVUkxGaWx0ZXJzLnNpemUoKSwgIDV1KTsK
KyAgICBBU1NFUlRfRVEoZGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnMuc2l6ZSgpLCAyODh1
KTsKKyAgICBBU1NFUlRfRVEoZGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnMuc2l6ZSgpLCA1dSk7
CisgICAgQVNTRVJUX0VRKGRhdGEudG9wVVJMRmlsdGVycy5zaXplKCksIDV1KTsKICAgICBBU1NF
UlRfRkFMU0UoZGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4pOwogCiAgICAgYXV0byBl
eHRlbnNpb25XaXRoRmxhZ3MgPSBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3Jl
YXRlKCJbIgpAQCAtMTEwOCw3ICsxMTA4LDcgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0
LCBVc2VsZXNzVGVybXNNYXRjaGluZ0V2ZXJ5dGhpbmdBcmVFbGltaW5hdGVkKQogICAgIFZlY3Rv
cjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+IGJ5dGVjb2RlOwogICAgIENvbnRlbnRF
eHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyIGNvbXBpbGVyKGRmYSwgYnl0ZWNvZGUpOwog
ICAgIGNvbXBpbGVyLmNvbXBpbGUoKTsKLSAgICBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNv
ZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcihieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUo
KSk7CisgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcih7IGJ5dGVjb2RlLmRh
dGEoKSwgYnl0ZWNvZGUuc2l6ZSgpIH0pOwogICAgIGNvbXBhcmVDb250ZW50cyhpbnRlcnByZXRl
ci5pbnRlcnByZXQoImViIiwgMCksIHsgfSk7CiAgICAgY29tcGFyZUNvbnRlbnRzKGludGVycHJl
dGVyLmludGVycHJldCgid2UiLCAwKSwgeyB9KTsKICAgICBjb21wYXJlQ29udGVudHMoaW50ZXJw
cmV0ZXIuaW50ZXJwcmV0KCJ3ZWViIiwgMCksIHsgfSk7CkBAIC0xMjY3LDcgKzEyNjcsNyBAQCBU
RVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIExhcmdlSnVtcHMpCiAgICAgICAgIGNvbWJpbmVk
Qnl0ZWNvZGUuYXBwZW5kVmVjdG9yKGJ5dGVjb2RlKTsKICAgICB9CiAgICAgCi0gICAgQ29udGVu
dEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgaW50ZXJwcmV0ZXIoJmNvbWJpbmVk
Qnl0ZWNvZGVbMF0sIGNvbWJpbmVkQnl0ZWNvZGUuc2l6ZSgpKTsKKyAgICBERkFCeXRlY29kZUlu
dGVycHJldGVyIGludGVycHJldGVyKHsgY29tYmluZWRCeXRlY29kZS5kYXRhKCksIGNvbWJpbmVk
Qnl0ZWNvZGUuc2l6ZSgpIH0pOwogICAgIAogICAgIHBhdHRlcm5JZCA9IDA7CiAgICAgZm9yIChj
aGFyIGMxID0gJ0EnOyBjMSA8PSAnWic7ICsrYzEpIHsKQEAgLTE3MDgsNyArMTcwOCw3IEBAIFRF
U1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgU3BsaXR0aW5nTGFyZ2VORkFzKQogICAgICAgICAg
ICAgY29tYmluZWRCeXRlY29kZS5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRl
ciBpbnRlcnByZXRlcigmY29tYmluZWRCeXRlY29kZVswXSwgY29tYmluZWRCeXRlY29kZS5zaXpl
KCkpOworICAgICAgICBERkFCeXRlY29kZUludGVycHJldGVyIGludGVycHJldGVyKHsgY29tYmlu
ZWRCeXRlY29kZS5kYXRhKCksIGNvbWJpbmVkQnl0ZWNvZGUuc2l6ZSgpIH0pOwogICAgICAgICAK
ICAgICAgICAgRVhQRUNUX0VRKGludGVycHJldGVyLmludGVycHJldCgiQUJCQlgiLCAwKS5zaXpl
KCksIDF1bGwpOwogICAgICAgICBFWFBFQ1RfRVEoaW50ZXJwcmV0ZXIuaW50ZXJwcmV0KCJBQ0ND
WCIsIDApLnNpemUoKSwgMXVsbCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
Lm1tCmluZGV4IGI5M2EyOTdjZTI5NmMyNjJkMjI0MTc1MjMzMWFmY2E0NWVhMzFmMmUuLmVkMzIx
NzY3N2RjNTU5NzA2MDVjNDYxYmM2OWJiN2VhMGFkNDI0NTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1
bGVMaXN0Tm90aWZpY2F0aW9uLm1tCkBAIC00MTYsNiArNDE2LDI2IEBAIFRFU1QoQ29udGVudFJ1
bGVMaXN0LCBUb3BGcmFtZUNoaWxkRnJhbWUpCiAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3
IF90ZXN0X3dhaXRGb3JBbGVydF0sICJpZnJhbWUgZmV0Y2hlZCBzdWNjZXNzZnVsbHkiKTsKIH0K
IAorVEVTVChDb250ZW50UnVsZUxpc3QsIENTUFJlcG9ydCkKK3sKKyAgICBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyIHNlcnZlcih7IHsgIi8iLCB7IHsKKyAgICAgICAgeyAiQ29udGVudC1TZWN1
cml0eS1Qb2xpY3kiLCAiZnJhbWUtc3JjICdub25lJzsgcmVwb3J0LXVyaSByZXNvdXJjZXMvc2F2
ZS1yZXBvcnQucHkiIH0KKyAgICB9LCAiPGlmcmFtZSBzcmM9XCJodHRwczovL3dlYmtpdC5vcmcv
XCI+PC9pZnJhbWU+IiB9IH0gfSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZENvbnRlbnRSdWxlTGlzdDptYWtlQ29udGVudFJ1bGVMaXN0
KEAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIi4qXCIsXCJyZXNvdXJjZS10eXBlXCI6W1wiY3NwLXJlcG9ydFwiXX19XSIpLmdl
dCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlv
bkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07
CisgICAgd2hpbGUgKG5vdGlmaWNhdGlvbkxpc3QuaXNFbXB0eSgpKQorICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOworCisgICAgVVJMIGV4cGVjdGVkVVJMID0gc2Vy
dmVyLnJlcXVlc3QoKS5VUkw7CisgICAgZXhwZWN0ZWRVUkwuc2V0UGF0aCgiL3Jlc291cmNlcy9z
YXZlLXJlcG9ydC5weSIpOworICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZFVSTC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBub3RpZmljYXRpb25MaXN0LmZpcnN0KCkudXJsLnV0ZjgoKS5kYXRhKCkp
OworfQorCiBURVNUKENvbnRlbnRSdWxlTGlzdCwgTGVnYWN5VmVyc2lvbkFuZE5hbWUpCiB7CiAg
ICAgTlNTdHJpbmcgKmRpcmVjdG9yeSA9IFtOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRSdWxlTGlzdFRlc3REaXJlY3RvcnkiXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445513</attachid>
            <date>2021-11-30 21:04:06 -0800</date>
            <delta_ts>2021-12-01 11:07:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233675-20211130210405.patch</filename>
            <type>text/plain</type>
            <size>69949</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGEzZGEzNmE5YTRhYjY1
MjE1NjQwODA5ZWFiZmNiMmQzNzRhZTA1YS4uNDYyZTczNDk0NDE1NWFlODYyM2E2ODgzMzQ4ZDNl
ODc4MTIyNWJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIxLTExLTMwICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGNz
cC1yZXBvcnQgcmVzb3VyY2UgdHlwZSB0byBXS0NvbnRlbnRSdWxlTGlzdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc1CisgICAgICAgIDxyZGFy
Oi8vNzE4Njk4OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBmZWF0dXJlIGlzIHRyaXZpYWwgdG8gaW1wbGVtZW50IGFuZCB0ZXN0IGV4Y2Vw
dCBmb3Igb25lIHNtYWxsIHRoaW5nOiB3ZSB1c2UgYSB1aW50MTZfdCB0byByZXByZXNlbnQgdGhl
CisgICAgICAgIHJlc291cmNlIHR5cGUgYW5kIGNvbnRleHQgYW5kIGZpcnN0IHBhcnR5IGZsYWdz
LCBhbmQgd2UgYWxyZWFkeSBoYXZlIDE2IG9mIHRoZW0uICBTbyB3ZSBuZWVkZWQgdG8gZ2V0IGFu
b3RoZXIKKyAgICAgICAgYml0IGZyb20gc29tZXdoZXJlLiAgV2hhdCBJIGRpZCB3YXMgbWFrZSB0
aGUgZmxhZ3MgaGF2ZSBhIHZhcmlhYmxlIGxlbmd0aCBmcm9tIDEtMyBieXRlcyBpbnN0ZWFkIG9m
IGp1c3QgMiBieXRlcy4KKyAgICAgICAgSSB1c2VkIHRoZSB1bnVzZWQgdXBwZXIgYml0cyBpbiB0
aGUgaW5zdHJ1Y3Rpb24gdG8gaW5kaWNhdGUgdGhlIGxlbmd0aCBvZiB0aGUgZmxhZ3MsIGFuZCBp
ZiB0aGUgdXBwZXIgYml0cyB3ZXJlIDAsCisgICAgICAgIHRoZW4gSSBhc3N1bWUgaXQgd2FzIDIg
Ynl0ZXMsIHdoaWNoIGlzIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggZXhpc3RpbmcgY29tcGlsZWQg
V0tDb250ZW50UnVsZUxpc3RzLCBzbyBubyBuZWVkCisgICAgICAgIHRvIGluY3JlbWVudCB0aGUg
dmVyc2lvbiBudW1iZXIgYW5kIGZvcmNlIGEgcmVjb21waWxlLiAgSXQgd29ya2VkIHNvIHdlbGwg
dGhhdCBJIGRpZCB0aGUgc2FtZSB0aGluZyB3aXRoIHRoZSBhY3Rpb25zLAorICAgICAgICB3aGlj
aCB3ZXJlIDQgYnl0ZXMgYnV0IGFyZSBub3cgMS00IGJ5dGVzLiAgVGhpcyByZWR1Y2VkIHRoZSBj
b21waWxlZCBiaW5hcnkgc2l6ZSBvZiBvbmUgb2YgdGhlIHRlc3RzIGZyb20gMzEzIGJ5dGVzCisg
ICAgICAgIHRvIDI4OCBieXRlcywgYSByZWR1Y3Rpb24gb2YgYWJvdXQgOCUgb2YgdGhlIGJpbmFy
eSBzaXplIG9mIHRoZSBjb21waWxlZCBXS0NvbnRlbnRSdWxlTGlzdHMuICBMYXJnZXIgbGlzdHMg
d2lsbCBzZWUKKyAgICAgICAgc2xpZ2h0bHkgbGVzcyBiaW5hcnkgc2l6ZSByZWR1Y3Rpb24sIGJ1
dCBzdGlsbCBhbiBpbXByb3ZlbWVudC4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkNvbnRlbnRFeHRlbnNpb246OkNvbnRlbnRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OnBvcHVsYXRlQ29uZGl0aW9uQ2Fj
aGVJZk5lZWRlZCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQgY29uc3QpOgorICAg
ICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6c21hbGxlc3RQb3NzaWJsZUp1bXBTaXplKToKKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6aW5zdHJ1
Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjphcHBlbmQyNEJpdEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OmFwcGVuZFplcm9lcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
c2V0Qml0cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Ynl0ZWNvZGVG
bGFnc1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmJ5dGVjb2Rl
QWN0aW9uU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6YXBwZW5k
VmFyaWFibGVMZW5ndGhJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0QXBwZW5kQWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0SnVtcCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21waWxl
cjo6ZW1pdENoZWNrVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkRGQUJ5dGVjb2RlQ29tcGlsZXI6OmVtaXRDaGVja1ZhbHVlUmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlQ29tcGlsZXI6OnRyYW5zaXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBp
bGVyOjpjb21waWxlSnVtcFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjpub2RlVHJhbnNpdGlvbnNNYXhCeXRlY29kZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlQ29tcGls
ZXI6OmNvbXBpbGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldEJp
dHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldDI0Qml0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2V0SW5zdHJ1Y3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Omp1bXBTaXplSW5CeXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29uc3VtZUludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbnN1bWUyNEJpdEludGVnZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Omhhc0ZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpoYXNBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OmNvbnN1bWVSZXNvdXJjZUZsYWdzQW5kSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbnN1bWVBY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldEp1bXBTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpnZXRKdW1wRGlzdGFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Om1hdGNoZXNDb25kaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVy
cHJldEFwcGVuZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUludGVy
cHJldGVyOjppbnRlcnBldEp1bXBUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6YWN0aW9uc01hdGNoaW5nRXZlcnl0aGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRl
cnByZXRlcjo6aW50ZXJwcmV0V2l0aENvbmRpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldCk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkRG
QUJ5dGVjb2RlSW50ZXJwcmV0ZXIpOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpyZWFkUmVzb3VyY2VUeXBlKToKKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VMb2FkSW5mby5oOgorCiAyMDIxLTExLTI5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGJhc2ljIGhldXJpc3RpYyBmb3Igc2l6aW5n
IHRleHQgaW4gaW1hZ2Ugb3ZlcmxheSBibG9ja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKaW5kZXggN2U0YzEyODc1NzRm
ZTBkOTc3NzFmODRiOTVhOTQ3ZDI2NzdjZDM1MS4uZGUyMjk0ZTY1OGRhYzc4ZTIzY2Y1MDE3NTFi
ODQzOGZhYWUxNmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgQ29udGVudEV4dGVu
c2lvbjo6Q29udGVudEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFJlZjxDb21w
aWxlZENvbnRlbnQKICAgICAsIG1fY29tcGlsZWRFeHRlbnNpb24oV1RGTW92ZShjb21waWxlZEV4
dGVuc2lvbikpCiAgICAgLCBtX2V4dGVuc2lvbkJhc2VVUkwoV1RGTW92ZShleHRlbnNpb25CYXNl
VVJMKSkKIHsKLSAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdpdGhvdXRDb25kaXRpb25zKG1f
Y29tcGlsZWRFeHRlbnNpb24tPmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCksIG1f
Y29tcGlsZWRFeHRlbnNpb24tPmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3Ro
KCkpOwotICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0aENvbmRpdGlvbnMobV9jb21waWxl
ZEV4dGVuc2lvbi0+ZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoKSwgbV9jb21waWxlZEV4
dGVuc2lvbi0+ZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgREZB
Qnl0ZWNvZGVJbnRlcnByZXRlciB3aXRob3V0Q29uZGl0aW9ucyh7IG1fY29tcGlsZWRFeHRlbnNp
b24tPmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCksIG1fY29tcGlsZWRFeHRlbnNp
b24tPmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CisgICAgREZB
Qnl0ZWNvZGVJbnRlcnByZXRlciB3aXRoQ29uZGl0aW9ucyh7IG1fY29tcGlsZWRFeHRlbnNpb24t
PmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKCksIG1fY29tcGlsZWRFeHRlbnNpb24tPmZp
bHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CiAgICAgZm9yICh1aW50NjRf
dCBhY3Rpb24gOiB3aXRob3V0Q29uZGl0aW9ucy5hY3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nKCkp
IHsKICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihhY3Rpb24pID09IGFjdGlv
bik7CiAgICAgICAgIG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zLmFwcGVuZChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oYWN0aW9uKSk7CkBAIC0xMjMsOCArMTIzLDggQEAgdm9pZCBD
b250ZW50RXh0ZW5zaW9uOjpjb21waWxlR2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KCkKIHZv
aWQgQ29udGVudEV4dGVuc2lvbjo6cG9wdWxhdGVDb25kaXRpb25DYWNoZUlmTmVlZGVkKGNvbnN0
IFVSTCYgdG9wVVJMKQogewogICAgIGlmIChtX2NhY2hlZFRvcFVSTCAhPSB0b3BVUkwpIHsKLSAg
ICAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcihtX2NvbXBpbGVkRXh0ZW5z
aW9uLT50b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSwgbV9jb21waWxlZEV4dGVuc2lvbi0+dG9wVVJM
RmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkpOwotICAgICAgICBjb25zdGV4cHIgdWludDE2X3QgYWxs
TG9hZFR5cGVzQW5kUmVzb3VyY2VUeXBlcyA9IExvYWRUeXBlTWFzayB8IFJlc291cmNlVHlwZU1h
c2sgfCBMb2FkQ29udGV4dE1hc2s7CisgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgaW50
ZXJwcmV0ZXIoeyBtX2NvbXBpbGVkRXh0ZW5zaW9uLT50b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSwg
bV9jb21waWxlZEV4dGVuc2lvbi0+dG9wVVJMRmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkgfSk7Cisg
ICAgICAgIGNvbnN0ZXhwciBSZXNvdXJjZUZsYWdzIGFsbExvYWRUeXBlc0FuZFJlc291cmNlVHlw
ZXMgPSBMb2FkVHlwZU1hc2sgfCBSZXNvdXJjZVR5cGVNYXNrIHwgTG9hZENvbnRleHRNYXNrOwog
ICAgICAgICBTdHJpbmcgc3RyaW5nID0gbV9jb21waWxlZEV4dGVuc2lvbi0+Y29uZGl0aW9uc0Fw
cGx5T25seVRvRG9tYWluKCkgPyB0b3BVUkwuaG9zdCgpLnRvU3RyaW5nKCkgOiB0b3BVUkwuc3Ry
aW5nKCk7CiAgICAgICAgIGF1dG8gdG9wVVJMQWN0aW9ucyA9IGludGVycHJldGVyLmludGVycHJl
dChzdHJpbmcudXRmOCgpLCBhbGxMb2FkVHlwZXNBbmRSZXNvdXJjZVR5cGVzKTsKICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAppbmRleCBjMDNhMjRiNTdiMDUzOTk0NWM0MjdjN2Y3
NjFkZWU0NjQwMTQxMjY4Li43MzFhNjhlNDI2MTkwZDMxZDdjNTFhZWQ0YTIwNzEzZDhiNTQ0MmIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKQEAgLTEyMSwxMSArMTIxLDExIEBAIGF1dG8g
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjphY3Rpb25zRm9yUmVzb3VyY2VMb2FkKGNvbnN0IFJl
c291cmNlTG9hZEluZm8mIHJlCiAKICAgICAgICAgY29uc3QgQ29tcGlsZWRDb250ZW50RXh0ZW5z
aW9uJiBjb21waWxlZEV4dGVuc2lvbiA9IGNvbnRlbnRFeHRlbnNpb24tPmNvbXBpbGVkRXh0ZW5z
aW9uKCk7CiAgICAgICAgIAotICAgICAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdpdGhvdXRD
b25kaXRpb25zSW50ZXJwcmV0ZXIoY29tcGlsZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zQnl0ZWNvZGUoKSwgY29tcGlsZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhvdXRDb25kaXRp
b25zQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0
aG91dENvbmRpdGlvbnNJbnRlcnByZXRlcih7IGNvbXBpbGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRo
b3V0Q29uZGl0aW9uc0J5dGVjb2RlKCksIGNvbXBpbGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRob3V0
Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CiAgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJw
cmV0ZXI6OkFjdGlvbnMgd2l0aG91dENvbmRpdGlvbnNBY3Rpb25zID0gd2l0aG91dENvbmRpdGlv
bnNJbnRlcnByZXRlci5pbnRlcnByZXQodXJsQ1N0cmluZywgZmxhZ3MpOwogICAgICAgICAKICAg
ICAgICAgVVJMIHRvcFVSTCA9IHJlc291cmNlTG9hZEluZm8ubWFpbkRvY3VtZW50VVJMOwotICAg
ICAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdpdGhDb25kaXRpb25zSW50ZXJwcmV0ZXIoY29t
cGlsZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoKSwgY29tcGlsZWRF
eHRlbnNpb24uZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgICAg
IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0aENvbmRpdGlvbnNJbnRlcnByZXRlcih7IGNvbXBp
bGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKCksIGNvbXBpbGVkRXh0
ZW5zaW9uLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CiAgICAgICAg
IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgd2l0aENvbmRpdGlvbnNBY3Rpb25zID0g
d2l0aENvbmRpdGlvbnNJbnRlcnByZXRlci5pbnRlcnByZXRXaXRoQ29uZGl0aW9ucyh1cmxDU3Ry
aW5nLCBmbGFncywgY29udGVudEV4dGVuc2lvbi0+dG9wVVJMQWN0aW9ucyh0b3BVUkwpKTsKICAg
ICAgICAgCiAgICAgICAgIGNvbnN0IFNlcmlhbGl6ZWRBY3Rpb25CeXRlKiBhY3Rpb25zID0gY29t
cGlsZWRFeHRlbnNpb24uYWN0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0RGQUJ5dGVjb2RlLmgKaW5kZXggOTA2MTAzNDkxNTQ5NzVkM2FlY2EyMDQzMDk3MjMz
MjM0MzY2YWRmYy4uM2MwZGZhOWE1NzE4ODc2ZTZmOTgyMjdhMWFlZjVjYTE0MTc0NWFkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZS5oCkBAIC0y
NywxMSArMjcsOSBAQAogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKIAotbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIAotbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKK25hbWVz
cGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucyB7CiAKLXR5cGVkZWYgdWludDhfdCBERkFC
eXRlY29kZTsKK3VzaW5nIERGQUJ5dGVjb2RlID0gdWludDhfdDsKIAogLy8gSW5jcmVtZW50IENv
bnRlbnRFeHRlbnNpb25TdG9yZTo6Q3VycmVudENvbnRlbnRFeHRlbnNpb25GaWxlVmVyc2lvbgog
Ly8gd2hlbiBtYWtpbmcgYW55IG5vbi1iYWNrd2FyZHMtY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRo
ZSBieXRlY29kZS4KQEAgLTYwLDEzICs1OCwxMyBAQCBlbnVtIGNsYXNzIERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb24gOiB1aW50OF90IHsKICAgICBDaGVja1ZhbHVlUmFuZ2VDYXNlU2Vuc2l0aXZlID0g
MHg1LAogCiAgICAgLy8gQXBwZW5kQWN0aW9uIGhhcyBvbmUgYXJndW1lbnQ6Ci0gICAgLy8gVGhl
IGFjdGlvbiB0byBhcHBlbmQgKDQgYnl0ZXMpLgorICAgIC8vIFRoZSBhY3Rpb24gdG8gYXBwZW5k
ICgxLTQgYnl0ZXMpLgogICAgIEFwcGVuZEFjdGlvbiA9IDB4NiwKICAgICBBcHBlbmRBY3Rpb25X
aXRoSWZDb25kaXRpb24gPSAweDcsCiAgICAgCiAgICAgLy8gVGVzdEZsYWdzQW5kQXBwZW5kQWN0
aW9uIGhhcyB0d28gYXJndW1lbnRzOgotICAgIC8vIFRoZSBmbGFncyB0byBjaGVjayBiZWZvcmUg
YXBwZW5kaW5nICgyIGJ5dGVzKS4KLSAgICAvLyBUaGUgYWN0aW9uIHRvIGFwcGVuZCAoNCBieXRl
cykuCisgICAgLy8gVGhlIGZsYWdzIHRvIGNoZWNrIGJlZm9yZSBhcHBlbmRpbmcgKDEtMyBieXRl
cykuCisgICAgLy8gVGhlIGFjdGlvbiB0byBhcHBlbmQgKDEtNCBieXRlcykuCiAgICAgVGVzdEZs
YWdzQW5kQXBwZW5kQWN0aW9uID0gMHg4LAogICAgIFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbldp
dGhJZkNvbmRpdGlvbiA9IDB4OSwKIApAQCAtNzksNTcgKzc3LDUxIEBAIGVudW0gY2xhc3MgREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbiA6IHVpbnQ4X3QgewogfTsKIAogLy8gVGhlIGxhc3QgZm91ciBi
aXRzIGNvbnRhaW4gdGhlIGluc3RydWN0aW9uIHR5cGUuCi1jb25zdCB1aW50OF90IERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb25NYXNrID0gMHgwRjsKLWNvbnN0IHVpbnQ4X3QgREZBQnl0ZWNvZGVKdW1w
U2l6ZU1hc2sgPSAweEYwOworc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb25NYXNrID0gMHgwRjsKK3N0YXRpYyBjb25zdGV4cHIgdWludDhfdCBERkFCeXRlY29k
ZUp1bXBTaXplTWFzayA9IDB4RjA7CitzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgREZBQnl0ZWNv
ZGVGbGFnc1NpemVNYXNrID0gMHgzMDsKK3N0YXRpYyBjb25zdGV4cHIgdWludDhfdCBERkFCeXRl
Y29kZUFjdGlvblNpemVNYXNrID0gMHhDMDsKIAogLy8gREZBIGJ5dGVjb2RlIHN0YXJ0cyB3aXRo
IGEgNCBieXRlIGhlYWRlciB3aGljaCBjb250YWlucyB0aGUgc2l6ZSBvZiB0aGlzIERGQS4KLXR5
cGVkZWYgdWludDMyX3QgREZBSGVhZGVyOwordXNpbmcgREZBSGVhZGVyID0gdWludDMyX3Q7CisK
Ky8vIERGQUJ5dGVjb2RlRmxhZ3NTaXplIGFuZCBERkFCeXRlY29kZUFjdGlvblNpemUgYXJlIHN0
b3JlZCBpbiB0aGUgdG9wIGZvdXIgYml0cyBvZiB0aGUgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbnMg
dGhhdCBoYXZlIGZsYWdzIGFuZCBhY3Rpb25zLgorZW51bSBjbGFzcyBERkFCeXRlY29kZUZsYWdz
U2l6ZSA6IHVpbnQ4X3QgeworICAgIFVJbnQ4ID0gMHgxMCwKKyAgICBVSW50MTYgPSAweDAwLCAv
LyBOZWVkcyB0byBiZSB6ZXJvIHRvIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggYnl0ZWNvZGUg
Y29tcGlsZWQgd2l0aCBmaXhlZC1zaXplIGZsYWdzLgorICAgIFVJbnQyNCA9IDB4MjAsCit9Owor
ZW51bSBjbGFzcyBERkFCeXRlY29kZUFjdGlvblNpemUgOiB1aW50OF90IHsKKyAgICBVSW50OCA9
IDB4NDAsCisgICAgVUludDE2ID0gMHg4MCwKKyAgICBVSW50MjQgPSAweEMwLAorICAgIFVJbnQz
MiA9IDB4MDAsIC8vIE5lZWRzIHRvIGJlIHplcm8gdG8gYmUgYmluYXJ5IGNvbXBhdGlibGUgd2l0
aCBieXRlY29kZSBjb21waWxlZCB3aXRoIGZpeGVkLXNpemUgYWN0aW9ucy4KK307CiAKIC8vIEEg
REZBQnl0ZWNvZGVKdW1wU2l6ZSBpcyBzdG9yZWQgaW4gdGhlIHRvcCBmb3VyIGJpdHMgb2YgdGhl
IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb25zIHRoYXQgaGF2ZSBhIGp1bXAuCi1lbnVtIERGQUJ5dGVj
b2RlSnVtcFNpemUgeworZW51bSBjbGFzcyBERkFCeXRlY29kZUp1bXBTaXplIDogdWludDhfdCB7
CiAgICAgSW50OCA9IDB4MTAsCiAgICAgSW50MTYgPSAweDIwLAogICAgIEludDI0ID0gMHgzMCwK
ICAgICBJbnQzMiA9IDB4NDAsCiB9OwotY29uc3QgaW50MzJfdCBJbnQyNE1heCA9ICgxIDw8IDIz
KSAtIDE7Ci1jb25zdCBpbnQzMl90IEludDI0TWluID0gLSgxIDw8IDIzKTsKK3N0YXRpYyBjb25z
dGV4cHIgaW50MzJfdCBVSW50MjRNYXggPSAoMSA8PCAyNCkgLSAxOworc3RhdGljIGNvbnN0ZXhw
ciBpbnQzMl90IEludDI0TWF4ID0gKDEgPDwgMjMpIC0gMTsKK3N0YXRpYyBjb25zdGV4cHIgaW50
MzJfdCBJbnQyNE1pbiA9IC0oMSA8PCAyMyk7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBJbnQy
NFNpemUgPSAzOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgVUludDI0U2l6ZSA9IDM7CiAKIHN0
YXRpYyBpbmxpbmUgREZBQnl0ZWNvZGVKdW1wU2l6ZSBzbWFsbGVzdFBvc3NpYmxlSnVtcFNpemUo
aW50MzJfdCBsb25nZXN0UG9zc2libGVKdW1wKQogewogICAgIGlmIChsb25nZXN0UG9zc2libGVK
dW1wIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50OF90Pjo6bWF4KCkgJiYgbG9uZ2VzdFBvc3Np
YmxlSnVtcCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDhfdD46Om1pbigpKQotICAgICAgICBy
ZXR1cm4gSW50ODsKKyAgICAgICAgcmV0dXJuIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDg7CiAg
ICAgaWYgKGxvbmdlc3RQb3NzaWJsZUp1bXAgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90
Pjo6bWF4KCkgJiYgbG9uZ2VzdFBvc3NpYmxlSnVtcCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDE2X3Q+OjptaW4oKSkKLSAgICAgICAgcmV0dXJuIEludDE2OworICAgICAgICByZXR1cm4gREZB
Qnl0ZWNvZGVKdW1wU2l6ZTo6SW50MTY7CiAgICAgaWYgKGxvbmdlc3RQb3NzaWJsZUp1bXAgPD0g
SW50MjRNYXggJiYgbG9uZ2VzdFBvc3NpYmxlSnVtcCA+PSBJbnQyNE1pbikKLSAgICAgICAgcmV0
dXJuIEludDI0OwotICAgIHJldHVybiBJbnQzMjsKKyAgICAgICAgcmV0dXJuIERGQUJ5dGVjb2Rl
SnVtcFNpemU6OkludDI0OworICAgIHJldHVybiBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQzMjsK
IH0KLSAgICAKLXN0YXRpYyBpbmxpbmUgc2l6ZV90IGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVu
dHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbikKLXsKLSAgICBzd2l0Y2ggKGlu
c3RydWN0aW9uKSB7Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVl
Q2FzZVNlbnNpdGl2ZToKLSAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkNoZWNrVmFs
dWVDYXNlSW5zZW5zaXRpdmU6Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpKdW1w
VGFibGVDYXNlSW5zZW5zaXRpdmU6Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpK
dW1wVGFibGVDYXNlU2Vuc2l0aXZlOgotICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6
Q2hlY2tWYWx1ZVJhbmdlQ2FzZVNlbnNpdGl2ZToKLSAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1
Y3Rpb246OkNoZWNrVmFsdWVSYW5nZUNhc2VJbnNlbnNpdGl2ZToKLSAgICBjYXNlIERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246Okp1bXA6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IC8vIFZhcmlhYmxlIGluc3RydWN0aW9uIHNpemUuCi0gICAgY2FzZSBERkFCeXRlY29kZUlu
c3RydWN0aW9uOjpBcHBlbmRBY3Rpb246Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9u
OjpBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb246Ci0gICAgICAgIHJldHVybiBzaXplb2YoREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbikgKyBzaXplb2YodWludDMyX3QpOwotICAgIGNhc2UgREZBQnl0
ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uOgotICAgIGNhc2UgREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0
aW9uOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pICsgc2l6
ZW9mKHVpbnQxNl90KSArIHNpemVvZih1aW50MzJfdCk7Ci0gICAgY2FzZSBERkFCeXRlY29kZUlu
c3RydWN0aW9uOjpUZXJtaW5hdGU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoREZBQnl0ZWNvZGVJ
bnN0cnVjdGlvbik7Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyAgICAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMK
IAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCmlu
ZGV4IGM3M2IxMWNhNzMwMzY0ZDBlOWU3OTQ5Njc2N2JmNGRiZGIxMmYyMjUuLjZhOGYzN2JiMTIx
MjZjYWRiMTRjNzRmNWZlOWQzYWEyMGU0MDM1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCkBAIC0zMiwx
OCArMzIsMjIgQEAKICNpbmNsdWRlICJERkEuaCIKICNpbmNsdWRlICJERkFOb2RlLmgiCiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLW5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7Citu
YW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSW50VHlwZT4KLWlubGluZSB2b2lkIGFwcGVuZChWZWN0b3I8REZBQnl0ZWNvZGU+JiBieXRl
Y29kZSwgSW50VHlwZSB2YWx1ZSkKK3ZvaWQgYXBwZW5kKFZlY3RvcjxERkFCeXRlY29kZT4mIGJ5
dGVjb2RlLCBJbnRUeXBlIHZhbHVlKQogewogICAgIGJ5dGVjb2RlLmdyb3coYnl0ZWNvZGUuc2l6
ZSgpICsgc2l6ZW9mKEludFR5cGUpKTsKICAgICBtZW1jcHkoJmJ5dGVjb2RlW2J5dGVjb2RlLnNp
emUoKSAtIHNpemVvZihJbnRUeXBlKV0sICZ2YWx1ZSwgc2l6ZW9mKEludFR5cGUpKTsKIH0KIAot
aW5saW5lIHZvaWQgYXBwZW5kWmVyb2VzKFZlY3RvcjxERkFCeXRlY29kZT4mIGJ5dGVjb2RlLCBE
RkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplKQorc3RhdGljIHZvaWQgYXBwZW5kMjRCaXRJbnRl
Z2VyKFZlY3RvcjxERkFCeXRlY29kZT4mIGJ5dGVjb2RlLCB1aW50MzJfdCB2YWx1ZSkKK3sKKyAg
ICBhcHBlbmQ8dWludDE2X3Q+KGJ5dGVjb2RlLCB2YWx1ZSk7CisgICAgYXBwZW5kPHVpbnQ4X3Q+
KGJ5dGVjb2RlLCB2YWx1ZSA+PiAxNik7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZFplcm9lcyhW
ZWN0b3I8REZBQnl0ZWNvZGU+JiBieXRlY29kZSwgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6
ZSkKIHsKICAgICBzd2l0Y2ggKGp1bXBTaXplKSB7CiAgICAgY2FzZSBERkFCeXRlY29kZUp1bXBT
aXplOjpJbnQ4OgpAQCAtNTMsOCArNTcsNyBAQCBpbmxpbmUgdm9pZCBhcHBlbmRaZXJvZXMoVmVj
dG9yPERGQUJ5dGVjb2RlPiYgYnl0ZWNvZGUsIERGQUJ5dGVjb2RlSnVtcFNpemUganVtcAogICAg
ICAgICBhcHBlbmQ8aW50MTZfdD4oYnl0ZWNvZGUsIDApOyAvLyBUaGlzIHZhbHVlIHdpbGwgYmUg
c2V0IHdoZW4gbGlua2luZy4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBERkFCeXRlY29kZUp1
bXBTaXplOjpJbnQyNDoKLSAgICAgICAgYXBwZW5kPHVpbnQxNl90PihieXRlY29kZSwgMCk7Ci0g
ICAgICAgIGFwcGVuZDxpbnQ4X3Q+KGJ5dGVjb2RlLCAwKTsgLy8gVGhlc2UgdmFsdWVzIHdpbGwg
YmUgc2V0IHdoZW4gbGlua2luZy4KKyAgICAgICAgYXBwZW5kMjRCaXRJbnRlZ2VyKGJ5dGVjb2Rl
LCAwKTsgLy8gVGhpcyB2YWx1ZSB3aWxsIGJlIHNldCB3aGVuIGxpbmtpbmcuCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MzI6CiAgICAgICAgIGFwcGVu
ZDxpbnQzMl90PihieXRlY29kZSwgMCk7IC8vIFRoaXMgdmFsdWUgd2lsbCBiZSBzZXQgd2hlbiBs
aW5raW5nLgpAQCAtNjMsNyArNjYsNyBAQCBpbmxpbmUgdm9pZCBhcHBlbmRaZXJvZXMoVmVjdG9y
PERGQUJ5dGVjb2RlPiYgYnl0ZWNvZGUsIERGQUJ5dGVjb2RlSnVtcFNpemUganVtcAogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KLWlubGluZSB2b2lkIHNldEJpdHMoVmVjdG9yPERG
QUJ5dGVjb2RlPiYgYnl0ZWNvZGUsIHVpbnQzMl90IGluZGV4LCBJbnRUeXBlIHZhbHVlKQordm9p
ZCBzZXRCaXRzKFZlY3RvcjxERkFCeXRlY29kZT4mIGJ5dGVjb2RlLCB1aW50MzJfdCBpbmRleCwg
SW50VHlwZSB2YWx1ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCArIHNpemVvZihJbnRU
eXBlKSA8PSBieXRlY29kZS5zaXplKCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoISpyZWlu
dGVycHJldF9jYXN0PEludFR5cGUqPigmYnl0ZWNvZGVbaW5kZXhdKSwgIlJpZ2h0IG5vdyB3ZSBz
aG91bGQgb25seSBiZSB1c2luZyBzZXRCaXRzIHRvIG92ZXJ3cml0ZSB2YWx1ZXMgdGhhdCB3ZXJl
IHplcm8gYXMgYSBwbGFjZWhvbGRlci4iKTsKQEAgLTc2LDI0ICs3OSw1OSBAQCBzdGF0aWMgdW5z
aWduZWQgYXBwZW5kQWN0aW9uQnl0ZWNvZGVTaXplKHVpbnQ2NF90IGFjdGlvbikKICAgICAgICAg
cmV0dXJuIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIHNpemVvZih1aW50MTZfdCkg
KyBzaXplb2YodWludDMyX3QpOwogICAgIHJldHVybiBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVj
dGlvbikgKyBzaXplb2YodWludDMyX3QpOwogfQotICAgIAorCitzdGF0aWMgREZBQnl0ZWNvZGVG
bGFnc1NpemUgYnl0ZWNvZGVGbGFnc1NpemUoUmVzb3VyY2VGbGFncyBmbGFncykKK3sKKyAgICBp
ZiAoZmxhZ3MgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpCisgICAgICAg
IHJldHVybiBERkFCeXRlY29kZUZsYWdzU2l6ZTo6VUludDg7CisgICAgaWYgKGZsYWdzIDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIERGQUJ5
dGVjb2RlRmxhZ3NTaXplOjpVSW50MTY7CisgICAgUkVMRUFTRV9BU1NFUlQoZmxhZ3MgPD0gVUlu
dDI0TWF4KTsKKyAgICByZXR1cm4gREZBQnl0ZWNvZGVGbGFnc1NpemU6OlVJbnQyNDsKK30KKwor
c3RhdGljIERGQUJ5dGVjb2RlQWN0aW9uU2l6ZSBieXRlY29kZUFjdGlvblNpemUodWludDMyX3Qg
YWN0aW9uV2l0aG91dEZsYWdzKQoreworICAgIGlmIChhY3Rpb25XaXRob3V0RmxhZ3MgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpCisgICAgICAgIHJldHVybiBERkFCeXRl
Y29kZUFjdGlvblNpemU6OlVJbnQ4OworICAgIGlmIChhY3Rpb25XaXRob3V0RmxhZ3MgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQorICAgICAgICByZXR1cm4gREZBQnl0
ZWNvZGVBY3Rpb25TaXplOjpVSW50MTY7CisgICAgaWYgKGFjdGlvbldpdGhvdXRGbGFncyA8PSBV
SW50MjRNYXgpCisgICAgICAgIHJldHVybiBERkFCeXRlY29kZUFjdGlvblNpemU6OlVJbnQyNDsK
KyAgICByZXR1cm4gREZBQnl0ZWNvZGVBY3Rpb25TaXplOjpVSW50MzI7Cit9CisKK3N0YXRpYyB2
b2lkIGFwcGVuZFZhcmlhYmxlTGVuZ3RoSW50ZWdlcihWZWN0b3I8REZBQnl0ZWNvZGU+JiBieXRl
Y29kZSwgdWludDMyX3QgaW50ZWdlcikKK3sKKyAgICBpZiAoaW50ZWdlciA8PSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIGFwcGVuZDx1aW50OF90
PihieXRlY29kZSwgaW50ZWdlcik7CisgICAgaWYgKGludGVnZXIgPD0gc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MTZfdD46Om1heCgpKQorICAgICAgICByZXR1cm4gYXBwZW5kPHVpbnQxNl90Pihi
eXRlY29kZSwgaW50ZWdlcik7CisgICAgaWYgKGludGVnZXIgPD0gVUludDI0TWF4KQorICAgICAg
ICByZXR1cm4gYXBwZW5kMjRCaXRJbnRlZ2VyKGJ5dGVjb2RlLCBpbnRlZ2VyKTsKKyAgICByZXR1
cm4gYXBwZW5kPHVpbnQzMl90PihieXRlY29kZSwgaW50ZWdlcik7Cit9CisKIHZvaWQgREZBQnl0
ZWNvZGVDb21waWxlcjo6ZW1pdEFwcGVuZEFjdGlvbih1aW50NjRfdCBhY3Rpb24pCiB7CisgICAg
dWludDMyX3QgYWN0aW9uV2l0aG91dEZsYWdzID0gYWN0aW9uOworICAgIGF1dG8gYWN0aW9uU2l6
ZSA9IGJ5dGVjb2RlQWN0aW9uU2l6ZShhY3Rpb25XaXRob3V0RmxhZ3MpOworICAgIAogICAgIC8v
IEhpZ2ggYml0cyBhcmUgdXNlZCB0byBzdG9yZSBmbGFncy4gU2VlIGNvbXBpbGVSdWxlTGlzdC4K
LSAgICBpZiAoYWN0aW9uICYgQWN0aW9uRmxhZ01hc2spIHsKLSAgICAgICAgaWYgKGFjdGlvbiAm
IElmQ29uZGl0aW9uRmxhZykKLSAgICAgICAgICAgIGFwcGVuZDxERkFCeXRlY29kZUluc3RydWN0
aW9uPihtX2J5dGVjb2RlLCBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBl
bmRBY3Rpb25XaXRoSWZDb25kaXRpb24pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBl
bmQ8REZBQnl0ZWNvZGVJbnN0cnVjdGlvbj4obV9ieXRlY29kZSwgREZBQnl0ZWNvZGVJbnN0cnVj
dGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKTsKLSAgICAgICAgYXBwZW5kPHVpbnQxNl90
PihtX2J5dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50MTZfdD4oYWN0aW9uID4+IDMyKSk7Ci0gICAg
ICAgIGFwcGVuZDx1aW50MzJfdD4obV9ieXRlY29kZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFj
dGlvbikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChhY3Rpb24gJiBJZkNvbmRpdGlvbkZs
YWcpCi0gICAgICAgICAgICBhcHBlbmQ8REZBQnl0ZWNvZGVJbnN0cnVjdGlvbj4obV9ieXRlY29k
ZSwgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kPERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24+
KG1fYnl0ZWNvZGUsIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbik7Ci0gICAg
ICAgIGFwcGVuZDx1aW50MzJfdD4obV9ieXRlY29kZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFj
dGlvbikpOworICAgIGlmIChSZXNvdXJjZUZsYWdzIGZsYWdzID0gKGFjdGlvbiAmIEFjdGlvbkZs
YWdNYXNrKSA+PiAzMikgeworICAgICAgICBhdXRvIGZsYWdzU2l6ZSA9IGJ5dGVjb2RlRmxhZ3NT
aXplKGZsYWdzKTsKKyAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IChhY3Rpb24gJiBJZkNvbmRp
dGlvbkZsYWcpID8gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0
aW9uV2l0aElmQ29uZGl0aW9uIDogREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5k
QXBwZW5kQWN0aW9uOworICAgICAgICBBU1NFUlQoIShzdGF0aWNfY2FzdDx1aW50OF90PihpbnN0
cnVjdGlvbikgJiBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFnc1NpemUpICYgc3RhdGljX2Nhc3Q8
dWludDhfdD4oYWN0aW9uU2l6ZSkpKTsKKyAgICAgICAgYXBwZW5kPHVpbnQ4X3Q+KG1fYnl0ZWNv
ZGUsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGluc3RydWN0aW9uKSB8IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGZsYWdzU2l6ZSkgfCBzdGF0aWNfY2FzdDx1aW50OF90PihhY3Rpb25TaXplKSk7CisgICAg
ICAgIGFwcGVuZFZhcmlhYmxlTGVuZ3RoSW50ZWdlcihtX2J5dGVjb2RlLCBmbGFncyk7CisgICAg
ICAgIGFwcGVuZFZhcmlhYmxlTGVuZ3RoSW50ZWdlcihtX2J5dGVjb2RlLCBhY3Rpb25XaXRob3V0
RmxhZ3MpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgYXV0byBpbnN0cnVjdGlvbiA9
IChhY3Rpb24gJiBJZkNvbmRpdGlvbkZsYWcpID8gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBw
ZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uIDogREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5k
QWN0aW9uOworICAgIEFTU0VSVCghKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGluc3RydWN0aW9uKSAm
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGFjdGlvblNpemUpKSk7CisgICAgYXBwZW5kPHVpbnQ4X3Q+
KG1fYnl0ZWNvZGUsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGluc3RydWN0aW9uKSB8IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KGFjdGlvblNpemUpKTsKKyAgICBhcHBlbmRWYXJpYWJsZUxlbmd0aEludGVn
ZXIobV9ieXRlY29kZSwgYWN0aW9uV2l0aG91dEZsYWdzKTsKIH0KIAogaW50MzJfdCBERkFCeXRl
Y29kZUNvbXBpbGVyOjpsb25nZXN0UG9zc2libGVKdW1wKHVpbnQzMl90IGluc3RydWN0aW9uTG9j
YXRpb24sIHVpbnQzMl90IHNvdXJjZU5vZGVJbmRleCwgdWludDMyX3QgZGVzdGluYXRpb25Ob2Rl
SW5kZXgpCkBAIC0xMTksNyArMTU3LDcgQEAgdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0
SnVtcCh1aW50MzJfdCBzb3VyY2VOb2RlSW5kZXgsIHVpbnQzMl90IGRlc3RpbmF0aW8KICAgICB1
aW50MzJfdCBqdW1wTG9jYXRpb24gPSBpbnN0cnVjdGlvbkxvY2F0aW9uICsgc2l6ZW9mKHVpbnQ4
X3QpOwogICAgIGludDMyX3QgbG9uZ2VzdFBvc3NpYmxlSnVtcERpc3RhbmNlID0gbG9uZ2VzdFBv
c3NpYmxlSnVtcChpbnN0cnVjdGlvbkxvY2F0aW9uLCBzb3VyY2VOb2RlSW5kZXgsIGRlc3RpbmF0
aW9uTm9kZUluZGV4KTsKICAgICBERkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplID0gc21hbGxl
c3RQb3NzaWJsZUp1bXBTaXplKGxvbmdlc3RQb3NzaWJsZUp1bXBEaXN0YW5jZSk7Ci0gICAgYXBw
ZW5kPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb246Okp1bXApIHwganVtcFNpemUpOworICAgIGFwcGVuZDx1aW50OF90PihtX2J5
dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50OF90PihERkFCeXRlY29kZUluc3RydWN0aW9uOjpKdW1w
KSB8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGp1bXBTaXplKSk7CiAKICAgICBtX2xpbmtSZWNvcmRz
LmFwcGVuZChMaW5rUmVjb3JkKHtqdW1wU2l6ZSwgbG9uZ2VzdFBvc3NpYmxlSnVtcERpc3RhbmNl
LCBpbnN0cnVjdGlvbkxvY2F0aW9uLCBqdW1wTG9jYXRpb24sIGRlc3RpbmF0aW9uTm9kZUluZGV4
fSkpOwogICAgIGFwcGVuZFplcm9lcyhtX2J5dGVjb2RlLCBqdW1wU2l6ZSk7CkBAIC0xMzIsNyAr
MTcwLDcgQEAgdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0Q2hlY2tWYWx1ZSh1aW50OF90
IHZhbHVlLCB1aW50MzJfdCBzb3VyY2VOb2RlSW5kZXgKICAgICBpbnQzMl90IGxvbmdlc3RQb3Nz
aWJsZUp1bXBEaXN0YW5jZSA9IGxvbmdlc3RQb3NzaWJsZUp1bXAoaW5zdHJ1Y3Rpb25Mb2NhdGlv
biwgc291cmNlTm9kZUluZGV4LCBkZXN0aW5hdGlvbk5vZGVJbmRleCk7CiAgICAgREZBQnl0ZWNv
ZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IHNtYWxsZXN0UG9zc2libGVKdW1wU2l6ZShsb25nZXN0UG9z
c2libGVKdW1wRGlzdGFuY2UpOwogICAgIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rp
b24gPSBjYXNlU2Vuc2l0aXZlID8gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZUNh
c2VTZW5zaXRpdmUgOiBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlQ2FzZUluc2Vu
c2l0aXZlOwotICAgIGFwcGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50
OF90PihpbnN0cnVjdGlvbikgfCBqdW1wU2l6ZSk7CisgICAgYXBwZW5kPHVpbnQ4X3Q+KG1fYnl0
ZWNvZGUsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGluc3RydWN0aW9uKSB8IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KGp1bXBTaXplKSk7CiAgICAgYXBwZW5kPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHZhbHVl
KTsKICAgICBtX2xpbmtSZWNvcmRzLmFwcGVuZChMaW5rUmVjb3JkKHtqdW1wU2l6ZSwgbG9uZ2Vz
dFBvc3NpYmxlSnVtcERpc3RhbmNlLCBpbnN0cnVjdGlvbkxvY2F0aW9uLCBqdW1wTG9jYXRpb24s
IGRlc3RpbmF0aW9uTm9kZUluZGV4fSkpOwogICAgIGFwcGVuZFplcm9lcyhtX2J5dGVjb2RlLCBq
dW1wU2l6ZSk7CkBAIC0xNDcsNyArMTg1LDcgQEAgdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjpl
bWl0Q2hlY2tWYWx1ZVJhbmdlKHVpbnQ4X3QgbG93VmFsdWUsIHVpbnQ4X3QgaGlnaFZhbHUKICAg
ICBpbnQzMl90IGxvbmdlc3RQb3NzaWJsZUp1bXBEaXN0YW5jZSA9IGxvbmdlc3RQb3NzaWJsZUp1
bXAoaW5zdHJ1Y3Rpb25Mb2NhdGlvbiwgc291cmNlTm9kZUluZGV4LCBkZXN0aW5hdGlvbk5vZGVJ
bmRleCk7CiAgICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IHNtYWxsZXN0UG9zc2li
bGVKdW1wU2l6ZShsb25nZXN0UG9zc2libGVKdW1wRGlzdGFuY2UpOwogICAgIERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb24gPSBjYXNlU2Vuc2l0aXZlID8gREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbjo6Q2hlY2tWYWx1ZVJhbmdlQ2FzZVNlbnNpdGl2ZSA6IERGQUJ5dGVjb2RlSW5zdHJ1
Y3Rpb246OkNoZWNrVmFsdWVSYW5nZUNhc2VJbnNlbnNpdGl2ZTsKLSAgICBhcHBlbmQ8dWludDhf
dD4obV9ieXRlY29kZSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oaW5zdHJ1Y3Rpb24pIHwganVtcFNp
emUpOworICAgIGFwcGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50OF90
PihpbnN0cnVjdGlvbikgfCBzdGF0aWNfY2FzdDx1aW50OF90PihqdW1wU2l6ZSkpOwogICAgIGFw
cGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBsb3dWYWx1ZSk7CiAgICAgYXBwZW5kPHVpbnQ4X3Q+
KG1fYnl0ZWNvZGUsIGhpZ2hWYWx1ZSk7CiAgICAgbV9saW5rUmVjb3Jkcy5hcHBlbmQoTGlua1Jl
Y29yZCh7anVtcFNpemUsIGxvbmdlc3RQb3NzaWJsZUp1bXBEaXN0YW5jZSwgaW5zdHJ1Y3Rpb25M
b2NhdGlvbiwganVtcExvY2F0aW9uLCBkZXN0aW5hdGlvbk5vZGVJbmRleH0pKTsKQEAgLTIyNiw3
ICsyNjQsNyBAQCBERkFCeXRlY29kZUNvbXBpbGVyOjpKdW1wVGFibGUgREZBQnl0ZWNvZGVDb21w
aWxlcjo6ZXh0cmFjdEp1bXBUYWJsZShWZWN0b3I8REZBQgogICAgIHJldHVybiBqdW1wVGFibGU7
CiB9CiAKLURGQUJ5dGVjb2RlQ29tcGlsZXI6OlRyYW5zaXRpb25zIERGQUJ5dGVjb2RlQ29tcGls
ZXI6OnRyYW5zaXRpb25zKGNvbnN0IERGQU5vZGUmIG5vZGUpCithdXRvIERGQUJ5dGVjb2RlQ29t
cGlsZXI6OnRyYW5zaXRpb25zKGNvbnN0IERGQU5vZGUmIG5vZGUpIC0+IFRyYW5zaXRpb25zCiB7
CiAgICAgVHJhbnNpdGlvbnMgdHJhbnNpdGlvbnM7CiAKQEAgLTM1MCw3ICszODgsNyBAQCB2b2lk
IERGQUJ5dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVKdW1wVGFibGUodWludDMyX3Qgbm9kZUluZGV4
LCBjb25zdCBKdW1wVGFibGUmCiAgICAgQVNTRVJUKGp1bXBUYWJsZS5taW4gPD0ganVtcFRhYmxl
Lm1heCk7CiAKICAgICB1aW50MzJfdCBpbnN0cnVjdGlvbkxvY2F0aW9uID0gbV9ieXRlY29kZS5z
aXplKCk7Ci0gICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IEludDg7CisgICAgYXV0
byBqdW1wU2l6ZSA9IERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDg7CiAgICAgZm9yICh1aW50MzJf
dCBkZXN0aW5hdGlvbk5vZGVJbmRleCA6IGp1bXBUYWJsZS5kZXN0aW5hdGlvbnMpIHsKICAgICAg
ICAgaW50MzJfdCBsb25nZXN0UG9zc2libGVKdW1wRGlzdGFuY2UgPSBsb25nZXN0UG9zc2libGVK
dW1wKGluc3RydWN0aW9uTG9jYXRpb24sIG5vZGVJbmRleCwgZGVzdGluYXRpb25Ob2RlSW5kZXgp
OwogICAgICAgICBERkFCeXRlY29kZUp1bXBTaXplIGxvY2FsSnVtcFNpemUgPSBzbWFsbGVzdFBv
c3NpYmxlSnVtcFNpemUobG9uZ2VzdFBvc3NpYmxlSnVtcERpc3RhbmNlKTsKQEAgLTM1OCw3ICsz
OTYsNyBAQCB2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVKdW1wVGFibGUodWludDMy
X3Qgbm9kZUluZGV4LCBjb25zdCBKdW1wVGFibGUmCiAgICAgfQogCiAgICAgREZBQnl0ZWNvZGVJ
bnN0cnVjdGlvbiBpbnN0cnVjdGlvbiA9IGp1bXBUYWJsZS5jYXNlU2Vuc2l0aXZlID8gREZBQnl0
ZWNvZGVJbnN0cnVjdGlvbjo6SnVtcFRhYmxlQ2FzZVNlbnNpdGl2ZSA6IERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb246Okp1bXBUYWJsZUNhc2VJbnNlbnNpdGl2ZTsKLSAgICBhcHBlbmQ8dWludDhfdD4o
bV9ieXRlY29kZSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oaW5zdHJ1Y3Rpb24pIHwganVtcFNpemUp
OworICAgIGFwcGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50OF90Pihp
bnN0cnVjdGlvbikgfCBzdGF0aWNfY2FzdDx1aW50OF90PihqdW1wU2l6ZSkpOwogICAgIGFwcGVu
ZDx1aW50OF90PihtX2J5dGVjb2RlLCBqdW1wVGFibGUubWluKTsKICAgICBhcHBlbmQ8dWludDhf
dD4obV9ieXRlY29kZSwganVtcFRhYmxlLm1heCk7CiAKQEAgLTM5Nyw3ICs0MzUsNyBAQCB1bnNp
Z25lZCBERkFCeXRlY29kZUNvbXBpbGVyOjpub2RlVHJhbnNpdGlvbnNNYXhCeXRlY29kZVNpemUo
Y29uc3QgREZBTm9kZSYgbm9kZQogICAgIGlmIChub2RlVHJhbnNpdGlvbnMudXNlRmFsbGJhY2tU
cmFuc2l0aW9uKQogICAgICAgICBzaXplICs9IHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9u
OjpKdW1wKSArIHNpemVvZih1aW50MzJfdCk7CiAgICAgZWxzZQotICAgICAgICBzaXplICs9IGlu
c3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVybWlu
YXRlKTsKKyAgICAgICAgc2l6ZSArPSBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVy
bWluYXRlKTsKICAgICByZXR1cm4gc2l6ZTsKIH0KIApAQCAtNDY2LDIwICs1MDQsMjAgQEAgdm9p
ZCBERkFCeXRlY29kZUNvbXBpbGVyOjpjb21waWxlKCkKICAgICAgICAgQVNTRVJUKGFicyhkaXN0
YW5jZSkgPD0gYWJzKGxpbmtSZWNvcmQubG9uZ2VzdFBvc3NpYmxlSnVtcCkpOwogICAgICAgICAK
ICAgICAgICAgc3dpdGNoIChsaW5rUmVjb3JkLmp1bXBTaXplKSB7Ci0gICAgICAgIGNhc2UgSW50
ODoKKyAgICAgICAgY2FzZSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQ4OgogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZGlzdGFuY2UgPT0gc3RhdGljX2Nhc3Q8aW50OF90PihkaXN0YW5jZSkp
OwogICAgICAgICAgICAgc2V0Qml0czxpbnQ4X3Q+KG1fYnl0ZWNvZGUsIGxpbmtSZWNvcmQuanVt
cExvY2F0aW9uLCBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGRpc3RhbmNlKSk7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBJbnQxNjoKKyAgICAgICAgY2FzZSBERkFCeXRlY29kZUp1bXBT
aXplOjpJbnQxNjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpc3RhbmNlID09IHN0YXRp
Y19jYXN0PGludDE2X3Q+KGRpc3RhbmNlKSk7CiAgICAgICAgICAgICBzZXRCaXRzPGludDE2X3Q+
KG1fYnl0ZWNvZGUsIGxpbmtSZWNvcmQuanVtcExvY2F0aW9uLCBzdGF0aWNfY2FzdDxpbnQxNl90
PihkaXN0YW5jZSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50MjQ6Cisg
ICAgICAgIGNhc2UgREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MjQ6CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChkaXN0YW5jZSA+PSBJbnQyNE1pbiAmJiBkaXN0YW5jZSA8PSBJbnQyNE1heCk7
CiAgICAgICAgICAgICBzZXRCaXRzPHVpbnQxNl90PihtX2J5dGVjb2RlLCBsaW5rUmVjb3JkLmp1
bXBMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGRpc3RhbmNlKSk7CiAgICAgICAgICAg
ICBzZXRCaXRzPGludDhfdD4obV9ieXRlY29kZSwgbGlua1JlY29yZC5qdW1wTG9jYXRpb24gKyBz
aXplb2YoaW50MTZfdCksIHN0YXRpY19jYXN0PGludDhfdD4oZGlzdGFuY2UgPj4gMTYpKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDMyOgorICAgICAgICBjYXNlIERGQUJ5
dGVjb2RlSnVtcFNpemU6OkludDMyOgogICAgICAgICAgICAgc2V0Qml0czxpbnQzMl90PihtX2J5
dGVjb2RlLCBsaW5rUmVjb3JkLmp1bXBMb2NhdGlvbiwgZGlzdGFuY2UpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTQ4Nyw5ICs1MjUsNyBAQCB2b2lkIERGQUJ5dGVjb2RlQ29t
cGlsZXI6OmNvbXBpbGUoKQogICAgIAogICAgIHNldEJpdHM8REZBSGVhZGVyPihtX2J5dGVjb2Rl
LCBzdGFydExvY2F0aW9uLCBtX2J5dGVjb2RlLnNpemUoKSAtIHN0YXJ0TG9jYXRpb24pOwogfQot
ICAgIAotfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMKIAogI2Vu
ZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCmlu
ZGV4IGJkYzEzOWZjOWFiMzI2M2E3YTVmNmE1ZmNlZDdiYWZlNWM5YjlhOTQuLjQ2MjhhZWFkM2Nl
NzRkZGY0YmJlNWJiNDNlY2U5ZGU1MjczNzc2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDYyICszMSwxNTUgQEAKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICAKLW5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CituYW1l
c3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SW50VHlwZT4KLXN0YXRpYyBpbmxpbmUgSW50VHlwZSBnZXRCaXRzKGNvbnN0IERGQUJ5dGVjb2Rl
KiBieXRlY29kZSwgdWludDMyX3QgYnl0ZWNvZGVMZW5ndGgsIHVpbnQzMl90IGluZGV4KQorc3Rh
dGljIEludFR5cGUgZ2V0Qml0cyhTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1aW50MzJf
dCBpbmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggKyBzaXplb2YoSW50VHlwZSkgPD0gYnl0ZWNv
ZGUuc2l6ZSgpKTsKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW50VHlwZSo+
KGJ5dGVjb2RlLmRhdGEoKSArIGluZGV4KTsKK30KKworc3RhdGljIHVpbnQzMl90IGdldDI0Qml0
cyhTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1aW50MzJfdCBpbmRleCkKIHsKLSAgICBB
U1NFUlRfVU5VU0VEKGJ5dGVjb2RlTGVuZ3RoLCBpbmRleCArIHNpemVvZihJbnRUeXBlKSA8PSBi
eXRlY29kZUxlbmd0aCk7Ci0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEludFR5
cGUqPigmYnl0ZWNvZGVbaW5kZXhdKTsKKyAgICBBU1NFUlQoaW5kZXggKyBVSW50MjRTaXplIDw9
IGJ5dGVjb2RlLnNpemUoKSk7CisgICAgdWludDMyX3QgaGlnaEJpdHMgPSBnZXRCaXRzPHVpbnQ4
X3Q+KGJ5dGVjb2RlLCBpbmRleCArIHNpemVvZih1aW50MTZfdCkpOworICAgIHVpbnQzMl90IGxv
d0JpdHMgPSBnZXRCaXRzPHVpbnQxNl90PihieXRlY29kZSwgaW5kZXgpOworICAgIHJldHVybiAo
aGlnaEJpdHMgPDwgMTYpIHwgbG93Qml0czsKIH0KIAotc3RhdGljIGlubGluZSBERkFCeXRlY29k
ZUluc3RydWN0aW9uIGdldEluc3RydWN0aW9uKGNvbnN0IERGQUJ5dGVjb2RlKiBieXRlY29kZSwg
dWludDMyX3QgYnl0ZWNvZGVMZW5ndGgsIHVpbnQzMl90IGluZGV4KQorc3RhdGljIERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb24gZ2V0SW5zdHJ1Y3Rpb24oU3Bhbjxjb25zdCB1aW50OF90PiBieXRlY29k
ZSwgdWludDMyX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb24+KGdldEJpdHM8dWludDhfdD4oYnl0ZWNvZGUsIGJ5dGVjb2RlTGVuZ3RoLCBp
bmRleCkgJiBERkFCeXRlY29kZUluc3RydWN0aW9uTWFzayk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24+KGdldEJpdHM8dWludDhfdD4oYnl0ZWNvZGUsIGlu
ZGV4KSAmIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb25NYXNrKTsKIH0KIAotc3RhdGljIGlubGluZSBz
aXplX3QganVtcFNpemVJbkJ5dGVzKERGQUJ5dGVjb2RlSnVtcFNpemUganVtcFNpemUpCitzdGF0
aWMgc2l6ZV90IGp1bXBTaXplSW5CeXRlcyhERkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplKQog
ewogICAgIHN3aXRjaCAoanVtcFNpemUpIHsKLSAgICBjYXNlIEludDg6CisgICAgY2FzZSBERkFC
eXRlY29kZUp1bXBTaXplOjpJbnQ4OgogICAgICAgICByZXR1cm4gc2l6ZW9mKGludDhfdCk7Ci0g
ICAgY2FzZSBJbnQxNjoKKyAgICBjYXNlIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDE2OgogICAg
ICAgICByZXR1cm4gc2l6ZW9mKGludDE2X3QpOwotICAgIGNhc2UgSW50MjQ6Ci0gICAgICAgIHJl
dHVybiBzaXplb2YodWludDE2X3QpICsgc2l6ZW9mKGludDhfdCk7Ci0gICAgY2FzZSBJbnQzMjoK
KyAgICBjYXNlIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDI0OgorICAgICAgICByZXR1cm4gSW50
MjRTaXplOworICAgIGNhc2UgREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MzI6CiAgICAgICAgIHJl
dHVybiBzaXplb2YoaW50MzJfdCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdWludDMyX3QgY29uc3VtZUludGVnZXIoU3Bh
bjxjb25zdCB1aW50OF90PiBieXRlY29kZSwgdWludDMyX3QmIHByb2dyYW1Db3VudGVyKQorewor
ICAgIHByb2dyYW1Db3VudGVyICs9IHNpemVvZihUKTsKKyAgICByZXR1cm4gZ2V0Qml0czxUPihi
eXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgLSBzaXplb2YoVCkpOworfQorc3RhdGljIHVpbnQzMl90
IGNvbnN1bWUyNEJpdEludGVnZXIoU3Bhbjxjb25zdCB1aW50OF90PiBieXRlY29kZSwgdWludDMy
X3QmIHByb2dyYW1Db3VudGVyKQoreworICAgIHByb2dyYW1Db3VudGVyICs9IFVJbnQyNFNpemU7
CisgICAgcmV0dXJuIGdldDI0Qml0cyhieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgLSBVSW50MjRT
aXplKTsKK30KKworc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc0ZsYWdzKERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb24gaW5zdHJ1Y3Rpb24pCit7CisgICAgc3dpdGNoIChpbnN0cnVjdGlvbikgeworICAg
IGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uOgor
ICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9u
V2l0aElmQ29uZGl0aW9uOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246OkNoZWNrVmFsdWVDYXNlU2Vuc2l0aXZlOgorICAgIGNhc2UgREZBQnl0
ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZUNhc2VJbnNlbnNpdGl2ZToKKyAgICBjYXNlIERG
QUJ5dGVjb2RlSW5zdHJ1Y3Rpb246Okp1bXBUYWJsZUNhc2VJbnNlbnNpdGl2ZToKKyAgICBjYXNl
IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246Okp1bXBUYWJsZUNhc2VTZW5zaXRpdmU6CisgICAgY2Fz
ZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlUmFuZ2VDYXNlU2Vuc2l0aXZlOgor
ICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZVJhbmdlQ2FzZUluc2Vu
c2l0aXZlOgorICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6SnVtcDoKKyAgICBjYXNl
IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbjoKKyAgICBjYXNlIERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbjoKKyAgICBjYXNlIERG
QUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlcm1pbmF0ZToKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGlubGluZSBERkFCeXRlY29kZUp1bXBTaXpl
IGdldEp1bXBTaXplKGNvbnN0IERGQUJ5dGVjb2RlKiBieXRlY29kZSwgdWludDMyX3QgYnl0ZWNv
ZGVMZW5ndGgsIHVpbnQzMl90IGluZGV4KQorc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc0FjdGlv
bihERkFCeXRlY29kZUluc3RydWN0aW9uIGluc3RydWN0aW9uKQogewotICAgIERGQUJ5dGVjb2Rl
SnVtcFNpemUganVtcFNpemUgPSBzdGF0aWNfY2FzdDxERkFCeXRlY29kZUp1bXBTaXplPihnZXRC
aXRzPHVpbnQ4X3Q+KGJ5dGVjb2RlLCBieXRlY29kZUxlbmd0aCwgaW5kZXgpICYgREZBQnl0ZWNv
ZGVKdW1wU2l6ZU1hc2spOwotICAgIEFTU0VSVChqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBT
aXplOjpJbnQzMiB8fCBqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQyNCB8fCBq
dW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQxNiB8fCBqdW1wU2l6ZSA9PSBERkFC
eXRlY29kZUp1bXBTaXplOjpJbnQ4KTsKKyAgICBzd2l0Y2ggKGluc3RydWN0aW9uKSB7CisgICAg
Y2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb246Cisg
ICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25X
aXRoSWZDb25kaXRpb246CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRB
Y3Rpb246CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb25XaXRo
SWZDb25kaXRpb246CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgREZBQnl0ZWNvZGVJ
bnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZUNhc2VTZW5zaXRpdmU6CisgICAgY2FzZSBERkFCeXRlY29k
ZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlQ2FzZUluc2Vuc2l0aXZlOgorICAgIGNhc2UgREZBQnl0
ZWNvZGVJbnN0cnVjdGlvbjo6SnVtcFRhYmxlQ2FzZUluc2Vuc2l0aXZlOgorICAgIGNhc2UgREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbjo6SnVtcFRhYmxlQ2FzZVNlbnNpdGl2ZToKKyAgICBjYXNlIERG
QUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkNoZWNrVmFsdWVSYW5nZUNhc2VTZW5zaXRpdmU6CisgICAg
Y2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlUmFuZ2VDYXNlSW5zZW5zaXRp
dmU6CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpKdW1wOgorICAgIGNhc2UgREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVybWluYXRlOgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgUmVzb3VyY2VGbGFncyBjb25zdW1lUmVzb3Vy
Y2VGbGFnc0FuZEluc3RydWN0aW9uKFNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUsIHVpbnQz
Ml90JiBwcm9ncmFtQ291bnRlcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGhhc0ZsYWdzLCBoYXNG
bGFncyhnZXRJbnN0cnVjdGlvbihieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpKSk7CisgICAgc3dp
dGNoIChzdGF0aWNfY2FzdDxERkFCeXRlY29kZUZsYWdzU2l6ZT4oYnl0ZWNvZGVbcHJvZ3JhbUNv
dW50ZXIrK10gJiBERkFCeXRlY29kZUZsYWdzU2l6ZU1hc2spKSB7CisgICAgY2FzZSBERkFCeXRl
Y29kZUZsYWdzU2l6ZTo6VUludDg6CisgICAgICAgIHJldHVybiBjb25zdW1lSW50ZWdlcjx1aW50
OF90PihieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOworICAgIGNhc2UgREZBQnl0ZWNvZGVGbGFn
c1NpemU6OlVJbnQxNjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyPHVpbnQxNl90Pihi
eXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOworICAgIGNhc2UgREZBQnl0ZWNvZGVGbGFnc1NpemU6
OlVJbnQyNDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWUyNEJpdEludGVnZXIoYnl0ZWNvZGUsIHBy
b2dyYW1Db3VudGVyKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBjb25zdW1lQWN0aW9uKFNwYW48Y29uc3QgdWlu
dDhfdD4gYnl0ZWNvZGUsIHVpbnQzMl90JiBwcm9ncmFtQ291bnRlciwgdWludDMyX3QgaW5zdHJ1
Y3Rpb25Mb2NhdGlvbikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGhhc0FjdGlvbiwgaGFzQWN0aW9u
KGdldEluc3RydWN0aW9uKGJ5dGVjb2RlLCBpbnN0cnVjdGlvbkxvY2F0aW9uKSkpOworICAgIEFT
U0VSVChwcm9ncmFtQ291bnRlciA+IGluc3RydWN0aW9uTG9jYXRpb24pOworICAgIHN3aXRjaCAo
c3RhdGljX2Nhc3Q8REZBQnl0ZWNvZGVBY3Rpb25TaXplPihieXRlY29kZVtpbnN0cnVjdGlvbkxv
Y2F0aW9uXSAmIERGQUJ5dGVjb2RlQWN0aW9uU2l6ZU1hc2spKSB7CisgICAgY2FzZSBERkFCeXRl
Y29kZUFjdGlvblNpemU6OlVJbnQ4OgorICAgICAgICByZXR1cm4gY29uc3VtZUludGVnZXI8dWlu
dDhfdD4oYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKTsKKyAgICBjYXNlIERGQUJ5dGVjb2RlQWN0
aW9uU2l6ZTo6VUludDE2OgorICAgICAgICByZXR1cm4gY29uc3VtZUludGVnZXI8dWludDE2X3Q+
KGJ5dGVjb2RlLCBwcm9ncmFtQ291bnRlcik7CisgICAgY2FzZSBERkFCeXRlY29kZUFjdGlvblNp
emU6OlVJbnQyNDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWUyNEJpdEludGVnZXIoYnl0ZWNvZGUs
IHByb2dyYW1Db3VudGVyKTsKKyAgICBjYXNlIERGQUJ5dGVjb2RlQWN0aW9uU2l6ZTo6VUludDMy
OgorICAgICAgICByZXR1cm4gY29uc3VtZUludGVnZXI8dWludDMyX3Q+KGJ5dGVjb2RlLCBwcm9n
cmFtQ291bnRlcik7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biAwOworfQorCitzdGF0aWMgREZBQnl0ZWNvZGVKdW1wU2l6ZSBnZXRKdW1wU2l6ZShTcGFuPGNv
bnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1aW50MzJfdCBpbmRleCkKK3sKKyAgICBhdXRvIGp1bXBT
aXplID0gc3RhdGljX2Nhc3Q8REZBQnl0ZWNvZGVKdW1wU2l6ZT4oZ2V0Qml0czx1aW50OF90Pihi
eXRlY29kZSwgaW5kZXgpICYgREZBQnl0ZWNvZGVKdW1wU2l6ZU1hc2spOworICAgIEFTU0VSVChq
dW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQzMgorICAgICAgICB8fCBqdW1wU2l6
ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQyNAorICAgICAgICB8fCBqdW1wU2l6ZSA9PSBE
RkFCeXRlY29kZUp1bXBTaXplOjpJbnQxNgorICAgICAgICB8fCBqdW1wU2l6ZSA9PSBERkFCeXRl
Y29kZUp1bXBTaXplOjpJbnQ4KTsKICAgICByZXR1cm4ganVtcFNpemU7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgaW50MzJfdCBnZXRKdW1wRGlzdGFuY2UoY29uc3QgREZBQnl0ZWNvZGUqIGJ5dGVjb2Rl
LCB1aW50MzJfdCBieXRlY29kZUxlbmd0aCwgdWludDMyX3QgaW5kZXgsIERGQUJ5dGVjb2RlSnVt
cFNpemUganVtcFNpemUpCitzdGF0aWMgaW50MzJfdCBnZXRKdW1wRGlzdGFuY2UoU3Bhbjxjb25z
dCB1aW50OF90PiBieXRlY29kZSwgdWludDMyX3QgaW5kZXgsIERGQUJ5dGVjb2RlSnVtcFNpemUg
anVtcFNpemUpCiB7CiAgICAgc3dpdGNoIChqdW1wU2l6ZSkgewotICAgIGNhc2UgSW50ODoKLSAg
ICAgICAgcmV0dXJuIGdldEJpdHM8aW50OF90PihieXRlY29kZSwgYnl0ZWNvZGVMZW5ndGgsIGlu
ZGV4KTsKLSAgICBjYXNlIEludDE2OgotICAgICAgICByZXR1cm4gZ2V0Qml0czxpbnQxNl90Pihi
eXRlY29kZSwgYnl0ZWNvZGVMZW5ndGgsIGluZGV4KTsKLSAgICBjYXNlIEludDI0OgotICAgICAg
ICByZXR1cm4gZ2V0Qml0czx1aW50MTZfdD4oYnl0ZWNvZGUsIGJ5dGVjb2RlTGVuZ3RoLCBpbmRl
eCkgfCAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oZ2V0Qml0czxpbnQ4X3Q+KGJ5dGVjb2RlLCBieXRl
Y29kZUxlbmd0aCwgaW5kZXggKyBzaXplb2YodWludDE2X3QpKSkgPDwgMTYpOwotICAgIGNhc2Ug
SW50MzI6Ci0gICAgICAgIHJldHVybiBnZXRCaXRzPGludDMyX3Q+KGJ5dGVjb2RlLCBieXRlY29k
ZUxlbmd0aCwgaW5kZXgpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgY2FzZSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQ4OgorICAgICAg
ICByZXR1cm4gZ2V0Qml0czxpbnQ4X3Q+KGJ5dGVjb2RlLCBpbmRleCk7CisgICAgY2FzZSBERkFC
eXRlY29kZUp1bXBTaXplOjpJbnQxNjoKKyAgICAgICAgcmV0dXJuIGdldEJpdHM8aW50MTZfdD4o
Ynl0ZWNvZGUsIGluZGV4KTsKKyAgICBjYXNlIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDI0Ogor
ICAgICAgICByZXR1cm4gZ2V0MjRCaXRzKGJ5dGVjb2RlLCBpbmRleCk7CisgICAgY2FzZSBERkFC
eXRlY29kZUp1bXBTaXplOjpJbnQzMjoKKyAgICAgICAgcmV0dXJuIGdldEJpdHM8aW50MzJfdD4o
Ynl0ZWNvZGUsIGluZGV4KTsKICAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIG1hdGNoZXNDb25kaXRpb24odWludDY0X3QgYWN0
aW9uQW5kRmxhZ3MsIGNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIGNvbmRp
dGlvbkFjdGlvbnMpCitzdGF0aWMgYm9vbCBtYXRjaGVzQ29uZGl0aW9uKHVpbnQ2NF90IGFjdGlv
bkFuZEZsYWdzLCBjb25zdCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zJiBjb25kaXRp
b25BY3Rpb25zKQogewogICAgIGJvb2wgaWZDb25kaXRpb24gPSBhY3Rpb25BbmRGbGFncyAmIElm
Q29uZGl0aW9uRmxhZzsKICAgICBib29sIGNvbmRpdGlvbiA9IGNvbmRpdGlvbkFjdGlvbnMuY29u
dGFpbnMoYWN0aW9uQW5kRmxhZ3MpOwpAQCAtOTUsNTEgKzE4OCw0OCBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgbWF0Y2hlc0NvbmRpdGlvbih1aW50NjRfdCBhY3Rpb25BbmRGbGFncywgY29uc3QgREZB
Qnl0ZWNvZGVJbgogCiB2b2lkIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldEFwcGVu
ZEFjdGlvbih1aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIsIEFjdGlvbnMmIGFjdGlvbnMsIGJvb2wg
aWZDb25kaXRpb24pCiB7Ci0gICAgQVNTRVJUKGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIG1f
Ynl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSA9PSBERkFCeXRlY29kZUluc3RydWN0aW9u
OjpBcHBlbmRBY3Rpb24KLSAgICAgICAgfHwgZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgbV9i
eXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIpID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246
OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbik7Ci0gICAgdWludDY0X3QgYWN0aW9uID0gKGlm
Q29uZGl0aW9uID8gSWZDb25kaXRpb25GbGFnIDogMCkgfCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
Z2V0Qml0czx1aW50MzJfdD4obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNv
dW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikpKTsKKyAgICBBU1NFUlQoZ2V0
SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpID09IERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb246OkFwcGVuZEFjdGlvbgorICAgICAgICB8fCBnZXRJbnN0cnVjdGlvbihtX2J5dGVj
b2RlLCBwcm9ncmFtQ291bnRlcikgPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0
aW9uV2l0aElmQ29uZGl0aW9uKTsKKyAgICBhdXRvIGluc3RydWN0aW9uTG9jYXRpb24gPSBwcm9n
cmFtQ291bnRlcisrOworICAgIHVpbnQ2NF90IGFjdGlvbldpdGhvdXRGbGFncyA9IGNvbnN1bWVB
Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIsIGluc3RydWN0aW9uTG9jYXRpb24pOwor
ICAgIHVpbnQ2NF90IGFjdGlvbiA9IChpZkNvbmRpdGlvbiA/IElmQ29uZGl0aW9uRmxhZyA6IDAp
IHwgYWN0aW9uV2l0aG91dEZsYWdzOwogICAgIGlmICghbV90b3BVUkxBY3Rpb25zIHx8IG1hdGNo
ZXNDb25kaXRpb24oYWN0aW9uLCAqbV90b3BVUkxBY3Rpb25zKSkKICAgICAgICAgYWN0aW9ucy5h
ZGQoYWN0aW9uKTsKLSAgICAKLSAgICBwcm9ncmFtQ291bnRlciArPSBpbnN0cnVjdGlvblNpemVX
aXRoQXJndW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbik7Ci0gICAg
QVNTRVJUKGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlv
bjo6QXBwZW5kQWN0aW9uKSA9PSBpbnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRzKERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbikpOwogfQogCi12b2lk
IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlv
bih1aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIsIHVpbnQxNl90IGZsYWdzLCBBY3Rpb25zJiBhY3Rp
b25zLCBib29sIGlmQ29uZGl0aW9uKQordm9pZCBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRl
cnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24odWludDMyX3QmIHByb2dyYW1Db3VudGVyLCBS
ZXNvdXJjZUZsYWdzIGZsYWdzLCBBY3Rpb25zJiBhY3Rpb25zLCBib29sIGlmQ29uZGl0aW9uKQog
ewotICAgIEFTU0VSVChnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3Ro
LCBwcm9ncmFtQ291bnRlcikgPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5k
QXBwZW5kQWN0aW9uCi0gICAgICAgIHx8IGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIG1fYnl0
ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpU
ZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24pOwotICAgIHVpbnQxNl90IGZs
YWdzVG9DaGVjayA9IGdldEJpdHM8dWludDE2X3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5n
dGgsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pKTsKKyAg
ICBhdXRvIGluc3RydWN0aW9uTG9jYXRpb24gPSBwcm9ncmFtQ291bnRlcjsKKyAgICBhdXRvIGZs
YWdzVG9DaGVjayA9IGNvbnN1bWVSZXNvdXJjZUZsYWdzQW5kSW5zdHJ1Y3Rpb24obV9ieXRlY29k
ZSwgcHJvZ3JhbUNvdW50ZXIpOwogCi0gICAgdWludDE2X3QgbG9hZFR5cGVGbGFncyA9IGZsYWdz
VG9DaGVjayAmIExvYWRUeXBlTWFzazsKLSAgICB1aW50MTZfdCBsb2FkQ29udGV4dEZsYWdzID0g
ZmxhZ3NUb0NoZWNrICYgTG9hZENvbnRleHRNYXNrOwotICAgIHVpbnQxNl90IHJlc291cmNlVHlw
ZUZsYWdzID0gZmxhZ3NUb0NoZWNrICYgUmVzb3VyY2VUeXBlTWFzazsKKyAgICBSZXNvdXJjZUZs
YWdzIGxvYWRUeXBlRmxhZ3MgPSBmbGFnc1RvQ2hlY2sgJiBMb2FkVHlwZU1hc2s7CisgICAgUmVz
b3VyY2VGbGFncyBsb2FkQ29udGV4dEZsYWdzID0gZmxhZ3NUb0NoZWNrICYgTG9hZENvbnRleHRN
YXNrOworICAgIFJlc291cmNlRmxhZ3MgcmVzb3VyY2VUeXBlRmxhZ3MgPSBmbGFnc1RvQ2hlY2sg
JiBSZXNvdXJjZVR5cGVNYXNrOwogCiAgICAgYm9vbCBsb2FkVHlwZU1hdGNoZXMgPSBsb2FkVHlw
ZUZsYWdzID8gKGxvYWRUeXBlRmxhZ3MgJiBmbGFncykgOiB0cnVlOwogICAgIGJvb2wgbG9hZENv
bnRleHRNYXRjaGVzID0gbG9hZENvbnRleHRGbGFncyA/IChsb2FkQ29udGV4dEZsYWdzICYgZmxh
Z3MpIDogdHJ1ZTsKICAgICBib29sIHJlc291cmNlVHlwZU1hdGNoZXMgPSByZXNvdXJjZVR5cGVG
bGFncyA/IChyZXNvdXJjZVR5cGVGbGFncyAmIGZsYWdzKSA6IHRydWU7CiAgICAgCisgICAgYXV0
byBhY3Rpb25XaXRob3V0RmxhZ3MgPSBjb25zdW1lQWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1D
b3VudGVyLCBpbnN0cnVjdGlvbkxvY2F0aW9uKTsKICAgICBpZiAobG9hZFR5cGVNYXRjaGVzICYm
IGxvYWRDb250ZXh0TWF0Y2hlcyAmJiByZXNvdXJjZVR5cGVNYXRjaGVzKSB7Ci0gICAgICAgIHVp
bnQ2NF90IGFjdGlvbkFuZEZsYWdzID0gKGlmQ29uZGl0aW9uID8gSWZDb25kaXRpb25GbGFnIDog
MCkgfCAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGZsYWdzVG9DaGVjaykgPDwgMzIpIHwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGdldEJpdHM8dWludDMyX3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVM
ZW5ndGgsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pICsg
c2l6ZW9mKHVpbnQxNl90KSkpOworICAgICAgICB1aW50NjRfdCBhY3Rpb25BbmRGbGFncyA9IChp
ZkNvbmRpdGlvbiA/IElmQ29uZGl0aW9uRmxhZyA6IDApIHwgKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihmbGFnc1RvQ2hlY2spIDw8IDMyKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhY3Rpb25XaXRo
b3V0RmxhZ3MpOwogICAgICAgICBpZiAoIW1fdG9wVVJMQWN0aW9ucyB8fCBtYXRjaGVzQ29uZGl0
aW9uKGFjdGlvbkFuZEZsYWdzLCAqbV90b3BVUkxBY3Rpb25zKSkKICAgICAgICAgICAgIGFjdGlv
bnMuYWRkKGFjdGlvbkFuZEZsYWdzKTsKICAgICB9Ci0gICAgcHJvZ3JhbUNvdW50ZXIgKz0gaW5z
dHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0Rmxh
Z3NBbmRBcHBlbmRBY3Rpb24pOwotICAgIEFTU0VSVChpbnN0cnVjdGlvblNpemVXaXRoQXJndW1l
bnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbikgPT0g
aW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0
RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24pKTsKIH0KIAogdGVtcGxhdGU8Ym9v
bCBjYXNlU2Vuc2l0aXZlPgogaW5saW5lIHZvaWQgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50
ZXJwZXRKdW1wVGFibGUoY29uc3QgY2hhciogdXJsLCB1aW50MzJfdCYgdXJsSW5kZXgsIHVpbnQz
Ml90JiBwcm9ncmFtQ291bnRlciwgYm9vbCYgdXJsSW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcpCiB7
Ci0gICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IGdldEp1bXBTaXplKG1fYnl0ZWNv
ZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKTsKKyAgICBERkFCeXRlY29kZUp1
bXBTaXplIGp1bXBTaXplID0gZ2V0SnVtcFNpemUobV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIp
OwogCiAgICAgY2hhciBjaGFyYWN0ZXIgPSBjYXNlU2Vuc2l0aXZlID8gdXJsW3VybEluZGV4XSA6
IHRvQVNDSUlMb3dlcih1cmxbdXJsSW5kZXhdKTsKLSAgICB1aW50OF90IGZpcnN0Q2hhcmFjdGVy
ID0gZ2V0Qml0czx1aW50OF90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFt
Q291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSk7Ci0gICAgdWludDhfdCBs
YXN0Q2hhcmFjdGVyID0gZ2V0Qml0czx1aW50OF90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVu
Z3RoLCBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIHNp
emVvZih1aW50OF90KSk7CisgICAgdWludDhfdCBmaXJzdENoYXJhY3RlciA9IGdldEJpdHM8dWlu
dDhfdD4obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbikpOworICAgIHVpbnQ4X3QgbGFzdENoYXJhY3RlciA9IGdldEJpdHM8dWludDhfdD4o
bV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlv
bikgKyBzaXplb2YodWludDhfdCkpOwogICAgIGlmIChjaGFyYWN0ZXIgPj0gZmlyc3RDaGFyYWN0
ZXIgJiYgY2hhcmFjdGVyIDw9IGxhc3RDaGFyYWN0ZXIpIHsKICAgICAgICAgdWludDMyX3Qgc3Rh
cnRPZmZzZXQgPSBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9u
KSArIDIgKiBzaXplb2YodWludDhfdCk7CiAgICAgICAgIHVpbnQzMl90IGp1bXBMb2NhdGlvbiA9
IHN0YXJ0T2Zmc2V0ICsgKGNoYXJhY3RlciAtIGZpcnN0Q2hhcmFjdGVyKSAqIGp1bXBTaXplSW5C
eXRlcyhqdW1wU2l6ZSk7Ci0gICAgICAgIHByb2dyYW1Db3VudGVyICs9IGdldEp1bXBEaXN0YW5j
ZShtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBqdW1wTG9jYXRpb24sIGp1bXBTaXplKTsK
KyAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gZ2V0SnVtcERpc3RhbmNlKG1fYnl0ZWNvZGUsIGp1
bXBMb2NhdGlvbiwganVtcFNpemUpOwogICAgICAgICBpZiAoIWNoYXJhY3RlcikKICAgICAgICAg
ICAgIHVybEluZGV4SXNBZnRlckVuZE9mU3RyaW5nID0gdHJ1ZTsKICAgICAgICAgdXJsSW5kZXgr
KzsgLy8gVGhpcyByZXByZXNlbnRzIGFuIGVkZ2UgaW4gdGhlIERGQS4KQEAgLTE0Nyw0MCArMjM3
LDQxIEBAIGlubGluZSB2b2lkIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycGV0SnVtcFRh
YmxlKGNvbnN0IGNoYXIqIHVybCwgdWludDMyX3QmCiAgICAgICAgIHByb2dyYW1Db3VudGVyICs9
IHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIDIgKiBzaXplb2YodWludDhfdCkgKyBq
dW1wU2l6ZUluQnl0ZXMoanVtcFNpemUpICogKGxhc3RDaGFyYWN0ZXIgLSBmaXJzdENoYXJhY3Rl
ciArIDEpOwogfQogCi1ERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXI6OmFjdGlvbnNNYXRjaGluZ0V2ZXJ5dGhpbmcoKQorYXV0byBERkFCeXRlY29k
ZUludGVycHJldGVyOjphY3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nKCkgLT4gQWN0aW9ucwogewog
ICAgIEFjdGlvbnMgYWN0aW9uczsKIAogICAgIC8vIERGQSBoZWFkZXIuCi0gICAgdWludDMyX3Qg
ZGZhQnl0ZWNvZGVMZW5ndGggPSBnZXRCaXRzPHVpbnQzMl90PihtX2J5dGVjb2RlLCBtX2J5dGVj
b2RlTGVuZ3RoLCAwKTsKLSAgICB1aW50MzJfdCBwcm9ncmFtQ291bnRlciA9IHNpemVvZih1aW50
MzJfdCk7CisgICAgdWludDMyX3QgZGZhQnl0ZWNvZGVMZW5ndGggPSBnZXRCaXRzPHVpbnQzMl90
PihtX2J5dGVjb2RlLCAwKTsKKyAgICB1aW50MzJfdCBwcm9ncmFtQ291bnRlciA9IHNpemVvZihE
RkFIZWFkZXIpOwogCiAgICAgd2hpbGUgKHByb2dyYW1Db3VudGVyIDwgZGZhQnl0ZWNvZGVMZW5n
dGgpIHsKLSAgICAgICAgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbiA9IGdldElu
c3RydWN0aW9uKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKTsK
KyAgICAgICAgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbiA9IGdldEluc3RydWN0
aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKTsKICAgICAgICAgaWYgKGluc3RydWN0aW9u
ID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbikKICAgICAgICAgICAgIGlu
dGVycHJldEFwcGVuZEFjdGlvbihwcm9ncmFtQ291bnRlciwgYWN0aW9ucywgZmFsc2UpOwogICAg
ICAgICBlbHNlIGlmIChpbnN0cnVjdGlvbiA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBl
bmRBY3Rpb25XaXRoSWZDb25kaXRpb24pCiAgICAgICAgICAgICBpbnRlcnByZXRBcHBlbmRBY3Rp
b24ocHJvZ3JhbUNvdW50ZXIsIGFjdGlvbnMsIHRydWUpOwotICAgICAgICBlbHNlIGlmIChpbnN0
cnVjdGlvbiA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rp
b24pCi0gICAgICAgICAgICBwcm9ncmFtQ291bnRlciArPSBpbnN0cnVjdGlvblNpemVXaXRoQXJn
dW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbik7
Ci0gICAgICAgIGVsc2UgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246
OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbikKLSAgICAgICAgICAgIHBy
b2dyYW1Db3VudGVyICs9IGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJ
bnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKTsKLSAg
ICAgICAgZWxzZQorICAgICAgICBlbHNlIGlmIChpbnN0cnVjdGlvbiA9PSBERkFCeXRlY29kZUlu
c3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24KKyAgICAgICAgICAgIHx8IGluc3Ry
dWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlv
bldpdGhJZkNvbmRpdGlvbikgeworICAgICAgICAgICAgYXV0byBwcm9ncmFtQ291bnRlckF0SW5z
dHJ1Y3Rpb24gPSBwcm9ncmFtQ291bnRlcjsKKyAgICAgICAgICAgIGNvbnN1bWVSZXNvdXJjZUZs
YWdzQW5kSW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOworICAgICAgICAg
ICAgY29uc3VtZUFjdGlvbihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlciwgcHJvZ3JhbUNvdW50
ZXJBdEluc3RydWN0aW9uKTsKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgcmV0dXJuIGFjdGlvbnM7CiB9CiAgICAgCi1ERkFCeXRlY29kZUludGVycHJldGVy
OjpBY3Rpb25zIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldFdpdGhDb25kaXRpb25z
KGNvbnN0IENTdHJpbmcmIHVybENTdHJpbmcsIHVpbnQxNl90IGZsYWdzLCBjb25zdCBERkFCeXRl
Y29kZUludGVycHJldGVyOjpBY3Rpb25zJiB0b3BVUkxBY3Rpb25zKQorYXV0byBERkFCeXRlY29k
ZUludGVycHJldGVyOjppbnRlcnByZXRXaXRoQ29uZGl0aW9ucyhjb25zdCBDU3RyaW5nJiB1cmxD
U3RyaW5nLCBSZXNvdXJjZUZsYWdzIGZsYWdzLCBjb25zdCBBY3Rpb25zJiB0b3BVUkxBY3Rpb25z
KSAtPiBBY3Rpb25zCiB7CiAgICAgQVNTRVJUKCFtX3RvcFVSTEFjdGlvbnMpOwogICAgIG1fdG9w
VVJMQWN0aW9ucyA9ICZ0b3BVUkxBY3Rpb25zOwotICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6
OkFjdGlvbnMgYWN0aW9ucyA9IGludGVycHJldCh1cmxDU3RyaW5nLCBmbGFncyk7CisgICAgYXV0
byBhY3Rpb25zID0gaW50ZXJwcmV0KHVybENTdHJpbmcsIGZsYWdzKTsKICAgICBtX3RvcFVSTEFj
dGlvbnMgPSBudWxscHRyOwogICAgIHJldHVybiBhY3Rpb25zOwogfQogCi1ERkFCeXRlY29kZUlu
dGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldChjb25z
dCBDU3RyaW5nJiB1cmxDU3RyaW5nLCB1aW50MTZfdCBmbGFncykKK2F1dG8gREZBQnl0ZWNvZGVJ
bnRlcnByZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmIHVybENTdHJpbmcsIFJlc291cmNl
RmxhZ3MgZmxhZ3MpIC0+IEFjdGlvbnMKIHsKICAgICBjb25zdCBjaGFyKiB1cmwgPSB1cmxDU3Ry
aW5nLmRhdGEoKTsKICAgICBBU1NFUlQodXJsKTsKQEAgLTE4OCwzNSArMjc5LDM0IEBAIERGQUJ5
dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJw
cmV0KGNvbnN0IENTdHJpbmcmCiAgICAgQWN0aW9ucyBhY3Rpb25zOwogICAgIAogICAgIHVpbnQz
Ml90IHByb2dyYW1Db3VudGVyID0gMDsKLSAgICB3aGlsZSAocHJvZ3JhbUNvdW50ZXIgPCBtX2J5
dGVjb2RlTGVuZ3RoKSB7CisgICAgd2hpbGUgKHByb2dyYW1Db3VudGVyIDwgbV9ieXRlY29kZS5z
aXplKCkpIHsKIAogICAgICAgICAvLyBERkEgaGVhZGVyLgogICAgICAgICB1aW50MzJfdCBkZmFT
dGFydCA9IHByb2dyYW1Db3VudGVyOwotICAgICAgICB1aW50MzJfdCBkZmFCeXRlY29kZUxlbmd0
aCA9IGdldEJpdHM8dWludDMyX3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dy
YW1Db3VudGVyKTsKKyAgICAgICAgdWludDMyX3QgZGZhQnl0ZWNvZGVMZW5ndGggPSBnZXRCaXRz
PHVpbnQzMl90PihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcik7CiAgICAgICAgIHByb2dyYW1D
b3VudGVyICs9IHNpemVvZih1aW50MzJfdCk7CiAKICAgICAgICAgLy8gU2tpcCB0aGUgYWN0aW9u
cyB3aXRob3V0IGZsYWdzIG9uIHRoZSBERkEgcm9vdC4gVGhlc2UgYXJlIGFjY2Vzc2VkIHZpYSBh
Y3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nLgogICAgICAgICBpZiAoIWRmYVN0YXJ0KSB7CiAgICAg
ICAgICAgICB3aGlsZSAocHJvZ3JhbUNvdW50ZXIgPCBkZmFCeXRlY29kZUxlbmd0aCkgewotICAg
ICAgICAgICAgICAgIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb24gPSBnZXRJbnN0
cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlcik7Ci0g
ICAgICAgICAgICAgICAgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246
OkFwcGVuZEFjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gaW5z
dHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRB
Y3Rpb24pOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gaW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhE
RkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24pOwotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rp
b246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbikKKyAgICAgICAgICAgICAgICBERkFCeXRlY29k
ZUluc3RydWN0aW9uIGluc3RydWN0aW9uID0gZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJv
Z3JhbUNvdW50ZXIpOworICAgICAgICAgICAgICAgIGlmIChpbnN0cnVjdGlvbiA9PSBERkFCeXRl
Y29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24gfHwgaW5zdHJ1Y3Rpb24gPT0gREZBQnl0ZWNv
ZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKSB7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb25Mb2NhdGlvbiA9IHByb2dyYW1Db3VudGVyKys7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN1bWVBY3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50
ZXIsIGluc3RydWN0aW9uTG9jYXRpb24pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5z
dHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0
aW9uKQogICAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rp
b24ocHJvZ3JhbUNvdW50ZXIsIGZsYWdzLCBhY3Rpb25zLCBmYWxzZSk7CiAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoaW5zdHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZs
YWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKQogICAgICAgICAgICAgICAgICAgICBp
bnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24ocHJvZ3JhbUNvdW50ZXIsIGZsYWdzLCBh
Y3Rpb25zLCB0cnVlKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHByb2dyYW1Db3VudGVyID49
IG1fYnl0ZWNvZGVMZW5ndGgpCisgICAgICAgICAgICBpZiAocHJvZ3JhbUNvdW50ZXIgPj0gbV9i
eXRlY29kZS5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnM7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGdldEluc3RydWN0aW9u
KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSAhPSBERkFCeXRl
Y29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24KLSAgICAgICAgICAgICAgICAmJiBnZXRJbnN0
cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlcikgIT0g
REZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uCi0gICAg
ICAgICAgICAgICAgJiYgZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0
aCwgcHJvZ3JhbUNvdW50ZXIpICE9IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0Fu
ZEFwcGVuZEFjdGlvbgotICAgICAgICAgICAgICAgICYmIGdldEluc3RydWN0aW9uKG1fYnl0ZWNv
ZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSAhPSBERkFCeXRlY29kZUluc3Ry
dWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24sCisgICAgICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dy
YW1Db3VudGVyKSAhPSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24KKyAgICAg
ICAgICAgICAgICAmJiBnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcikg
IT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uCisg
ICAgICAgICAgICAgICAgJiYgZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50
ZXIpICE9IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbgor
ICAgICAgICAgICAgICAgICYmIGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3Vu
dGVyKSAhPSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25X
aXRoSWZDb25kaXRpb24sCiAgICAgICAgICAgICAgICAgIlRyaWdnZXJzIHRoYXQgbWF0Y2ggZXZl
cnl0aGluZyBzaG91bGQgb25seSBiZSBpbiB0aGUgZmlyc3QgREZBLiIpOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtMjI1LDggKzMxNSw4IEBAIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlv
bnMgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmCiAgICAg
ICAgIHVpbnQzMl90IHVybEluZGV4ID0gMDsKICAgICAgICAgYm9vbCB1cmxJbmRleElzQWZ0ZXJF
bmRPZlN0cmluZyA9IGZhbHNlOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAg
QVNTRVJUKHByb2dyYW1Db3VudGVyIDw9IG1fYnl0ZWNvZGVMZW5ndGgpOwotICAgICAgICAgICAg
c3dpdGNoIChnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9n
cmFtQ291bnRlcikpIHsKKyAgICAgICAgICAgIEFTU0VSVChwcm9ncmFtQ291bnRlciA8PSBtX2J5
dGVjb2RlLnNpemUoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGdldEluc3RydWN0aW9uKG1fYnl0
ZWNvZGUsIHByb2dyYW1Db3VudGVyKSkgewogCiAgICAgICAgICAgICBjYXNlIERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb246OlRlcm1pbmF0ZToKICAgICAgICAgICAgICAgICBnb3RvIG5leHRERkE7CkBA
IC0yMzcsMTAgKzMyNywxMCBAQCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIERGQUJ5
dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldChjb25zdCBDU3RyaW5nJgogCiAgICAgICAgICAg
ICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBuZXh0IGNoYXJhY3RlciBpbiB0aGUgdXJsIGlz
IHRoZSB2YWx1ZSBzdG9yZWQgd2l0aCB0aGUgYnl0ZWNvZGUuCiAgICAgICAgICAgICAgICAgY2hh
ciBjaGFyYWN0ZXIgPSB1cmxbdXJsSW5kZXhdOwotICAgICAgICAgICAgICAgIERGQUJ5dGVjb2Rl
SnVtcFNpemUganVtcFNpemUgPSBnZXRKdW1wU2l6ZShtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVu
Z3RoLCBwcm9ncmFtQ291bnRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBn
ZXRCaXRzPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3Vu
dGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pKSkgeworICAgICAgICAgICAgICAg
IERGQUJ5dGVjb2RlSnVtcFNpemUganVtcFNpemUgPSBnZXRKdW1wU2l6ZShtX2J5dGVjb2RlLCBw
cm9ncmFtQ291bnRlcik7CisgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBnZXRCaXRz
PHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb24pKSkgewogICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBqdW1wTG9jYXRp
b24gPSBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIHNp
emVvZih1aW50OF90KTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gZ2V0
SnVtcERpc3RhbmNlKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIGp1bXBMb2NhdGlvbiwg
anVtcFNpemUpOworICAgICAgICAgICAgICAgICAgICBwcm9ncmFtQ291bnRlciArPSBnZXRKdW1w
RGlzdGFuY2UobV9ieXRlY29kZSwganVtcExvY2F0aW9uLCBqdW1wU2l6ZSk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghY2hhcmFjdGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgdXJsSW5k
ZXhJc0FmdGVyRW5kT2ZTdHJpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB1cmxJbmRl
eCsrOyAvLyBUaGlzIHJlcHJlc2VudHMgYW4gZWRnZSBpbiB0aGUgREZBLgpAQCAtMjU1LDEwICsz
NDUsMTAgQEAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyBERkFCeXRlY29kZUludGVy
cHJldGVyOjppbnRlcnByZXQoY29uc3QgQ1N0cmluZyYKIAogICAgICAgICAgICAgICAgIC8vIENo
ZWNrIHRvIHNlZSBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIHVybCBpcyB0aGUgdmFsdWUg
c3RvcmVkIHdpdGggdGhlIGJ5dGVjb2RlLgogICAgICAgICAgICAgICAgIGNoYXIgY2hhcmFjdGVy
ID0gdG9BU0NJSUxvd2VyKHVybFt1cmxJbmRleF0pOwotICAgICAgICAgICAgICAgIERGQUJ5dGVj
b2RlSnVtcFNpemUganVtcFNpemUgPSBnZXRKdW1wU2l6ZShtX2J5dGVjb2RlLCBtX2J5dGVjb2Rl
TGVuZ3RoLCBwcm9ncmFtQ291bnRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9
PSBnZXRCaXRzPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1D
b3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pKSkgeworICAgICAgICAgICAg
ICAgIERGQUJ5dGVjb2RlSnVtcFNpemUganVtcFNpemUgPSBnZXRKdW1wU2l6ZShtX2J5dGVjb2Rl
LCBwcm9ncmFtQ291bnRlcik7CisgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBnZXRC
aXRzPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb24pKSkgewogICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBqdW1wTG9j
YXRpb24gPSBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSAr
IHNpemVvZih1aW50OF90KTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0g
Z2V0SnVtcERpc3RhbmNlKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIGp1bXBMb2NhdGlv
biwganVtcFNpemUpOworICAgICAgICAgICAgICAgICAgICBwcm9ncmFtQ291bnRlciArPSBnZXRK
dW1wRGlzdGFuY2UobV9ieXRlY29kZSwganVtcExvY2F0aW9uLCBqdW1wU2l6ZSk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgdXJs
SW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB1cmxJ
bmRleCsrOyAvLyBUaGlzIHJlcHJlc2VudHMgYW4gZWRnZSBpbiB0aGUgREZBLgpAQCAtMjg1LDEx
ICszNzUsMTEgQEAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyBERkFCeXRlY29kZUlu
dGVycHJldGVyOjppbnRlcnByZXQoY29uc3QgQ1N0cmluZyYKICAgICAgICAgICAgICAgICAgICAg
Z290byBuZXh0REZBOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNoYXIgY2hh
cmFjdGVyID0gdXJsW3VybEluZGV4XTsKLSAgICAgICAgICAgICAgICBERkFCeXRlY29kZUp1bXBT
aXplIGp1bXBTaXplID0gZ2V0SnVtcFNpemUobV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwg
cHJvZ3JhbUNvdW50ZXIpOwotICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPj0gZ2V0Qml0
czx1aW50OF90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlciAr
IHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAgJiYg
Y2hhcmFjdGVyIDw9IGdldEJpdHM8dWludDhfdD4obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0
aCwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikgKyBzaXpl
b2YodWludDhfdCkpKSB7CisgICAgICAgICAgICAgICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1w
U2l6ZSA9IGdldEp1bXBTaXplKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKTsKKyAgICAgICAg
ICAgICAgICBpZiAoY2hhcmFjdGVyID49IGdldEJpdHM8dWludDhfdD4obV9ieXRlY29kZSwgcHJv
Z3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikpCisgICAgICAgICAg
ICAgICAgICAgICYmIGNoYXJhY3RlciA8PSBnZXRCaXRzPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHBy
b2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pICsgc2l6ZW9mKHVp
bnQ4X3QpKSkgewogICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBqdW1wTG9jYXRpb24gPSBw
cm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIDIgKiBzaXpl
b2YodWludDhfdCk7Ci0gICAgICAgICAgICAgICAgICAgIHByb2dyYW1Db3VudGVyICs9IGdldEp1
bXBEaXN0YW5jZShtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBqdW1wTG9jYXRpb24sIGp1
bXBTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gZ2V0SnVtcERp
c3RhbmNlKG1fYnl0ZWNvZGUsIGp1bXBMb2NhdGlvbiwganVtcFNpemUpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNoYXJhY3RlcikKICAgICAgICAgICAgICAgICAgICAgICAgIHVybEluZGV4
SXNBZnRlckVuZE9mU3RyaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgdXJsSW5kZXgr
KzsgLy8gVGhpcyByZXByZXNlbnRzIGFuIGVkZ2UgaW4gdGhlIERGQS4KQEAgLTMwMywxMSArMzkz
LDExIEBAIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgREZBQnl0ZWNvZGVJbnRlcnBy
ZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmCiAgICAgICAgICAgICAgICAgICAgIGdvdG8g
bmV4dERGQTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjaGFyIGNoYXJhY3Rl
ciA9IHRvQVNDSUlMb3dlcih1cmxbdXJsSW5kZXhdKTsKLSAgICAgICAgICAgICAgICBERkFCeXRl
Y29kZUp1bXBTaXplIGp1bXBTaXplID0gZ2V0SnVtcFNpemUobV9ieXRlY29kZSwgbV9ieXRlY29k
ZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIpOwotICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIg
Pj0gZ2V0Qml0czx1aW50OF90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFt
Q291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSkKLSAgICAgICAgICAgICAg
ICAgICAgJiYgY2hhcmFjdGVyIDw9IGdldEJpdHM8dWludDhfdD4obV9ieXRlY29kZSwgbV9ieXRl
Y29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlv
bikgKyBzaXplb2YodWludDhfdCkpKSB7CisgICAgICAgICAgICAgICAgREZBQnl0ZWNvZGVKdW1w
U2l6ZSBqdW1wU2l6ZSA9IGdldEp1bXBTaXplKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKTsK
KyAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyID49IGdldEJpdHM8dWludDhfdD4obV9ieXRl
Y29kZSwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikpCisg
ICAgICAgICAgICAgICAgICAgICYmIGNoYXJhY3RlciA8PSBnZXRCaXRzPHVpbnQ4X3Q+KG1fYnl0
ZWNvZGUsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pICsg
c2l6ZW9mKHVpbnQ4X3QpKSkgewogICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBqdW1wTG9j
YXRpb24gPSBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSAr
IDIgKiBzaXplb2YodWludDhfdCk7Ci0gICAgICAgICAgICAgICAgICAgIHByb2dyYW1Db3VudGVy
ICs9IGdldEp1bXBEaXN0YW5jZShtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBqdW1wTG9j
YXRpb24sIGp1bXBTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0g
Z2V0SnVtcERpc3RhbmNlKG1fYnl0ZWNvZGUsIGp1bXBMb2NhdGlvbiwganVtcFNpemUpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoIWNoYXJhY3RlcikKICAgICAgICAgICAgICAgICAgICAgICAg
IHVybEluZGV4SXNBZnRlckVuZE9mU3RyaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
dXJsSW5kZXgrKzsgLy8gVGhpcyByZXByZXNlbnRzIGFuIGVkZ2UgaW4gdGhlIERGQS4KQEAgLTMy
MSw4ICs0MTEsOCBAQCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXI6OmludGVycHJldChjb25zdCBDU3RyaW5nJgogICAgICAgICAgICAgICAgICAg
ICBnb3RvIG5leHRERkE7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgdWludDMy
X3QganVtcExvY2F0aW9uID0gcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbik7Ci0gICAgICAgICAgICAgICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9
IGdldEp1bXBTaXplKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVy
KTsKLSAgICAgICAgICAgICAgICBwcm9ncmFtQ291bnRlciArPSBnZXRKdW1wRGlzdGFuY2UobV9i
eXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwganVtcExvY2F0aW9uLCBqdW1wU2l6ZSk7CisgICAg
ICAgICAgICAgICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IGdldEp1bXBTaXplKG1f
Ynl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKTsKKyAgICAgICAgICAgICAgICBwcm9ncmFtQ291bnRl
ciArPSBnZXRKdW1wRGlzdGFuY2UobV9ieXRlY29kZSwganVtcExvY2F0aW9uLCBqdW1wU2l6ZSk7
CiAgICAgICAgICAgICAgICAgdXJsSW5kZXgrKzsgLy8gVGhpcyByZXByZXNlbnRzIGFuIGVkZ2Ug
aW4gdGhlIERGQS4KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM1
Nyw4ICs0NDcsNiBAQCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXI6OmludGVycHJldChjb25zdCBDU3RyaW5nJgogICAgIHJldHVybiBhY3Rpb25z
OwogfQogCi19IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwotICAgIAotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMK
IAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmgK
aW5kZXggMWNmM2I4YzlhYjIxYzYyODg3MWY0YzE0NmI1ZWI2ZWEyYmYwZDdkNC4uNmIyYTFjZjJk
MWJjYTQ0YjExZmM3NjYzOTRmZTRjNzA2NGExYzA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaApAQCAt
MzMsMzcgKzMzLDMwIEBACiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1uYW1lc3BhY2UgQ29udGVu
dEV4dGVuc2lvbnMgeworbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zIHsKIAot
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgREZBQnl0ZWNvZGVJbnRlcnByZXRlciB7CitjbGFzcyBERkFC
eXRlY29kZUludGVycHJldGVyIHsKIHB1YmxpYzoKLSAgICBERkFCeXRlY29kZUludGVycHJldGVy
KGNvbnN0IERGQUJ5dGVjb2RlKiBieXRlY29kZSwgdW5zaWduZWQgYnl0ZWNvZGVMZW5ndGgpCi0g
ICAgICAgIDogbV9ieXRlY29kZShieXRlY29kZSkKLSAgICAgICAgLCBtX2J5dGVjb2RlTGVuZ3Ro
KGJ5dGVjb2RlTGVuZ3RoKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdHlwZWRlZiBIYXNoU2V0
PHVpbnQ2NF90LCBEZWZhdWx0SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dWludDY0X3Q+PiBBY3Rpb25zOwotICAgIAotICAgIEFjdGlvbnMgaW50ZXJw
cmV0KGNvbnN0IENTdHJpbmcmLCB1aW50MTZfdCBmbGFncyk7Ci0gICAgQWN0aW9ucyBpbnRlcnBy
ZXRXaXRoQ29uZGl0aW9ucyhjb25zdCBDU3RyaW5nJiwgdWludDE2X3QgZmxhZ3MsIGNvbnN0IERG
QUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIGNvbmRpdGlvbkFjdGlvbnMpOworICAgIERG
QUJ5dGVjb2RlSW50ZXJwcmV0ZXIoU3Bhbjxjb25zdCB1aW50OF90PiBieXRlY29kZSkKKyAgICAg
ICAgOiBtX2J5dGVjb2RlKGJ5dGVjb2RlKSB7IH0KKworICAgIHVzaW5nIEFjdGlvbnMgPSBIYXNo
U2V0PHVpbnQ2NF90LCBEZWZhdWx0SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PjsKKworICAgIFdFQkNPUkVfRVhQT1JUIEFjdGlvbnMg
aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmLCBSZXNvdXJjZUZsYWdzKTsKKyAgICBBY3Rpb25zIGlu
dGVycHJldFdpdGhDb25kaXRpb25zKGNvbnN0IENTdHJpbmcmLCBSZXNvdXJjZUZsYWdzLCBjb25z
dCBBY3Rpb25zJiBjb25kaXRpb25BY3Rpb25zKTsKICAgICBBY3Rpb25zIGFjdGlvbnNNYXRjaGlu
Z0V2ZXJ5dGhpbmcoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGludGVycHJldEFwcGVuZEFjdGlv
bih1bnNpZ25lZCYgcHJvZ3JhbUNvdW50ZXIsIEFjdGlvbnMmLCBib29sIGlmQ29uZGl0aW9uKTsK
LSAgICB2b2lkIGludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbih1bnNpZ25lZCYgcHJv
Z3JhbUNvdW50ZXIsIHVpbnQxNl90IGZsYWdzLCBBY3Rpb25zJiwgYm9vbCBpZkNvbmRpdGlvbik7
CisgICAgdm9pZCBpbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24odW5zaWduZWQmIHBy
b2dyYW1Db3VudGVyLCBSZXNvdXJjZUZsYWdzLCBBY3Rpb25zJiwgYm9vbCBpZkNvbmRpdGlvbik7
CiAKICAgICB0ZW1wbGF0ZTxib29sIGNhc2VTZW5zaXRpdmU+CiAgICAgdm9pZCBpbnRlcnBldEp1
bXBUYWJsZShjb25zdCBjaGFyKiB1cmwsIHVpbnQzMl90JiB1cmxJbmRleCwgdWludDMyX3QmIHBy
b2dyYW1Db3VudGVyLCBib29sJiB1cmxJbmRleElzQWZ0ZXJFbmRPZlN0cmluZyk7CiAKLSAgICBj
b25zdCBERkFCeXRlY29kZSogbV9ieXRlY29kZTsKLSAgICBjb25zdCB1bnNpZ25lZCBtX2J5dGVj
b2RlTGVuZ3RoOworICAgIGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4gbV9ieXRlY29kZTsKICAg
ICBjb25zdCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zKiBtX3RvcFVSTEFjdGlvbnMg
eyBudWxscHRyIH07CiB9OwogCi19IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyAgICAK
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDc5MWJjOTMyYmRjYzk4MTI2MDZmOGQ1NGI0
Mzk5YzNiNjc5M2Q0ZjMuLmE0NmU2MDBhYmNhYWVjYjRlODY5ZDdlYzFlNzVmNTViZmE2Njg2MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCB2
b2lkIFBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUmIGZyYW1lLCBjb25zdCBV
UkwmIHJlcG9ydFVSTCwgUmVmPEZvcgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocmVw
b3J0VVJMKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIGlmIChwcm9jZXNz
Q29udGVudFJ1bGVMaXN0c0ZvckxvYWQoZnJhbWUsIHJlcXVlc3QsIENvbnRlbnRFeHRlbnNpb25z
OjpSZXNvdXJjZVR5cGU6Ok90aGVyKSkKKyAgICBpZiAocHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNG
b3JMb2FkKGZyYW1lLCByZXF1ZXN0LCBDb250ZW50RXh0ZW5zaW9uczo6UmVzb3VyY2VUeXBlOjpD
U1BSZXBvcnQpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwCmluZGV4IDU0YjgxYmZiZWRiNWQ5Nzk2NjI5NmRmOGI5
NWNkZDU5YjQwNzc0NmMuLjJlZGVlYmQ0OTAxMzExM2I4ZDM2YjMwMWU2YzQ5ODJlNGQxYmM2NDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5jcHAKQEAgLTMyLDgg
KzMyLDcgQEAKICNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyB7CituYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCiBPcHRp
b25TZXQ8UmVzb3VyY2VUeXBlPiB0b1Jlc291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0
eXBlLCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXF1ZXN0ZXIgcmVxdWVzdGVyKQogewpAQCAtOTgs
MTMgKzk3LDEzIEBAIHN0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PFJlc291cmNlVHlwZT4+IHJlYWRS
ZXNvdXJjZVR5cGUoU3RyaW5nVmlldyBuYW1lKQogICAgIGlmIChuYW1lID09ICJmb250IikKICAg
ICAgICAgcmV0dXJuIHsgUmVzb3VyY2VUeXBlOjpGb250IH07CiAgICAgaWYgKG5hbWUgPT0gInJh
dyIpCi0gICAgICAgIHJldHVybiB7eyBSZXNvdXJjZVR5cGU6OkZldGNoLCBSZXNvdXJjZVR5cGU6
OldlYlNvY2tldCwgUmVzb3VyY2VUeXBlOjpPdGhlciwgUmVzb3VyY2VUeXBlOjpQaW5nIH19Owor
ICAgICAgICByZXR1cm4geyB7IFJlc291cmNlVHlwZTo6RmV0Y2gsIFJlc291cmNlVHlwZTo6V2Vi
U29ja2V0LCBSZXNvdXJjZVR5cGU6Ok90aGVyLCBSZXNvdXJjZVR5cGU6OlBpbmcgfSB9OwogICAg
IGlmIChuYW1lID09ICJ3ZWJzb2NrZXQiKQogICAgICAgICByZXR1cm4geyBSZXNvdXJjZVR5cGU6
OldlYlNvY2tldCB9OwogICAgIGlmIChuYW1lID09ICJmZXRjaCIpCiAgICAgICAgIHJldHVybiB7
IFJlc291cmNlVHlwZTo6RmV0Y2ggfTsKICAgICBpZiAobmFtZSA9PSAib3RoZXIiKQotICAgICAg
ICByZXR1cm4ge3sgUmVzb3VyY2VUeXBlOjpPdGhlciwgUmVzb3VyY2VUeXBlOjpQaW5nIH19Owor
ICAgICAgICByZXR1cm4geyB7IFJlc291cmNlVHlwZTo6T3RoZXIsIFJlc291cmNlVHlwZTo6UGlu
ZywgUmVzb3VyY2VUeXBlOjpDU1BSZXBvcnQgfSB9OwogICAgIGlmIChuYW1lID09ICJzdmctZG9j
dW1lbnQiKQogICAgICAgICByZXR1cm4geyBSZXNvdXJjZVR5cGU6OlNWR0RvY3VtZW50IH07CiAg
ICAgaWYgKG5hbWUgPT0gIm1lZGlhIikKQEAgLTExMyw2ICsxMTIsOCBAQCBzdGQ6Om9wdGlvbmFs
PE9wdGlvblNldDxSZXNvdXJjZVR5cGU+PiByZWFkUmVzb3VyY2VUeXBlKFN0cmluZ1ZpZXcgbmFt
ZSkKICAgICAgICAgcmV0dXJuIHsgUmVzb3VyY2VUeXBlOjpQb3B1cCB9OwogICAgIGlmIChuYW1l
ID09ICJwaW5nIikKICAgICAgICAgcmV0dXJuIHsgUmVzb3VyY2VUeXBlOjpQaW5nIH07CisgICAg
aWYgKG5hbWUgPT0gImNzcC1yZXBvcnQiKQorICAgICAgICByZXR1cm4geyBSZXNvdXJjZVR5cGU6
OkNTUFJlcG9ydCB9OwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKQEAgLTE0OSw3ICsx
NTAsNiBAQCBSZXNvdXJjZUZsYWdzIFJlc291cmNlTG9hZEluZm86OmdldFJlc291cmNlRmxhZ3Mo
KSBjb25zdAogICAgIHJldHVybiBmbGFnczsKIH0KIAotfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4
dGVuc2lvbnMKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKaW5kZXggZTA4ZWI4MmQw
NTBkN2U3ZTdiNmU5MDI1ZjBlNGRlZTNlZTdjZmZkNC4uYTlhYzA3YmU5YmIyOWEzYmJiOWY3YWQ1
YWZjNmJlMzc4OGE3MWQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5m
by5oCkBAIC0zMSwxMCArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBDb250ZW50
RXh0ZW5zaW9ucyB7CituYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCi1l
bnVtIGNsYXNzIFJlc291cmNlVHlwZSA6IHVpbnQxNl90IHsKK2VudW0gY2xhc3MgUmVzb3VyY2VU
eXBlIDogdWludDMyX3QgewogICAgIERvY3VtZW50ID0gMHgwMDAxLAogICAgIEltYWdlID0gMHgw
MDAyLAogICAgIFN0eWxlU2hlZXQgPSAweDAwMDQsCkBAIC00NywzNiArNDYsMzcgQEAgZW51bSBj
bGFzcyBSZXNvdXJjZVR5cGUgOiB1aW50MTZfdCB7CiAgICAgRmV0Y2ggPSAweDAyMDAsCiAgICAg
V2ViU29ja2V0ID0gMHgwNDAwLAogICAgIE90aGVyID0gMHgwODAwLAorICAgIENTUFJlcG9ydCA9
IDB4MTAwMDAsCiB9OwotY29uc3QgdWludDE2X3QgUmVzb3VyY2VUeXBlTWFzayA9IDB4MEZGRjsK
K3N0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgUmVzb3VyY2VUeXBlTWFzayA9IDB4MTBGRkY7CiAK
LWVudW0gY2xhc3MgTG9hZFR5cGUgOiB1aW50MTZfdCB7CitlbnVtIGNsYXNzIExvYWRUeXBlIDog
dWludDMyX3QgewogICAgIEZpcnN0UGFydHkgPSAweDEwMDAsCiAgICAgVGhpcmRQYXJ0eSA9IDB4
MjAwMCwKIH07Ci1jb25zdCB1aW50MTZfdCBMb2FkVHlwZU1hc2sgPSAweDMwMDA7CitzdGF0aWMg
Y29uc3RleHByIHVpbnQzMl90IExvYWRUeXBlTWFzayA9IDB4MzAwMDsKIAotZW51bSBjbGFzcyBM
b2FkQ29udGV4dCA6IHVpbnQxNl90IHsKK2VudW0gY2xhc3MgTG9hZENvbnRleHQgOiB1aW50MzJf
dCB7CiAgICAgVG9wRnJhbWUgPSAweDQwMDAsCiAgICAgQ2hpbGRGcmFtZSA9IDB4ODAwMCwKIH07
Ci1jb25zdCB1aW50MTZfdCBMb2FkQ29udGV4dE1hc2sgPSAweEMwMDA7CitzdGF0aWMgY29uc3Rl
eHByIHVpbnQzMl90IExvYWRDb250ZXh0TWFzayA9IDB4QzAwMDsKIAotc3RhdGljX2Fzc2VydCgh
KFJlc291cmNlVHlwZU1hc2sgJiBMb2FkVHlwZU1hc2spLCAiUmVzb3VyY2VUeXBlTWFzayBhbmQg
TG9hZFR5cGVNYXNrIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgYmVjYXVzZSB0aGV5IGFy
ZSBzdG9yZWQgaW4gdGhlIHNhbWUgdWludDE2X3QiKTsKLXN0YXRpY19hc3NlcnQoIShSZXNvdXJj
ZVR5cGVNYXNrICYgTG9hZENvbnRleHRNYXNrKSwgIlJlc291cmNlVHlwZU1hc2sgYW5kIExvYWRD
b250ZXh0TWFzayBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGJlY2F1c2UgdGhleSBhcmUg
c3RvcmVkIGluIHRoZSBzYW1lIHVpbnQxNl90Iik7Ci1zdGF0aWNfYXNzZXJ0KCEoTG9hZENvbnRl
eHRNYXNrICYgTG9hZFR5cGVNYXNrKSwgIkxvYWRDb250ZXh0TWFzayBhbmQgTG9hZFR5cGVNYXNr
IHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgYmVjYXVzZSB0aGV5IGFyZSBzdG9yZWQgaW4g
dGhlIHNhbWUgdWludDE2X3QiKTsKK3N0YXRpY19hc3NlcnQoIShSZXNvdXJjZVR5cGVNYXNrICYg
TG9hZFR5cGVNYXNrKSwgIlJlc291cmNlVHlwZU1hc2sgYW5kIExvYWRUeXBlTWFzayBzaG91bGQg
YmUgbXV0dWFsbHkgZXhjbHVzaXZlIGJlY2F1c2UgdGhleSBhcmUgc3RvcmVkIGluIHRoZSBzYW1l
IHVpbnQzMl90Iik7CitzdGF0aWNfYXNzZXJ0KCEoUmVzb3VyY2VUeXBlTWFzayAmIExvYWRDb250
ZXh0TWFzayksICJSZXNvdXJjZVR5cGVNYXNrIGFuZCBMb2FkQ29udGV4dE1hc2sgc2hvdWxkIGJl
IG11dHVhbGx5IGV4Y2x1c2l2ZSBiZWNhdXNlIHRoZXkgYXJlIHN0b3JlZCBpbiB0aGUgc2FtZSB1
aW50MzJfdCIpOworc3RhdGljX2Fzc2VydCghKExvYWRDb250ZXh0TWFzayAmIExvYWRUeXBlTWFz
ayksICJMb2FkQ29udGV4dE1hc2sgYW5kIExvYWRUeXBlTWFzayBzaG91bGQgYmUgbXV0dWFsbHkg
ZXhjbHVzaXZlIGJlY2F1c2UgdGhleSBhcmUgc3RvcmVkIGluIHRoZSBzYW1lIHVpbnQzMl90Iik7
CiAKLXR5cGVkZWYgdWludDE2X3QgUmVzb3VyY2VGbGFnczsKK3VzaW5nIFJlc291cmNlRmxhZ3Mg
PSB1aW50MzJfdDsKIAogLy8gVGhlIGZpcnN0IDMyIGJpdHMgb2YgYSB1aW50NjRfdCBhY3Rpb24g
YXJlIHVzZWQgZm9yIHRoZSBhY3Rpb24gbG9jYXRpb24uCi0vLyBUaGUgbmV4dCAxNiBiaXRzIGFy
ZSB1c2VkIGZvciB0aGUgZmxhZ3MgKFJlc291cmNlVHlwZSBhbmQgTG9hZFR5cGUpLgorLy8gVGhl
IG5leHQgMjQgYml0cyBhcmUgdXNlZCBmb3IgdGhlIGZsYWdzIChSZXNvdXJjZVR5cGUgYW5kIExv
YWRUeXBlKS4KIC8vIFRoZSBuZXh0IGJpdCBpcyB1c2VkIHRvIG1hcmsgYWN0aW9ucyB0aGF0IGFy
ZSBmcm9tIGEgcnVsZSB3aXRoIGFuIGlmLWRvbWFpbi4KIC8vICAgICBBY3Rpb25zIGZyb20gcnVs
ZXMgd2l0aCB1bmxlc3MtZG9tYWluIGNvbmRpdGlvbnMgYXJlIGRpc3Rpbmd1aXNoZWQgZnJvbQog
Ly8gICAgIHJ1bGVzIHdpdGggaWYtZG9tYWluIGNvbmRpdGlvbnMgYnkgbm90IGhhdmluZyB0aGlz
IGJpdCBzZXQuCiAvLyAgICAgQWN0aW9ucyBmcm9tIHJ1bGVzIHdpdGggbm8gY29uZGl0aW9ucyBh
cmUgcHV0IGluIHRoZSBERkEgd2l0aG91dCBjb25kaXRpb25zLgogLy8gVGhlIHZhbHVlcyAtMSBh
bmQgLTIgYXJlIHVzZWQgZm9yIHJlbW92ZWQgYW5kIGVtcHR5IHZhbHVlcyBpbiBIYXNoVGFibGVz
LgotY29uc3QgdWludDY0X3QgQWN0aW9uRmxhZ01hc2sgPSAweDAwMDBGRkZGMDAwMDAwMDA7Ci1j
b25zdCB1aW50NjRfdCBJZkNvbmRpdGlvbkZsYWcgPSAweDAwMDEwMDAwMDAwMDAwMDA7CitzdGF0
aWMgY29uc3RleHByIHVpbnQ2NF90IEFjdGlvbkZsYWdNYXNrID0gMHgwMEZGRkZGRjAwMDAwMDAw
Oworc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBJZkNvbmRpdGlvbkZsYWcgPSAweDAxMDAwMDAw
MDAwMDAwMDA7CiAKIE9wdGlvblNldDxSZXNvdXJjZVR5cGU+IHRvUmVzb3VyY2VUeXBlKENhY2hl
ZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXF1ZXN0ZXIpOwogc3RkOjpv
cHRpb25hbDxPcHRpb25TZXQ8UmVzb3VyY2VUeXBlPj4gcmVhZFJlc291cmNlVHlwZShTdHJpbmdW
aWV3KTsKQEAgLTkzLDcgKzkzLDYgQEAgc3RydWN0IFJlc291cmNlTG9hZEluZm8gewogICAgIFJl
c291cmNlRmxhZ3MgZ2V0UmVzb3VyY2VGbGFncygpIGNvbnN0OwogfTsKIAotfSAvLyBuYW1lc3Bh
Y2UgQ29udGVudEV4dGVuc2lvbnMKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhlOTBlODcxN2FlNjRiZDQxYmE4
ZjdlNDU2OTAxMjYxNmU1OTdjODEuLjdlMDI4ZjE4ZmEyODBhMjBhZjNkYzU3NjcwYzNkMmJmYmI3
OGYyMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMS0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBjc3AtcmVwb3J0IHJlc291cmNlIHR5cGUg
dG8gV0tDb250ZW50UnVsZUxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzY3NQorICAgICAgICA8cmRhcjovLzcxODY5ODkzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNvbXBhcmVDb250ZW50cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0
Tm90aWZpY2F0aW9uLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjEtMTEtMjkgIEpvbmF0aGFu
IEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRjb3JlcHldIERl
bGV0ZSB1bnVzZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAppbmRleCBiYzU0
ODRmM2YwNmM1YThiMTg2MjJhYmZlYTc4MDA1YmNiOWY4ZjdjLi4xYjQzZGM4NjkyY2JjNjQ5NzFj
MTdkZjA0M2E5ODk0OTFhZmI1M2JkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTU0MCw3ICs1NDAsNyBA
QCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIERpc3Rpbmd1aXNoYWJsZVByZWZpeEFyZU5v
dE1lcmdlZCkKICAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJo
dHRwOi8vZm9vLm9yZ2cvIiksIHsgdmFyaWFudEluZGV4PENvbnRlbnRFeHRlbnNpb25zOjpCbG9j
a0xvYWRBY3Rpb24+IH0pOwogfQogCi1zdGF0aWMgdm9pZCBjb21wYXJlQ29udGVudHMoY29uc3Qg
Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIGEsIGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIGIpCitzdGF0aWMgdm9pZCBjb21wYXJlQ29udGVudHMoY29u
c3QgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyYgYSwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgYikKIHsKICAgICBFWFBFQ1RfRVEoYS5zaXplKCksIGIuc2l6ZSgpKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYi5zaXplKCk7ICsraSkKQEAgLTU2Miw3ICs1NjIsNyBAQCBU
RVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFNlYXJjaFN1ZmZpeGVzV2l0aElkZW50aWNhbEFj
dGlvbkFyZU1lcmdlZCkKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2Rl
PiBieXRlY29kZTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21waWxlciBj
b21waWxlcihkZmEsIGJ5dGVjb2RlKTsKICAgICBjb21waWxlci5jb21waWxlKCk7Ci0gICAgQ29u
dGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgaW50ZXJwcmV0ZXIoYnl0ZWNv
ZGUuZGF0YSgpLCBieXRlY29kZS5zaXplKCkpOworICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIg
aW50ZXJwcmV0ZXIoeyBieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUoKSB9KTsKICAgICBj
b21wYXJlQ29udGVudHMoaW50ZXJwcmV0ZXIuaW50ZXJwcmV0KCJmb28ub3JnIiwgMCksIHsgMCB9
KTsKICAgICBjb21wYXJlQ29udGVudHMoaW50ZXJwcmV0ZXIuaW50ZXJwcmV0KCJiYS5vcmciLCAw
KSwgeyAwIH0pOwogICAgIGNvbXBhcmVDb250ZW50cyhpbnRlcnByZXRlci5pbnRlcnByZXQoImJh
ci5vcmciLCAwKSwgeyB9KTsKQEAgLTU4OCw3ICs1ODgsNyBAQCBURVNUX0YoQ29udGVudEV4dGVu
c2lvblRlc3QsIFNlYXJjaFN1ZmZpeGVzV2l0aERpc3Rpbmd1aXNoYWJsZUFjdGlvbkFyZU5vdE1l
cmdlZAogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+IGJ5dGVjb2Rl
OwogICAgIENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyIGNvbXBpbGVyKGRm
YSwgYnl0ZWNvZGUpOwogICAgIGNvbXBpbGVyLmNvbXBpbGUoKTsKLSAgICBDb250ZW50RXh0ZW5z
aW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcihieXRlY29kZS5kYXRhKCks
IGJ5dGVjb2RlLnNpemUoKSk7CisgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRl
cih7IGJ5dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpIH0pOwogICAgIGNvbXBhcmVDb250
ZW50cyhpbnRlcnByZXRlci5pbnRlcnByZXQoImZvby5vcmciLCAwKSwgeyAwIH0pOwogICAgIGNv
bXBhcmVDb250ZW50cyhpbnRlcnByZXRlci5pbnRlcnByZXQoImJhLm9yZyIsIDApLCB7IDEgfSk7
CiAgICAgY29tcGFyZUNvbnRlbnRzKGludGVycHJldGVyLmludGVycHJldCgiYmFyLm9yZyIsIDAp
LCB7IH0pOwpAQCAtOTcxLDkgKzk3MSw5IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwg
U3RyaW5nQ29tYmluaW5nKQogICAgIEFTU0VSVF9FUShzZXF1ZW5jZUluc3RhbmNlcyhkYXRhLmFj
dGlvbnMsICJHR0ciKSwgMSk7CiAKICAgICBBU1NFUlRfRVEoZGF0YS5hY3Rpb25zLnNpemUoKSwg
Nzh1KTsKLSAgICBBU1NFUlRfRVEoZGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnMuc2l6ZSgp
LCAgMzEzdSk7Ci0gICAgQVNTRVJUX0VRKGRhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zLnNpemUo
KSwgIDV1KTsKLSAgICBBU1NFUlRfRVEoZGF0YS50b3BVUkxGaWx0ZXJzLnNpemUoKSwgIDV1KTsK
KyAgICBBU1NFUlRfRVEoZGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnMuc2l6ZSgpLCAyODh1
KTsKKyAgICBBU1NFUlRfRVEoZGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnMuc2l6ZSgpLCA1dSk7
CisgICAgQVNTRVJUX0VRKGRhdGEudG9wVVJMRmlsdGVycy5zaXplKCksIDV1KTsKICAgICBBU1NF
UlRfRkFMU0UoZGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4pOwogCiAgICAgYXV0byBl
eHRlbnNpb25XaXRoRmxhZ3MgPSBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3Jl
YXRlKCJbIgpAQCAtMTEwOCw3ICsxMTA4LDcgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0
LCBVc2VsZXNzVGVybXNNYXRjaGluZ0V2ZXJ5dGhpbmdBcmVFbGltaW5hdGVkKQogICAgIFZlY3Rv
cjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+IGJ5dGVjb2RlOwogICAgIENvbnRlbnRF
eHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyIGNvbXBpbGVyKGRmYSwgYnl0ZWNvZGUpOwog
ICAgIGNvbXBpbGVyLmNvbXBpbGUoKTsKLSAgICBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNv
ZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcihieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUo
KSk7CisgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcih7IGJ5dGVjb2RlLmRh
dGEoKSwgYnl0ZWNvZGUuc2l6ZSgpIH0pOwogICAgIGNvbXBhcmVDb250ZW50cyhpbnRlcnByZXRl
ci5pbnRlcnByZXQoImViIiwgMCksIHsgfSk7CiAgICAgY29tcGFyZUNvbnRlbnRzKGludGVycHJl
dGVyLmludGVycHJldCgid2UiLCAwKSwgeyB9KTsKICAgICBjb21wYXJlQ29udGVudHMoaW50ZXJw
cmV0ZXIuaW50ZXJwcmV0KCJ3ZWViIiwgMCksIHsgfSk7CkBAIC0xMjY3LDcgKzEyNjcsNyBAQCBU
RVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIExhcmdlSnVtcHMpCiAgICAgICAgIGNvbWJpbmVk
Qnl0ZWNvZGUuYXBwZW5kVmVjdG9yKGJ5dGVjb2RlKTsKICAgICB9CiAgICAgCi0gICAgQ29udGVu
dEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgaW50ZXJwcmV0ZXIoJmNvbWJpbmVk
Qnl0ZWNvZGVbMF0sIGNvbWJpbmVkQnl0ZWNvZGUuc2l6ZSgpKTsKKyAgICBERkFCeXRlY29kZUlu
dGVycHJldGVyIGludGVycHJldGVyKHsgY29tYmluZWRCeXRlY29kZS5kYXRhKCksIGNvbWJpbmVk
Qnl0ZWNvZGUuc2l6ZSgpIH0pOwogICAgIAogICAgIHBhdHRlcm5JZCA9IDA7CiAgICAgZm9yIChj
aGFyIGMxID0gJ0EnOyBjMSA8PSAnWic7ICsrYzEpIHsKQEAgLTE3MDgsNyArMTcwOCw3IEBAIFRF
U1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgU3BsaXR0aW5nTGFyZ2VORkFzKQogICAgICAgICAg
ICAgY29tYmluZWRCeXRlY29kZS5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRl
ciBpbnRlcnByZXRlcigmY29tYmluZWRCeXRlY29kZVswXSwgY29tYmluZWRCeXRlY29kZS5zaXpl
KCkpOworICAgICAgICBERkFCeXRlY29kZUludGVycHJldGVyIGludGVycHJldGVyKHsgY29tYmlu
ZWRCeXRlY29kZS5kYXRhKCksIGNvbWJpbmVkQnl0ZWNvZGUuc2l6ZSgpIH0pOwogICAgICAgICAK
ICAgICAgICAgRVhQRUNUX0VRKGludGVycHJldGVyLmludGVycHJldCgiQUJCQlgiLCAwKS5zaXpl
KCksIDF1bGwpOwogICAgICAgICBFWFBFQ1RfRVEoaW50ZXJwcmV0ZXIuaW50ZXJwcmV0KCJBQ0ND
WCIsIDApLnNpemUoKSwgMXVsbCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
Lm1tCmluZGV4IGI5M2EyOTdjZTI5NmMyNjJkMjI0MTc1MjMzMWFmY2E0NWVhMzFmMmUuLmVkMzIx
NzY3N2RjNTU5NzA2MDVjNDYxYmM2OWJiN2VhMGFkNDI0NTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1
bGVMaXN0Tm90aWZpY2F0aW9uLm1tCkBAIC00MTYsNiArNDE2LDI2IEBAIFRFU1QoQ29udGVudFJ1
bGVMaXN0LCBUb3BGcmFtZUNoaWxkRnJhbWUpCiAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3
IF90ZXN0X3dhaXRGb3JBbGVydF0sICJpZnJhbWUgZmV0Y2hlZCBzdWNjZXNzZnVsbHkiKTsKIH0K
IAorVEVTVChDb250ZW50UnVsZUxpc3QsIENTUFJlcG9ydCkKK3sKKyAgICBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyIHNlcnZlcih7IHsgIi8iLCB7IHsKKyAgICAgICAgeyAiQ29udGVudC1TZWN1
cml0eS1Qb2xpY3kiLCAiZnJhbWUtc3JjICdub25lJzsgcmVwb3J0LXVyaSByZXNvdXJjZXMvc2F2
ZS1yZXBvcnQucHkiIH0KKyAgICB9LCAiPGlmcmFtZSBzcmM9XCJodHRwczovL3dlYmtpdC5vcmcv
XCI+PC9pZnJhbWU+IiB9IH0gfSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZENvbnRlbnRSdWxlTGlzdDptYWtlQ29udGVudFJ1bGVMaXN0
KEAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIi4qXCIsXCJyZXNvdXJjZS10eXBlXCI6W1wiY3NwLXJlcG9ydFwiXX19XSIpLmdl
dCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlv
bkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07
CisgICAgd2hpbGUgKG5vdGlmaWNhdGlvbkxpc3QuaXNFbXB0eSgpKQorICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOworCisgICAgVVJMIGV4cGVjdGVkVVJMID0gc2Vy
dmVyLnJlcXVlc3QoKS5VUkw7CisgICAgZXhwZWN0ZWRVUkwuc2V0UGF0aCgiL3Jlc291cmNlcy9z
YXZlLXJlcG9ydC5weSIpOworICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZFVSTC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBub3RpZmljYXRpb25MaXN0LmZpcnN0KCkudXJsLnV0ZjgoKS5kYXRhKCkp
OworfQorCiBURVNUKENvbnRlbnRSdWxlTGlzdCwgTGVnYWN5VmVyc2lvbkFuZE5hbWUpCiB7CiAg
ICAgTlNTdHJpbmcgKmRpcmVjdG9yeSA9IFtOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRSdWxlTGlzdFRlc3REaXJlY3RvcnkiXTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tDb250
ZW50RXh0ZW5zaW9uU3RvcmUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCmluZGV4IDBiODVjZWNjMWUzZGQ2Y2E0YjZj
OGFhMWZiMjUzMWZjNzY5N2E3OWQuLmI5Mjg1MjA2NjQyOGY5ZDQzZjIwN2E3NWRjODUwZmNmNzIx
NDJiMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQpAQCAtMjUyLDcgKzI1Miw3
IEBAIFRFU1RfRihXS0NvbnRlbnRSdWxlTGlzdFN0b3JlVGVzdCwgTm9uRGVmYXVsdFN0b3JlKQog
CiAgICAgTlNEYXRhICpkYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6W3RlbXBE
aXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZpbGVOYW1lXV07CiAgICAgRVhQRUNUX05P
VF9OVUxMKGRhdGEpOwotICAgIEVYUEVDVF9FUShkYXRhLmxlbmd0aCwgMjI4dSk7CisgICAgRVhQ
RUNUX0VRKGRhdGEubGVuZ3RoLCAyMjV1KTsKICAgICAKICAgICBfX2Jsb2NrIGJvb2wgZG9uZUNo
ZWNraW5nU291cmNlID0gZmFsc2U7CiAgICAgW3N0b3JlIF9nZXRDb250ZW50UnVsZUxpc3RTb3Vy
Y2VGb3JJZGVudGlmaWVyOmlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAq
c291cmNlKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445591</attachid>
            <date>2021-12-01 11:07:36 -0800</date>
            <delta_ts>2021-12-01 13:28:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233675-20211201110735.patch</filename>
            <type>text/plain</type>
            <size>69562</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGEzZGEzNmE5YTRhYjY1
MjE1NjQwODA5ZWFiZmNiMmQzNzRhZTA1YS4uNDYyZTczNDk0NDE1NWFlODYyM2E2ODgzMzQ4ZDNl
ODc4MTIyNWJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIxLTExLTMwICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGNz
cC1yZXBvcnQgcmVzb3VyY2UgdHlwZSB0byBXS0NvbnRlbnRSdWxlTGlzdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc1CisgICAgICAgIDxyZGFy
Oi8vNzE4Njk4OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBmZWF0dXJlIGlzIHRyaXZpYWwgdG8gaW1wbGVtZW50IGFuZCB0ZXN0IGV4Y2Vw
dCBmb3Igb25lIHNtYWxsIHRoaW5nOiB3ZSB1c2UgYSB1aW50MTZfdCB0byByZXByZXNlbnQgdGhl
CisgICAgICAgIHJlc291cmNlIHR5cGUgYW5kIGNvbnRleHQgYW5kIGZpcnN0IHBhcnR5IGZsYWdz
LCBhbmQgd2UgYWxyZWFkeSBoYXZlIDE2IG9mIHRoZW0uICBTbyB3ZSBuZWVkZWQgdG8gZ2V0IGFu
b3RoZXIKKyAgICAgICAgYml0IGZyb20gc29tZXdoZXJlLiAgV2hhdCBJIGRpZCB3YXMgbWFrZSB0
aGUgZmxhZ3MgaGF2ZSBhIHZhcmlhYmxlIGxlbmd0aCBmcm9tIDEtMyBieXRlcyBpbnN0ZWFkIG9m
IGp1c3QgMiBieXRlcy4KKyAgICAgICAgSSB1c2VkIHRoZSB1bnVzZWQgdXBwZXIgYml0cyBpbiB0
aGUgaW5zdHJ1Y3Rpb24gdG8gaW5kaWNhdGUgdGhlIGxlbmd0aCBvZiB0aGUgZmxhZ3MsIGFuZCBp
ZiB0aGUgdXBwZXIgYml0cyB3ZXJlIDAsCisgICAgICAgIHRoZW4gSSBhc3N1bWUgaXQgd2FzIDIg
Ynl0ZXMsIHdoaWNoIGlzIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggZXhpc3RpbmcgY29tcGlsZWQg
V0tDb250ZW50UnVsZUxpc3RzLCBzbyBubyBuZWVkCisgICAgICAgIHRvIGluY3JlbWVudCB0aGUg
dmVyc2lvbiBudW1iZXIgYW5kIGZvcmNlIGEgcmVjb21waWxlLiAgSXQgd29ya2VkIHNvIHdlbGwg
dGhhdCBJIGRpZCB0aGUgc2FtZSB0aGluZyB3aXRoIHRoZSBhY3Rpb25zLAorICAgICAgICB3aGlj
aCB3ZXJlIDQgYnl0ZXMgYnV0IGFyZSBub3cgMS00IGJ5dGVzLiAgVGhpcyByZWR1Y2VkIHRoZSBj
b21waWxlZCBiaW5hcnkgc2l6ZSBvZiBvbmUgb2YgdGhlIHRlc3RzIGZyb20gMzEzIGJ5dGVzCisg
ICAgICAgIHRvIDI4OCBieXRlcywgYSByZWR1Y3Rpb24gb2YgYWJvdXQgOCUgb2YgdGhlIGJpbmFy
eSBzaXplIG9mIHRoZSBjb21waWxlZCBXS0NvbnRlbnRSdWxlTGlzdHMuICBMYXJnZXIgbGlzdHMg
d2lsbCBzZWUKKyAgICAgICAgc2xpZ2h0bHkgbGVzcyBiaW5hcnkgc2l6ZSByZWR1Y3Rpb24sIGJ1
dCBzdGlsbCBhbiBpbXByb3ZlbWVudC4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkNvbnRlbnRFeHRlbnNpb246OkNvbnRlbnRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OnBvcHVsYXRlQ29uZGl0aW9uQ2Fj
aGVJZk5lZWRlZCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQgY29uc3QpOgorICAg
ICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6c21hbGxlc3RQb3NzaWJsZUp1bXBTaXplKToKKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6aW5zdHJ1
Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjphcHBlbmQyNEJpdEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OmFwcGVuZFplcm9lcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
c2V0Qml0cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Ynl0ZWNvZGVG
bGFnc1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmJ5dGVjb2Rl
QWN0aW9uU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6YXBwZW5k
VmFyaWFibGVMZW5ndGhJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0QXBwZW5kQWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0SnVtcCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21waWxl
cjo6ZW1pdENoZWNrVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkRGQUJ5dGVjb2RlQ29tcGlsZXI6OmVtaXRDaGVja1ZhbHVlUmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlQ29tcGlsZXI6OnRyYW5zaXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBp
bGVyOjpjb21waWxlSnVtcFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpERkFCeXRlY29kZUNvbXBpbGVyOjpub2RlVHJhbnNpdGlvbnNNYXhCeXRlY29kZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlQ29tcGls
ZXI6OmNvbXBpbGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldEJp
dHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldDI0Qml0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2V0SW5zdHJ1Y3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Omp1bXBTaXplSW5CeXRlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29uc3VtZUludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbnN1bWUyNEJpdEludGVnZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Omhhc0ZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpoYXNBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OmNvbnN1bWVSZXNvdXJjZUZsYWdzQW5kSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbnN1bWVBY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldEp1bXBTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpnZXRKdW1wRGlzdGFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Om1hdGNoZXNDb25kaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVy
cHJldEFwcGVuZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUludGVy
cHJldGVyOjppbnRlcnBldEp1bXBUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6YWN0aW9uc01hdGNoaW5nRXZlcnl0aGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRl
cnByZXRlcjo6aW50ZXJwcmV0V2l0aENvbmRpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldCk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkRG
QUJ5dGVjb2RlSW50ZXJwcmV0ZXIpOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQpOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpyZWFkUmVzb3VyY2VUeXBlKToKKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VMb2FkSW5mby5oOgorCiAyMDIxLTExLTI5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGJhc2ljIGhldXJpc3RpYyBmb3Igc2l6aW5n
IHRleHQgaW4gaW1hZ2Ugb3ZlcmxheSBibG9ja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKaW5kZXggN2U0YzEyODc1NzRm
ZTBkOTc3NzFmODRiOTVhOTQ3ZDI2NzdjZDM1MS4uZGUyMjk0ZTY1OGRhYzc4ZTIzY2Y1MDE3NTFi
ODQzOGZhYWUxNmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgQ29udGVudEV4dGVu
c2lvbjo6Q29udGVudEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFJlZjxDb21w
aWxlZENvbnRlbnQKICAgICAsIG1fY29tcGlsZWRFeHRlbnNpb24oV1RGTW92ZShjb21waWxlZEV4
dGVuc2lvbikpCiAgICAgLCBtX2V4dGVuc2lvbkJhc2VVUkwoV1RGTW92ZShleHRlbnNpb25CYXNl
VVJMKSkKIHsKLSAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdpdGhvdXRDb25kaXRpb25zKG1f
Y29tcGlsZWRFeHRlbnNpb24tPmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCksIG1f
Y29tcGlsZWRFeHRlbnNpb24tPmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3Ro
KCkpOwotICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0aENvbmRpdGlvbnMobV9jb21waWxl
ZEV4dGVuc2lvbi0+ZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoKSwgbV9jb21waWxlZEV4
dGVuc2lvbi0+ZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgREZB
Qnl0ZWNvZGVJbnRlcnByZXRlciB3aXRob3V0Q29uZGl0aW9ucyh7IG1fY29tcGlsZWRFeHRlbnNp
b24tPmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCksIG1fY29tcGlsZWRFeHRlbnNp
b24tPmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CisgICAgREZB
Qnl0ZWNvZGVJbnRlcnByZXRlciB3aXRoQ29uZGl0aW9ucyh7IG1fY29tcGlsZWRFeHRlbnNpb24t
PmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKCksIG1fY29tcGlsZWRFeHRlbnNpb24tPmZp
bHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CiAgICAgZm9yICh1aW50NjRf
dCBhY3Rpb24gOiB3aXRob3V0Q29uZGl0aW9ucy5hY3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nKCkp
IHsKICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihhY3Rpb24pID09IGFjdGlv
bik7CiAgICAgICAgIG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zLmFwcGVuZChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oYWN0aW9uKSk7CkBAIC0xMjMsOCArMTIzLDggQEAgdm9pZCBD
b250ZW50RXh0ZW5zaW9uOjpjb21waWxlR2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KCkKIHZv
aWQgQ29udGVudEV4dGVuc2lvbjo6cG9wdWxhdGVDb25kaXRpb25DYWNoZUlmTmVlZGVkKGNvbnN0
IFVSTCYgdG9wVVJMKQogewogICAgIGlmIChtX2NhY2hlZFRvcFVSTCAhPSB0b3BVUkwpIHsKLSAg
ICAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcihtX2NvbXBpbGVkRXh0ZW5z
aW9uLT50b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSwgbV9jb21waWxlZEV4dGVuc2lvbi0+dG9wVVJM
RmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkpOwotICAgICAgICBjb25zdGV4cHIgdWludDE2X3QgYWxs
TG9hZFR5cGVzQW5kUmVzb3VyY2VUeXBlcyA9IExvYWRUeXBlTWFzayB8IFJlc291cmNlVHlwZU1h
c2sgfCBMb2FkQ29udGV4dE1hc2s7CisgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgaW50
ZXJwcmV0ZXIoeyBtX2NvbXBpbGVkRXh0ZW5zaW9uLT50b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSwg
bV9jb21waWxlZEV4dGVuc2lvbi0+dG9wVVJMRmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkgfSk7Cisg
ICAgICAgIGNvbnN0ZXhwciBSZXNvdXJjZUZsYWdzIGFsbExvYWRUeXBlc0FuZFJlc291cmNlVHlw
ZXMgPSBMb2FkVHlwZU1hc2sgfCBSZXNvdXJjZVR5cGVNYXNrIHwgTG9hZENvbnRleHRNYXNrOwog
ICAgICAgICBTdHJpbmcgc3RyaW5nID0gbV9jb21waWxlZEV4dGVuc2lvbi0+Y29uZGl0aW9uc0Fw
cGx5T25seVRvRG9tYWluKCkgPyB0b3BVUkwuaG9zdCgpLnRvU3RyaW5nKCkgOiB0b3BVUkwuc3Ry
aW5nKCk7CiAgICAgICAgIGF1dG8gdG9wVVJMQWN0aW9ucyA9IGludGVycHJldGVyLmludGVycHJl
dChzdHJpbmcudXRmOCgpLCBhbGxMb2FkVHlwZXNBbmRSZXNvdXJjZVR5cGVzKTsKICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAppbmRleCBjMDNhMjRiNTdiMDUzOTk0NWM0MjdjN2Y3
NjFkZWU0NjQwMTQxMjY4Li43MzFhNjhlNDI2MTkwZDMxZDdjNTFhZWQ0YTIwNzEzZDhiNTQ0MmIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKQEAgLTEyMSwxMSArMTIxLDExIEBAIGF1dG8g
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjphY3Rpb25zRm9yUmVzb3VyY2VMb2FkKGNvbnN0IFJl
c291cmNlTG9hZEluZm8mIHJlCiAKICAgICAgICAgY29uc3QgQ29tcGlsZWRDb250ZW50RXh0ZW5z
aW9uJiBjb21waWxlZEV4dGVuc2lvbiA9IGNvbnRlbnRFeHRlbnNpb24tPmNvbXBpbGVkRXh0ZW5z
aW9uKCk7CiAgICAgICAgIAotICAgICAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdpdGhvdXRD
b25kaXRpb25zSW50ZXJwcmV0ZXIoY29tcGlsZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zQnl0ZWNvZGUoKSwgY29tcGlsZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhvdXRDb25kaXRp
b25zQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0
aG91dENvbmRpdGlvbnNJbnRlcnByZXRlcih7IGNvbXBpbGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRo
b3V0Q29uZGl0aW9uc0J5dGVjb2RlKCksIGNvbXBpbGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRob3V0
Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CiAgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJw
cmV0ZXI6OkFjdGlvbnMgd2l0aG91dENvbmRpdGlvbnNBY3Rpb25zID0gd2l0aG91dENvbmRpdGlv
bnNJbnRlcnByZXRlci5pbnRlcnByZXQodXJsQ1N0cmluZywgZmxhZ3MpOwogICAgICAgICAKICAg
ICAgICAgVVJMIHRvcFVSTCA9IHJlc291cmNlTG9hZEluZm8ubWFpbkRvY3VtZW50VVJMOwotICAg
ICAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdpdGhDb25kaXRpb25zSW50ZXJwcmV0ZXIoY29t
cGlsZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoKSwgY29tcGlsZWRF
eHRlbnNpb24uZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgICAg
IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0aENvbmRpdGlvbnNJbnRlcnByZXRlcih7IGNvbXBp
bGVkRXh0ZW5zaW9uLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKCksIGNvbXBpbGVkRXh0
ZW5zaW9uLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgfSk7CiAgICAgICAg
IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgd2l0aENvbmRpdGlvbnNBY3Rpb25zID0g
d2l0aENvbmRpdGlvbnNJbnRlcnByZXRlci5pbnRlcnByZXRXaXRoQ29uZGl0aW9ucyh1cmxDU3Ry
aW5nLCBmbGFncywgY29udGVudEV4dGVuc2lvbi0+dG9wVVJMQWN0aW9ucyh0b3BVUkwpKTsKICAg
ICAgICAgCiAgICAgICAgIGNvbnN0IFNlcmlhbGl6ZWRBY3Rpb25CeXRlKiBhY3Rpb25zID0gY29t
cGlsZWRFeHRlbnNpb24uYWN0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0RGQUJ5dGVjb2RlLmgKaW5kZXggOTA2MTAzNDkxNTQ5NzVkM2FlY2EyMDQzMDk3MjMz
MjM0MzY2YWRmYy4uM2MwZGZhOWE1NzE4ODc2ZTZmOTgyMjdhMWFlZjVjYTE0MTc0NWFkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZS5oCkBAIC0y
NywxMSArMjcsOSBAQAogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKIAotbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIAotbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKK25hbWVz
cGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucyB7CiAKLXR5cGVkZWYgdWludDhfdCBERkFC
eXRlY29kZTsKK3VzaW5nIERGQUJ5dGVjb2RlID0gdWludDhfdDsKIAogLy8gSW5jcmVtZW50IENv
bnRlbnRFeHRlbnNpb25TdG9yZTo6Q3VycmVudENvbnRlbnRFeHRlbnNpb25GaWxlVmVyc2lvbgog
Ly8gd2hlbiBtYWtpbmcgYW55IG5vbi1iYWNrd2FyZHMtY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRo
ZSBieXRlY29kZS4KQEAgLTYwLDEzICs1OCwxMyBAQCBlbnVtIGNsYXNzIERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb24gOiB1aW50OF90IHsKICAgICBDaGVja1ZhbHVlUmFuZ2VDYXNlU2Vuc2l0aXZlID0g
MHg1LAogCiAgICAgLy8gQXBwZW5kQWN0aW9uIGhhcyBvbmUgYXJndW1lbnQ6Ci0gICAgLy8gVGhl
IGFjdGlvbiB0byBhcHBlbmQgKDQgYnl0ZXMpLgorICAgIC8vIFRoZSBhY3Rpb24gdG8gYXBwZW5k
ICgxLTQgYnl0ZXMpLgogICAgIEFwcGVuZEFjdGlvbiA9IDB4NiwKICAgICBBcHBlbmRBY3Rpb25X
aXRoSWZDb25kaXRpb24gPSAweDcsCiAgICAgCiAgICAgLy8gVGVzdEZsYWdzQW5kQXBwZW5kQWN0
aW9uIGhhcyB0d28gYXJndW1lbnRzOgotICAgIC8vIFRoZSBmbGFncyB0byBjaGVjayBiZWZvcmUg
YXBwZW5kaW5nICgyIGJ5dGVzKS4KLSAgICAvLyBUaGUgYWN0aW9uIHRvIGFwcGVuZCAoNCBieXRl
cykuCisgICAgLy8gVGhlIGZsYWdzIHRvIGNoZWNrIGJlZm9yZSBhcHBlbmRpbmcgKDEtMyBieXRl
cykuCisgICAgLy8gVGhlIGFjdGlvbiB0byBhcHBlbmQgKDEtNCBieXRlcykuCiAgICAgVGVzdEZs
YWdzQW5kQXBwZW5kQWN0aW9uID0gMHg4LAogICAgIFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbldp
dGhJZkNvbmRpdGlvbiA9IDB4OSwKIApAQCAtNzksNTcgKzc3LDUxIEBAIGVudW0gY2xhc3MgREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbiA6IHVpbnQ4X3QgewogfTsKIAogLy8gVGhlIGxhc3QgZm91ciBi
aXRzIGNvbnRhaW4gdGhlIGluc3RydWN0aW9uIHR5cGUuCi1jb25zdCB1aW50OF90IERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb25NYXNrID0gMHgwRjsKLWNvbnN0IHVpbnQ4X3QgREZBQnl0ZWNvZGVKdW1w
U2l6ZU1hc2sgPSAweEYwOworc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb25NYXNrID0gMHgwRjsKK3N0YXRpYyBjb25zdGV4cHIgdWludDhfdCBERkFCeXRlY29k
ZUp1bXBTaXplTWFzayA9IDB4RjA7CitzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgREZBQnl0ZWNv
ZGVGbGFnc1NpemVNYXNrID0gMHgzMDsKK3N0YXRpYyBjb25zdGV4cHIgdWludDhfdCBERkFCeXRl
Y29kZUFjdGlvblNpemVNYXNrID0gMHhDMDsKIAogLy8gREZBIGJ5dGVjb2RlIHN0YXJ0cyB3aXRo
IGEgNCBieXRlIGhlYWRlciB3aGljaCBjb250YWlucyB0aGUgc2l6ZSBvZiB0aGlzIERGQS4KLXR5
cGVkZWYgdWludDMyX3QgREZBSGVhZGVyOwordXNpbmcgREZBSGVhZGVyID0gdWludDMyX3Q7CisK
Ky8vIERGQUJ5dGVjb2RlRmxhZ3NTaXplIGFuZCBERkFCeXRlY29kZUFjdGlvblNpemUgYXJlIHN0
b3JlZCBpbiB0aGUgdG9wIGZvdXIgYml0cyBvZiB0aGUgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbnMg
dGhhdCBoYXZlIGZsYWdzIGFuZCBhY3Rpb25zLgorZW51bSBjbGFzcyBERkFCeXRlY29kZUZsYWdz
U2l6ZSA6IHVpbnQ4X3QgeworICAgIFVJbnQ4ID0gMHgxMCwKKyAgICBVSW50MTYgPSAweDAwLCAv
LyBOZWVkcyB0byBiZSB6ZXJvIHRvIGJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggYnl0ZWNvZGUg
Y29tcGlsZWQgd2l0aCBmaXhlZC1zaXplIGZsYWdzLgorICAgIFVJbnQyNCA9IDB4MjAsCit9Owor
ZW51bSBjbGFzcyBERkFCeXRlY29kZUFjdGlvblNpemUgOiB1aW50OF90IHsKKyAgICBVSW50OCA9
IDB4NDAsCisgICAgVUludDE2ID0gMHg4MCwKKyAgICBVSW50MjQgPSAweEMwLAorICAgIFVJbnQz
MiA9IDB4MDAsIC8vIE5lZWRzIHRvIGJlIHplcm8gdG8gYmUgYmluYXJ5IGNvbXBhdGlibGUgd2l0
aCBieXRlY29kZSBjb21waWxlZCB3aXRoIGZpeGVkLXNpemUgYWN0aW9ucy4KK307CiAKIC8vIEEg
REZBQnl0ZWNvZGVKdW1wU2l6ZSBpcyBzdG9yZWQgaW4gdGhlIHRvcCBmb3VyIGJpdHMgb2YgdGhl
IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb25zIHRoYXQgaGF2ZSBhIGp1bXAuCi1lbnVtIERGQUJ5dGVj
b2RlSnVtcFNpemUgeworZW51bSBjbGFzcyBERkFCeXRlY29kZUp1bXBTaXplIDogdWludDhfdCB7
CiAgICAgSW50OCA9IDB4MTAsCiAgICAgSW50MTYgPSAweDIwLAogICAgIEludDI0ID0gMHgzMCwK
ICAgICBJbnQzMiA9IDB4NDAsCiB9OwotY29uc3QgaW50MzJfdCBJbnQyNE1heCA9ICgxIDw8IDIz
KSAtIDE7Ci1jb25zdCBpbnQzMl90IEludDI0TWluID0gLSgxIDw8IDIzKTsKK3N0YXRpYyBjb25z
dGV4cHIgaW50MzJfdCBVSW50MjRNYXggPSAoMSA8PCAyNCkgLSAxOworc3RhdGljIGNvbnN0ZXhw
ciBpbnQzMl90IEludDI0TWF4ID0gKDEgPDwgMjMpIC0gMTsKK3N0YXRpYyBjb25zdGV4cHIgaW50
MzJfdCBJbnQyNE1pbiA9IC0oMSA8PCAyMyk7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBJbnQy
NFNpemUgPSAzOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgVUludDI0U2l6ZSA9IDM7CiAKIHN0
YXRpYyBpbmxpbmUgREZBQnl0ZWNvZGVKdW1wU2l6ZSBzbWFsbGVzdFBvc3NpYmxlSnVtcFNpemUo
aW50MzJfdCBsb25nZXN0UG9zc2libGVKdW1wKQogewogICAgIGlmIChsb25nZXN0UG9zc2libGVK
dW1wIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50OF90Pjo6bWF4KCkgJiYgbG9uZ2VzdFBvc3Np
YmxlSnVtcCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDhfdD46Om1pbigpKQotICAgICAgICBy
ZXR1cm4gSW50ODsKKyAgICAgICAgcmV0dXJuIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDg7CiAg
ICAgaWYgKGxvbmdlc3RQb3NzaWJsZUp1bXAgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90
Pjo6bWF4KCkgJiYgbG9uZ2VzdFBvc3NpYmxlSnVtcCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDE2X3Q+OjptaW4oKSkKLSAgICAgICAgcmV0dXJuIEludDE2OworICAgICAgICByZXR1cm4gREZB
Qnl0ZWNvZGVKdW1wU2l6ZTo6SW50MTY7CiAgICAgaWYgKGxvbmdlc3RQb3NzaWJsZUp1bXAgPD0g
SW50MjRNYXggJiYgbG9uZ2VzdFBvc3NpYmxlSnVtcCA+PSBJbnQyNE1pbikKLSAgICAgICAgcmV0
dXJuIEludDI0OwotICAgIHJldHVybiBJbnQzMjsKKyAgICAgICAgcmV0dXJuIERGQUJ5dGVjb2Rl
SnVtcFNpemU6OkludDI0OworICAgIHJldHVybiBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQzMjsK
IH0KLSAgICAKLXN0YXRpYyBpbmxpbmUgc2l6ZV90IGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVu
dHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbikKLXsKLSAgICBzd2l0Y2ggKGlu
c3RydWN0aW9uKSB7Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVl
Q2FzZVNlbnNpdGl2ZToKLSAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkNoZWNrVmFs
dWVDYXNlSW5zZW5zaXRpdmU6Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpKdW1w
VGFibGVDYXNlSW5zZW5zaXRpdmU6Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpK
dW1wVGFibGVDYXNlU2Vuc2l0aXZlOgotICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6
Q2hlY2tWYWx1ZVJhbmdlQ2FzZVNlbnNpdGl2ZToKLSAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1
Y3Rpb246OkNoZWNrVmFsdWVSYW5nZUNhc2VJbnNlbnNpdGl2ZToKLSAgICBjYXNlIERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246Okp1bXA6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IC8vIFZhcmlhYmxlIGluc3RydWN0aW9uIHNpemUuCi0gICAgY2FzZSBERkFCeXRlY29kZUlu
c3RydWN0aW9uOjpBcHBlbmRBY3Rpb246Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9u
OjpBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb246Ci0gICAgICAgIHJldHVybiBzaXplb2YoREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbikgKyBzaXplb2YodWludDMyX3QpOwotICAgIGNhc2UgREZBQnl0
ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uOgotICAgIGNhc2UgREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0
aW9uOgotICAgICAgICByZXR1cm4gc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pICsgc2l6
ZW9mKHVpbnQxNl90KSArIHNpemVvZih1aW50MzJfdCk7Ci0gICAgY2FzZSBERkFCeXRlY29kZUlu
c3RydWN0aW9uOjpUZXJtaW5hdGU6Ci0gICAgICAgIHJldHVybiBzaXplb2YoREZBQnl0ZWNvZGVJ
bnN0cnVjdGlvbik7Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyAgICAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMK
IAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCmlu
ZGV4IGM3M2IxMWNhNzMwMzY0ZDBlOWU3OTQ5Njc2N2JmNGRiZGIxMmYyMjUuLmEzYmNlODA0MGE0
ZWM5NTA1YjRhNGY4MGVlMjc0ODllMzFmMjAxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCkBAIC0zMiwx
OCArMzIsMjIgQEAKICNpbmNsdWRlICJERkEuaCIKICNpbmNsdWRlICJERkFOb2RlLmgiCiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLW5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7Citu
YW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSW50VHlwZT4KLWlubGluZSB2b2lkIGFwcGVuZChWZWN0b3I8REZBQnl0ZWNvZGU+JiBieXRl
Y29kZSwgSW50VHlwZSB2YWx1ZSkKK3ZvaWQgYXBwZW5kKFZlY3RvcjxERkFCeXRlY29kZT4mIGJ5
dGVjb2RlLCBJbnRUeXBlIHZhbHVlKQogewogICAgIGJ5dGVjb2RlLmdyb3coYnl0ZWNvZGUuc2l6
ZSgpICsgc2l6ZW9mKEludFR5cGUpKTsKICAgICBtZW1jcHkoJmJ5dGVjb2RlW2J5dGVjb2RlLnNp
emUoKSAtIHNpemVvZihJbnRUeXBlKV0sICZ2YWx1ZSwgc2l6ZW9mKEludFR5cGUpKTsKIH0KIAot
aW5saW5lIHZvaWQgYXBwZW5kWmVyb2VzKFZlY3RvcjxERkFCeXRlY29kZT4mIGJ5dGVjb2RlLCBE
RkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplKQorc3RhdGljIHZvaWQgYXBwZW5kMjRCaXRVbnNp
Z25lZEludGVnZXIoVmVjdG9yPERGQUJ5dGVjb2RlPiYgYnl0ZWNvZGUsIHVpbnQzMl90IHZhbHVl
KQoreworICAgIGFwcGVuZDx1aW50MTZfdD4oYnl0ZWNvZGUsIHZhbHVlKTsKKyAgICBhcHBlbmQ8
dWludDhfdD4oYnl0ZWNvZGUsIHZhbHVlID4+IDE2KTsKK30KKworc3RhdGljIHZvaWQgYXBwZW5k
WmVyb2VzKFZlY3RvcjxERkFCeXRlY29kZT4mIGJ5dGVjb2RlLCBERkFCeXRlY29kZUp1bXBTaXpl
IGp1bXBTaXplKQogewogICAgIHN3aXRjaCAoanVtcFNpemUpIHsKICAgICBjYXNlIERGQUJ5dGVj
b2RlSnVtcFNpemU6OkludDg6CkBAIC02Myw3ICs2Nyw3IEBAIGlubGluZSB2b2lkIGFwcGVuZFpl
cm9lcyhWZWN0b3I8REZBQnl0ZWNvZGU+JiBieXRlY29kZSwgREZBQnl0ZWNvZGVKdW1wU2l6ZSBq
dW1wCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlPgotaW5saW5lIHZvaWQgc2V0Qml0
cyhWZWN0b3I8REZBQnl0ZWNvZGU+JiBieXRlY29kZSwgdWludDMyX3QgaW5kZXgsIEludFR5cGUg
dmFsdWUpCit2b2lkIHNldEJpdHMoVmVjdG9yPERGQUJ5dGVjb2RlPiYgYnl0ZWNvZGUsIHVpbnQz
Ml90IGluZGV4LCBJbnRUeXBlIHZhbHVlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ICsg
c2l6ZW9mKEludFR5cGUpIDw9IGJ5dGVjb2RlLnNpemUoKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghKnJlaW50ZXJwcmV0X2Nhc3Q8SW50VHlwZSo+KCZieXRlY29kZVtpbmRleF0pLCAiUmln
aHQgbm93IHdlIHNob3VsZCBvbmx5IGJlIHVzaW5nIHNldEJpdHMgdG8gb3ZlcndyaXRlIHZhbHVl
cyB0aGF0IHdlcmUgemVybyBhcyBhIHBsYWNlaG9sZGVyLiIpOwpAQCAtNzYsMjQgKzgwLDU5IEBA
IHN0YXRpYyB1bnNpZ25lZCBhcHBlbmRBY3Rpb25CeXRlY29kZVNpemUodWludDY0X3QgYWN0aW9u
KQogICAgICAgICByZXR1cm4gc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pICsgc2l6ZW9m
KHVpbnQxNl90KSArIHNpemVvZih1aW50MzJfdCk7CiAgICAgcmV0dXJuIHNpemVvZihERkFCeXRl
Y29kZUluc3RydWN0aW9uKSArIHNpemVvZih1aW50MzJfdCk7CiB9Ci0gICAgCisKK3N0YXRpYyBE
RkFCeXRlY29kZUZsYWdzU2l6ZSBieXRlY29kZUZsYWdzU2l6ZShSZXNvdXJjZUZsYWdzIGZsYWdz
KQoreworICAgIGlmIChmbGFncyA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgo
KSkKKyAgICAgICAgcmV0dXJuIERGQUJ5dGVjb2RlRmxhZ3NTaXplOjpVSW50ODsKKyAgICBpZiAo
ZmxhZ3MgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQorICAgICAgICBy
ZXR1cm4gREZBQnl0ZWNvZGVGbGFnc1NpemU6OlVJbnQxNjsKKyAgICBSRUxFQVNFX0FTU0VSVChm
bGFncyA8PSBVSW50MjRNYXgpOworICAgIHJldHVybiBERkFCeXRlY29kZUZsYWdzU2l6ZTo6VUlu
dDI0OworfQorCitzdGF0aWMgREZBQnl0ZWNvZGVBY3Rpb25TaXplIGJ5dGVjb2RlQWN0aW9uU2l6
ZSh1aW50MzJfdCBhY3Rpb25XaXRob3V0RmxhZ3MpCit7CisgICAgaWYgKGFjdGlvbldpdGhvdXRG
bGFncyA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKSkKKyAgICAgICAgcmV0
dXJuIERGQUJ5dGVjb2RlQWN0aW9uU2l6ZTo6VUludDg7CisgICAgaWYgKGFjdGlvbldpdGhvdXRG
bGFncyA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCisgICAgICAgIHJl
dHVybiBERkFCeXRlY29kZUFjdGlvblNpemU6OlVJbnQxNjsKKyAgICBpZiAoYWN0aW9uV2l0aG91
dEZsYWdzIDw9IFVJbnQyNE1heCkKKyAgICAgICAgcmV0dXJuIERGQUJ5dGVjb2RlQWN0aW9uU2l6
ZTo6VUludDI0OworICAgIHJldHVybiBERkFCeXRlY29kZUFjdGlvblNpemU6OlVJbnQzMjsKK30K
Kworc3RhdGljIHZvaWQgYXBwZW5kVmFyaWFibGVMZW5ndGhVbnNpZ25lZEludGVnZXIoVmVjdG9y
PERGQUJ5dGVjb2RlPiYgYnl0ZWNvZGUsIHVpbnQzMl90IGludGVnZXIpCit7CisgICAgaWYgKGlu
dGVnZXIgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpCisgICAgICAgIHJl
dHVybiBhcHBlbmQ8dWludDhfdD4oYnl0ZWNvZGUsIGludGVnZXIpOworICAgIGlmIChpbnRlZ2Vy
IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKKyAgICAgICAgcmV0dXJu
IGFwcGVuZDx1aW50MTZfdD4oYnl0ZWNvZGUsIGludGVnZXIpOworICAgIGlmIChpbnRlZ2VyIDw9
IFVJbnQyNE1heCkKKyAgICAgICAgcmV0dXJuIGFwcGVuZDI0Qml0VW5zaWduZWRJbnRlZ2VyKGJ5
dGVjb2RlLCBpbnRlZ2VyKTsKKyAgICByZXR1cm4gYXBwZW5kPHVpbnQzMl90PihieXRlY29kZSwg
aW50ZWdlcik7Cit9CisKIHZvaWQgREZBQnl0ZWNvZGVDb21waWxlcjo6ZW1pdEFwcGVuZEFjdGlv
bih1aW50NjRfdCBhY3Rpb24pCiB7CisgICAgdWludDMyX3QgYWN0aW9uV2l0aG91dEZsYWdzID0g
YWN0aW9uOworICAgIGF1dG8gYWN0aW9uU2l6ZSA9IGJ5dGVjb2RlQWN0aW9uU2l6ZShhY3Rpb25X
aXRob3V0RmxhZ3MpOworICAgIAogICAgIC8vIEhpZ2ggYml0cyBhcmUgdXNlZCB0byBzdG9yZSBm
bGFncy4gU2VlIGNvbXBpbGVSdWxlTGlzdC4KLSAgICBpZiAoYWN0aW9uICYgQWN0aW9uRmxhZ01h
c2spIHsKLSAgICAgICAgaWYgKGFjdGlvbiAmIElmQ29uZGl0aW9uRmxhZykKLSAgICAgICAgICAg
IGFwcGVuZDxERkFCeXRlY29kZUluc3RydWN0aW9uPihtX2J5dGVjb2RlLCBERkFCeXRlY29kZUlu
c3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24pOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBhcHBlbmQ8REZBQnl0ZWNvZGVJbnN0cnVjdGlvbj4obV9i
eXRlY29kZSwgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9u
KTsKLSAgICAgICAgYXBwZW5kPHVpbnQxNl90PihtX2J5dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50
MTZfdD4oYWN0aW9uID4+IDMyKSk7Ci0gICAgICAgIGFwcGVuZDx1aW50MzJfdD4obV9ieXRlY29k
ZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFjdGlvbikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmIChhY3Rpb24gJiBJZkNvbmRpdGlvbkZsYWcpCi0gICAgICAgICAgICBhcHBlbmQ8REZBQnl0
ZWNvZGVJbnN0cnVjdGlvbj4obV9ieXRlY29kZSwgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBw
ZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBw
ZW5kPERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24+KG1fYnl0ZWNvZGUsIERGQUJ5dGVjb2RlSW5zdHJ1
Y3Rpb246OkFwcGVuZEFjdGlvbik7Ci0gICAgICAgIGFwcGVuZDx1aW50MzJfdD4obV9ieXRlY29k
ZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFjdGlvbikpOworICAgIGlmIChSZXNvdXJjZUZsYWdz
IGZsYWdzID0gKGFjdGlvbiAmIEFjdGlvbkZsYWdNYXNrKSA+PiAzMikgeworICAgICAgICBhdXRv
IGZsYWdzU2l6ZSA9IGJ5dGVjb2RlRmxhZ3NTaXplKGZsYWdzKTsKKyAgICAgICAgYXV0byBpbnN0
cnVjdGlvbiA9IChhY3Rpb24gJiBJZkNvbmRpdGlvbkZsYWcpID8gREZBQnl0ZWNvZGVJbnN0cnVj
dGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uIDogREZBQnl0ZWNv
ZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uOworICAgICAgICBBU1NFUlQo
IShzdGF0aWNfY2FzdDx1aW50OF90PihpbnN0cnVjdGlvbikgJiBzdGF0aWNfY2FzdDx1aW50OF90
PihmbGFnc1NpemUpICYgc3RhdGljX2Nhc3Q8dWludDhfdD4oYWN0aW9uU2l6ZSkpKTsKKyAgICAg
ICAgYXBwZW5kPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGluc3Ry
dWN0aW9uKSB8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzU2l6ZSkgfCBzdGF0aWNfY2FzdDx1
aW50OF90PihhY3Rpb25TaXplKSk7CisgICAgICAgIGFwcGVuZFZhcmlhYmxlTGVuZ3RoVW5zaWdu
ZWRJbnRlZ2VyKG1fYnl0ZWNvZGUsIGZsYWdzKTsKKyAgICAgICAgYXBwZW5kVmFyaWFibGVMZW5n
dGhVbnNpZ25lZEludGVnZXIobV9ieXRlY29kZSwgYWN0aW9uV2l0aG91dEZsYWdzKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KKworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSAoYWN0aW9uICYgSWZD
b25kaXRpb25GbGFnKSA/IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJ
ZkNvbmRpdGlvbiA6IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbjsKKyAgICBB
U1NFUlQoIShzdGF0aWNfY2FzdDx1aW50OF90PihpbnN0cnVjdGlvbikgJiBzdGF0aWNfY2FzdDx1
aW50OF90PihhY3Rpb25TaXplKSkpOworICAgIGFwcGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBz
dGF0aWNfY2FzdDx1aW50OF90PihpbnN0cnVjdGlvbikgfCBzdGF0aWNfY2FzdDx1aW50OF90Pihh
Y3Rpb25TaXplKSk7CisgICAgYXBwZW5kVmFyaWFibGVMZW5ndGhVbnNpZ25lZEludGVnZXIobV9i
eXRlY29kZSwgYWN0aW9uV2l0aG91dEZsYWdzKTsKIH0KIAogaW50MzJfdCBERkFCeXRlY29kZUNv
bXBpbGVyOjpsb25nZXN0UG9zc2libGVKdW1wKHVpbnQzMl90IGluc3RydWN0aW9uTG9jYXRpb24s
IHVpbnQzMl90IHNvdXJjZU5vZGVJbmRleCwgdWludDMyX3QgZGVzdGluYXRpb25Ob2RlSW5kZXgp
CkBAIC0xMTksNyArMTU4LDcgQEAgdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0SnVtcCh1
aW50MzJfdCBzb3VyY2VOb2RlSW5kZXgsIHVpbnQzMl90IGRlc3RpbmF0aW8KICAgICB1aW50MzJf
dCBqdW1wTG9jYXRpb24gPSBpbnN0cnVjdGlvbkxvY2F0aW9uICsgc2l6ZW9mKHVpbnQ4X3QpOwog
ICAgIGludDMyX3QgbG9uZ2VzdFBvc3NpYmxlSnVtcERpc3RhbmNlID0gbG9uZ2VzdFBvc3NpYmxl
SnVtcChpbnN0cnVjdGlvbkxvY2F0aW9uLCBzb3VyY2VOb2RlSW5kZXgsIGRlc3RpbmF0aW9uTm9k
ZUluZGV4KTsKICAgICBERkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplID0gc21hbGxlc3RQb3Nz
aWJsZUp1bXBTaXplKGxvbmdlc3RQb3NzaWJsZUp1bXBEaXN0YW5jZSk7Ci0gICAgYXBwZW5kPHVp
bnQ4X3Q+KG1fYnl0ZWNvZGUsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KERGQUJ5dGVjb2RlSW5zdHJ1
Y3Rpb246Okp1bXApIHwganVtcFNpemUpOworICAgIGFwcGVuZDx1aW50OF90PihtX2J5dGVjb2Rl
LCBzdGF0aWNfY2FzdDx1aW50OF90PihERkFCeXRlY29kZUluc3RydWN0aW9uOjpKdW1wKSB8IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KGp1bXBTaXplKSk7CiAKICAgICBtX2xpbmtSZWNvcmRzLmFwcGVu
ZChMaW5rUmVjb3JkKHtqdW1wU2l6ZSwgbG9uZ2VzdFBvc3NpYmxlSnVtcERpc3RhbmNlLCBpbnN0
cnVjdGlvbkxvY2F0aW9uLCBqdW1wTG9jYXRpb24sIGRlc3RpbmF0aW9uTm9kZUluZGV4fSkpOwog
ICAgIGFwcGVuZFplcm9lcyhtX2J5dGVjb2RlLCBqdW1wU2l6ZSk7CkBAIC0xMzIsNyArMTcxLDcg
QEAgdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0Q2hlY2tWYWx1ZSh1aW50OF90IHZhbHVl
LCB1aW50MzJfdCBzb3VyY2VOb2RlSW5kZXgKICAgICBpbnQzMl90IGxvbmdlc3RQb3NzaWJsZUp1
bXBEaXN0YW5jZSA9IGxvbmdlc3RQb3NzaWJsZUp1bXAoaW5zdHJ1Y3Rpb25Mb2NhdGlvbiwgc291
cmNlTm9kZUluZGV4LCBkZXN0aW5hdGlvbk5vZGVJbmRleCk7CiAgICAgREZBQnl0ZWNvZGVKdW1w
U2l6ZSBqdW1wU2l6ZSA9IHNtYWxsZXN0UG9zc2libGVKdW1wU2l6ZShsb25nZXN0UG9zc2libGVK
dW1wRGlzdGFuY2UpOwogICAgIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb24gPSBj
YXNlU2Vuc2l0aXZlID8gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZUNhc2VTZW5z
aXRpdmUgOiBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlQ2FzZUluc2Vuc2l0aXZl
OwotICAgIGFwcGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50OF90Pihp
bnN0cnVjdGlvbikgfCBqdW1wU2l6ZSk7CisgICAgYXBwZW5kPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUs
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGluc3RydWN0aW9uKSB8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KGp1bXBTaXplKSk7CiAgICAgYXBwZW5kPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHZhbHVlKTsKICAg
ICBtX2xpbmtSZWNvcmRzLmFwcGVuZChMaW5rUmVjb3JkKHtqdW1wU2l6ZSwgbG9uZ2VzdFBvc3Np
YmxlSnVtcERpc3RhbmNlLCBpbnN0cnVjdGlvbkxvY2F0aW9uLCBqdW1wTG9jYXRpb24sIGRlc3Rp
bmF0aW9uTm9kZUluZGV4fSkpOwogICAgIGFwcGVuZFplcm9lcyhtX2J5dGVjb2RlLCBqdW1wU2l6
ZSk7CkBAIC0xNDcsNyArMTg2LDcgQEAgdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0Q2hl
Y2tWYWx1ZVJhbmdlKHVpbnQ4X3QgbG93VmFsdWUsIHVpbnQ4X3QgaGlnaFZhbHUKICAgICBpbnQz
Ml90IGxvbmdlc3RQb3NzaWJsZUp1bXBEaXN0YW5jZSA9IGxvbmdlc3RQb3NzaWJsZUp1bXAoaW5z
dHJ1Y3Rpb25Mb2NhdGlvbiwgc291cmNlTm9kZUluZGV4LCBkZXN0aW5hdGlvbk5vZGVJbmRleCk7
CiAgICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IHNtYWxsZXN0UG9zc2libGVKdW1w
U2l6ZShsb25nZXN0UG9zc2libGVKdW1wRGlzdGFuY2UpOwogICAgIERGQUJ5dGVjb2RlSW5zdHJ1
Y3Rpb24gaW5zdHJ1Y3Rpb24gPSBjYXNlU2Vuc2l0aXZlID8gREZBQnl0ZWNvZGVJbnN0cnVjdGlv
bjo6Q2hlY2tWYWx1ZVJhbmdlQ2FzZVNlbnNpdGl2ZSA6IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246
OkNoZWNrVmFsdWVSYW5nZUNhc2VJbnNlbnNpdGl2ZTsKLSAgICBhcHBlbmQ8dWludDhfdD4obV9i
eXRlY29kZSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oaW5zdHJ1Y3Rpb24pIHwganVtcFNpemUpOwor
ICAgIGFwcGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50OF90PihpbnN0
cnVjdGlvbikgfCBzdGF0aWNfY2FzdDx1aW50OF90PihqdW1wU2l6ZSkpOwogICAgIGFwcGVuZDx1
aW50OF90PihtX2J5dGVjb2RlLCBsb3dWYWx1ZSk7CiAgICAgYXBwZW5kPHVpbnQ4X3Q+KG1fYnl0
ZWNvZGUsIGhpZ2hWYWx1ZSk7CiAgICAgbV9saW5rUmVjb3Jkcy5hcHBlbmQoTGlua1JlY29yZCh7
anVtcFNpemUsIGxvbmdlc3RQb3NzaWJsZUp1bXBEaXN0YW5jZSwgaW5zdHJ1Y3Rpb25Mb2NhdGlv
biwganVtcExvY2F0aW9uLCBkZXN0aW5hdGlvbk5vZGVJbmRleH0pKTsKQEAgLTIyNiw3ICsyNjUs
NyBAQCBERkFCeXRlY29kZUNvbXBpbGVyOjpKdW1wVGFibGUgREZBQnl0ZWNvZGVDb21waWxlcjo6
ZXh0cmFjdEp1bXBUYWJsZShWZWN0b3I8REZBQgogICAgIHJldHVybiBqdW1wVGFibGU7CiB9CiAK
LURGQUJ5dGVjb2RlQ29tcGlsZXI6OlRyYW5zaXRpb25zIERGQUJ5dGVjb2RlQ29tcGlsZXI6OnRy
YW5zaXRpb25zKGNvbnN0IERGQU5vZGUmIG5vZGUpCithdXRvIERGQUJ5dGVjb2RlQ29tcGlsZXI6
OnRyYW5zaXRpb25zKGNvbnN0IERGQU5vZGUmIG5vZGUpIC0+IFRyYW5zaXRpb25zCiB7CiAgICAg
VHJhbnNpdGlvbnMgdHJhbnNpdGlvbnM7CiAKQEAgLTM1MCw3ICszODksNyBAQCB2b2lkIERGQUJ5
dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVKdW1wVGFibGUodWludDMyX3Qgbm9kZUluZGV4LCBjb25z
dCBKdW1wVGFibGUmCiAgICAgQVNTRVJUKGp1bXBUYWJsZS5taW4gPD0ganVtcFRhYmxlLm1heCk7
CiAKICAgICB1aW50MzJfdCBpbnN0cnVjdGlvbkxvY2F0aW9uID0gbV9ieXRlY29kZS5zaXplKCk7
Ci0gICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IEludDg7CisgICAgYXV0byBqdW1w
U2l6ZSA9IERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDg7CiAgICAgZm9yICh1aW50MzJfdCBkZXN0
aW5hdGlvbk5vZGVJbmRleCA6IGp1bXBUYWJsZS5kZXN0aW5hdGlvbnMpIHsKICAgICAgICAgaW50
MzJfdCBsb25nZXN0UG9zc2libGVKdW1wRGlzdGFuY2UgPSBsb25nZXN0UG9zc2libGVKdW1wKGlu
c3RydWN0aW9uTG9jYXRpb24sIG5vZGVJbmRleCwgZGVzdGluYXRpb25Ob2RlSW5kZXgpOwogICAg
ICAgICBERkFCeXRlY29kZUp1bXBTaXplIGxvY2FsSnVtcFNpemUgPSBzbWFsbGVzdFBvc3NpYmxl
SnVtcFNpemUobG9uZ2VzdFBvc3NpYmxlSnVtcERpc3RhbmNlKTsKQEAgLTM1OCw3ICszOTcsNyBA
QCB2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGVKdW1wVGFibGUodWludDMyX3Qgbm9k
ZUluZGV4LCBjb25zdCBKdW1wVGFibGUmCiAgICAgfQogCiAgICAgREZBQnl0ZWNvZGVJbnN0cnVj
dGlvbiBpbnN0cnVjdGlvbiA9IGp1bXBUYWJsZS5jYXNlU2Vuc2l0aXZlID8gREZBQnl0ZWNvZGVJ
bnN0cnVjdGlvbjo6SnVtcFRhYmxlQ2FzZVNlbnNpdGl2ZSA6IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rp
b246Okp1bXBUYWJsZUNhc2VJbnNlbnNpdGl2ZTsKLSAgICBhcHBlbmQ8dWludDhfdD4obV9ieXRl
Y29kZSwgc3RhdGljX2Nhc3Q8dWludDhfdD4oaW5zdHJ1Y3Rpb24pIHwganVtcFNpemUpOworICAg
IGFwcGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBzdGF0aWNfY2FzdDx1aW50OF90PihpbnN0cnVj
dGlvbikgfCBzdGF0aWNfY2FzdDx1aW50OF90PihqdW1wU2l6ZSkpOwogICAgIGFwcGVuZDx1aW50
OF90PihtX2J5dGVjb2RlLCBqdW1wVGFibGUubWluKTsKICAgICBhcHBlbmQ8dWludDhfdD4obV9i
eXRlY29kZSwganVtcFRhYmxlLm1heCk7CiAKQEAgLTM5Nyw3ICs0MzYsNyBAQCB1bnNpZ25lZCBE
RkFCeXRlY29kZUNvbXBpbGVyOjpub2RlVHJhbnNpdGlvbnNNYXhCeXRlY29kZVNpemUoY29uc3Qg
REZBTm9kZSYgbm9kZQogICAgIGlmIChub2RlVHJhbnNpdGlvbnMudXNlRmFsbGJhY2tUcmFuc2l0
aW9uKQogICAgICAgICBzaXplICs9IHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uOjpKdW1w
KSArIHNpemVvZih1aW50MzJfdCk7CiAgICAgZWxzZQotICAgICAgICBzaXplICs9IGluc3RydWN0
aW9uU2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVybWluYXRlKTsK
KyAgICAgICAgc2l6ZSArPSBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVybWluYXRl
KTsKICAgICByZXR1cm4gc2l6ZTsKIH0KIApAQCAtNDY2LDIwICs1MDUsMjAgQEAgdm9pZCBERkFC
eXRlY29kZUNvbXBpbGVyOjpjb21waWxlKCkKICAgICAgICAgQVNTRVJUKGFicyhkaXN0YW5jZSkg
PD0gYWJzKGxpbmtSZWNvcmQubG9uZ2VzdFBvc3NpYmxlSnVtcCkpOwogICAgICAgICAKICAgICAg
ICAgc3dpdGNoIChsaW5rUmVjb3JkLmp1bXBTaXplKSB7Ci0gICAgICAgIGNhc2UgSW50ODoKKyAg
ICAgICAgY2FzZSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQ4OgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZGlzdGFuY2UgPT0gc3RhdGljX2Nhc3Q8aW50OF90PihkaXN0YW5jZSkpOwogICAg
ICAgICAgICAgc2V0Qml0czxpbnQ4X3Q+KG1fYnl0ZWNvZGUsIGxpbmtSZWNvcmQuanVtcExvY2F0
aW9uLCBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGRpc3RhbmNlKSk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBJbnQxNjoKKyAgICAgICAgY2FzZSBERkFCeXRlY29kZUp1bXBTaXplOjpJ
bnQxNjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpc3RhbmNlID09IHN0YXRpY19jYXN0
PGludDE2X3Q+KGRpc3RhbmNlKSk7CiAgICAgICAgICAgICBzZXRCaXRzPGludDE2X3Q+KG1fYnl0
ZWNvZGUsIGxpbmtSZWNvcmQuanVtcExvY2F0aW9uLCBzdGF0aWNfY2FzdDxpbnQxNl90PihkaXN0
YW5jZSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW50MjQ6CisgICAgICAg
IGNhc2UgREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MjQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChkaXN0YW5jZSA+PSBJbnQyNE1pbiAmJiBkaXN0YW5jZSA8PSBJbnQyNE1heCk7CiAgICAg
ICAgICAgICBzZXRCaXRzPHVpbnQxNl90PihtX2J5dGVjb2RlLCBsaW5rUmVjb3JkLmp1bXBMb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGRpc3RhbmNlKSk7CiAgICAgICAgICAgICBzZXRC
aXRzPGludDhfdD4obV9ieXRlY29kZSwgbGlua1JlY29yZC5qdW1wTG9jYXRpb24gKyBzaXplb2Yo
aW50MTZfdCksIHN0YXRpY19jYXN0PGludDhfdD4oZGlzdGFuY2UgPj4gMTYpKTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEludDMyOgorICAgICAgICBjYXNlIERGQUJ5dGVjb2Rl
SnVtcFNpemU6OkludDMyOgogICAgICAgICAgICAgc2V0Qml0czxpbnQzMl90PihtX2J5dGVjb2Rl
LCBsaW5rUmVjb3JkLmp1bXBMb2NhdGlvbiwgZGlzdGFuY2UpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTQ4Nyw5ICs1MjYsNyBAQCB2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6
OmNvbXBpbGUoKQogICAgIAogICAgIHNldEJpdHM8REZBSGVhZGVyPihtX2J5dGVjb2RlLCBzdGFy
dExvY2F0aW9uLCBtX2J5dGVjb2RlLnNpemUoKSAtIHN0YXJ0TG9jYXRpb24pOwogfQotICAgIAot
fSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMKIAogI2VuZGlmIC8v
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGJk
YzEzOWZjOWFiMzI2M2E3YTVmNmE1ZmNlZDdiYWZlNWM5YjlhOTQuLjMzZTlmNzRmNzdhZTE3MjQx
MGQ3ZTg3ODlhMGJkZDM4NGZlZThmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYyICsz
MSwxNTUgQEAKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLSAgICAKLW5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CituYW1lc3BhY2Ug
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlw
ZT4KLXN0YXRpYyBpbmxpbmUgSW50VHlwZSBnZXRCaXRzKGNvbnN0IERGQUJ5dGVjb2RlKiBieXRl
Y29kZSwgdWludDMyX3QgYnl0ZWNvZGVMZW5ndGgsIHVpbnQzMl90IGluZGV4KQorc3RhdGljIElu
dFR5cGUgZ2V0Qml0cyhTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1aW50MzJfdCBpbmRl
eCkKK3sKKyAgICBBU1NFUlQoaW5kZXggKyBzaXplb2YoSW50VHlwZSkgPD0gYnl0ZWNvZGUuc2l6
ZSgpKTsKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW50VHlwZSo+KGJ5dGVj
b2RlLmRhdGEoKSArIGluZGV4KTsKK30KKworc3RhdGljIHVpbnQzMl90IGdldDI0Qml0c1Vuc2ln
bmVkKFNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUsIHVpbnQzMl90IGluZGV4KQogewotICAg
IEFTU0VSVF9VTlVTRUQoYnl0ZWNvZGVMZW5ndGgsIGluZGV4ICsgc2l6ZW9mKEludFR5cGUpIDw9
IGJ5dGVjb2RlTGVuZ3RoKTsKLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW50
VHlwZSo+KCZieXRlY29kZVtpbmRleF0pOworICAgIEFTU0VSVChpbmRleCArIFVJbnQyNFNpemUg
PD0gYnl0ZWNvZGUuc2l6ZSgpKTsKKyAgICB1aW50MzJfdCBoaWdoQml0cyA9IGdldEJpdHM8dWlu
dDhfdD4oYnl0ZWNvZGUsIGluZGV4ICsgc2l6ZW9mKHVpbnQxNl90KSk7CisgICAgdWludDMyX3Qg
bG93Qml0cyA9IGdldEJpdHM8dWludDE2X3Q+KGJ5dGVjb2RlLCBpbmRleCk7CisgICAgcmV0dXJu
IChoaWdoQml0cyA8PCAxNikgfCBsb3dCaXRzOwogfQogCi1zdGF0aWMgaW5saW5lIERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb24gZ2V0SW5zdHJ1Y3Rpb24oY29uc3QgREZBQnl0ZWNvZGUqIGJ5dGVjb2Rl
LCB1aW50MzJfdCBieXRlY29kZUxlbmd0aCwgdWludDMyX3QgaW5kZXgpCitzdGF0aWMgREZBQnl0
ZWNvZGVJbnN0cnVjdGlvbiBnZXRJbnN0cnVjdGlvbihTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVj
b2RlLCB1aW50MzJfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8REZBQnl0ZWNv
ZGVJbnN0cnVjdGlvbj4oZ2V0Qml0czx1aW50OF90PihieXRlY29kZSwgYnl0ZWNvZGVMZW5ndGgs
IGluZGV4KSAmIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb25NYXNrKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8REZBQnl0ZWNvZGVJbnN0cnVjdGlvbj4oZ2V0Qml0czx1aW50OF90PihieXRlY29kZSwg
aW5kZXgpICYgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbk1hc2spOwogfQogCi1zdGF0aWMgaW5saW5l
IHNpemVfdCBqdW1wU2l6ZUluQnl0ZXMoREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSkKK3N0
YXRpYyBzaXplX3QganVtcFNpemVJbkJ5dGVzKERGQUJ5dGVjb2RlSnVtcFNpemUganVtcFNpemUp
CiB7CiAgICAgc3dpdGNoIChqdW1wU2l6ZSkgewotICAgIGNhc2UgSW50ODoKKyAgICBjYXNlIERG
QUJ5dGVjb2RlSnVtcFNpemU6OkludDg6CiAgICAgICAgIHJldHVybiBzaXplb2YoaW50OF90KTsK
LSAgICBjYXNlIEludDE2OgorICAgIGNhc2UgREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MTY6CiAg
ICAgICAgIHJldHVybiBzaXplb2YoaW50MTZfdCk7Ci0gICAgY2FzZSBJbnQyNDoKLSAgICAgICAg
cmV0dXJuIHNpemVvZih1aW50MTZfdCkgKyBzaXplb2YoaW50OF90KTsKLSAgICBjYXNlIEludDMy
OgorICAgIGNhc2UgREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MjQ6CisgICAgICAgIHJldHVybiBJ
bnQyNFNpemU7CisgICAgY2FzZSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQzMjoKICAgICAgICAg
cmV0dXJuIHNpemVvZihpbnQzMl90KTsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB1aW50MzJfdCBjb25zdW1lSW50ZWdlcihT
cGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVjb2RlLCB1aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIpCit7
CisgICAgcHJvZ3JhbUNvdW50ZXIgKz0gc2l6ZW9mKFQpOworICAgIHJldHVybiBnZXRCaXRzPFQ+
KGJ5dGVjb2RlLCBwcm9ncmFtQ291bnRlciAtIHNpemVvZihUKSk7Cit9CitzdGF0aWMgdWludDMy
X3QgY29uc3VtZTI0Qml0VW5zaWduZWRJbnRlZ2VyKFNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNv
ZGUsIHVpbnQzMl90JiBwcm9ncmFtQ291bnRlcikKK3sKKyAgICBwcm9ncmFtQ291bnRlciArPSBV
SW50MjRTaXplOworICAgIHJldHVybiBnZXQyNEJpdHNVbnNpZ25lZChieXRlY29kZSwgcHJvZ3Jh
bUNvdW50ZXIgLSBVSW50MjRTaXplKTsKK30KKworc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc0Zs
YWdzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb24pCit7CisgICAgc3dpdGNoIChp
bnN0cnVjdGlvbikgeworICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdz
QW5kQXBwZW5kQWN0aW9uOgorICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZs
YWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uOgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkNoZWNrVmFsdWVDYXNlU2Vuc2l0aXZl
OgorICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZUNhc2VJbnNlbnNp
dGl2ZToKKyAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246Okp1bXBUYWJsZUNhc2VJbnNl
bnNpdGl2ZToKKyAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246Okp1bXBUYWJsZUNhc2VT
ZW5zaXRpdmU6CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlUmFu
Z2VDYXNlU2Vuc2l0aXZlOgorICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tW
YWx1ZVJhbmdlQ2FzZUluc2Vuc2l0aXZlOgorICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlv
bjo6SnVtcDoKKyAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbjoK
KyAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRp
dGlvbjoKKyAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlcm1pbmF0ZToKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGlubGluZSBE
RkFCeXRlY29kZUp1bXBTaXplIGdldEp1bXBTaXplKGNvbnN0IERGQUJ5dGVjb2RlKiBieXRlY29k
ZSwgdWludDMyX3QgYnl0ZWNvZGVMZW5ndGgsIHVpbnQzMl90IGluZGV4KQorc3RhdGljIGNvbnN0
ZXhwciBib29sIGhhc0FjdGlvbihERkFCeXRlY29kZUluc3RydWN0aW9uIGluc3RydWN0aW9uKQog
ewotICAgIERGQUJ5dGVjb2RlSnVtcFNpemUganVtcFNpemUgPSBzdGF0aWNfY2FzdDxERkFCeXRl
Y29kZUp1bXBTaXplPihnZXRCaXRzPHVpbnQ4X3Q+KGJ5dGVjb2RlLCBieXRlY29kZUxlbmd0aCwg
aW5kZXgpICYgREZBQnl0ZWNvZGVKdW1wU2l6ZU1hc2spOwotICAgIEFTU0VSVChqdW1wU2l6ZSA9
PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQzMiB8fCBqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1
bXBTaXplOjpJbnQyNCB8fCBqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQxNiB8
fCBqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQ4KTsKKyAgICBzd2l0Y2ggKGlu
c3RydWN0aW9uKSB7CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NB
bmRBcHBlbmRBY3Rpb246CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0Rmxh
Z3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb246CisgICAgY2FzZSBERkFCeXRlY29kZUlu
c3RydWN0aW9uOjpBcHBlbmRBY3Rpb246CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9u
OjpBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb246CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZUNhc2VTZW5zaXRpdmU6Cisg
ICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlQ2FzZUluc2Vuc2l0aXZl
OgorICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6SnVtcFRhYmxlQ2FzZUluc2Vuc2l0
aXZlOgorICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6SnVtcFRhYmxlQ2FzZVNlbnNp
dGl2ZToKKyAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkNoZWNrVmFsdWVSYW5nZUNh
c2VTZW5zaXRpdmU6CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVl
UmFuZ2VDYXNlSW5zZW5zaXRpdmU6CisgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpK
dW1wOgorICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVybWluYXRlOgorICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgUmVzb3VyY2VG
bGFncyBjb25zdW1lUmVzb3VyY2VGbGFnc0FuZEluc3RydWN0aW9uKFNwYW48Y29uc3QgdWludDhf
dD4gYnl0ZWNvZGUsIHVpbnQzMl90JiBwcm9ncmFtQ291bnRlcikKK3sKKyAgICBBU1NFUlRfVU5V
U0VEKGhhc0ZsYWdzLCBoYXNGbGFncyhnZXRJbnN0cnVjdGlvbihieXRlY29kZSwgcHJvZ3JhbUNv
dW50ZXIpKSk7CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxERkFCeXRlY29kZUZsYWdzU2l6ZT4o
Ynl0ZWNvZGVbcHJvZ3JhbUNvdW50ZXIrK10gJiBERkFCeXRlY29kZUZsYWdzU2l6ZU1hc2spKSB7
CisgICAgY2FzZSBERkFCeXRlY29kZUZsYWdzU2l6ZTo6VUludDg6CisgICAgICAgIHJldHVybiBj
b25zdW1lSW50ZWdlcjx1aW50OF90PihieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOworICAgIGNh
c2UgREZBQnl0ZWNvZGVGbGFnc1NpemU6OlVJbnQxNjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
bnRlZ2VyPHVpbnQxNl90PihieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOworICAgIGNhc2UgREZB
Qnl0ZWNvZGVGbGFnc1NpemU6OlVJbnQyNDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWUyNEJpdFVu
c2lnbmVkSW50ZWdlcihieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOworICAgIH0KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHVpbnQzMl90IGNv
bnN1bWVBY3Rpb24oU3Bhbjxjb25zdCB1aW50OF90PiBieXRlY29kZSwgdWludDMyX3QmIHByb2dy
YW1Db3VudGVyLCB1aW50MzJfdCBpbnN0cnVjdGlvbkxvY2F0aW9uKQoreworICAgIEFTU0VSVF9V
TlVTRUQoaGFzQWN0aW9uLCBoYXNBY3Rpb24oZ2V0SW5zdHJ1Y3Rpb24oYnl0ZWNvZGUsIGluc3Ry
dWN0aW9uTG9jYXRpb24pKSk7CisgICAgQVNTRVJUKHByb2dyYW1Db3VudGVyID4gaW5zdHJ1Y3Rp
b25Mb2NhdGlvbik7CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxERkFCeXRlY29kZUFjdGlvblNp
emU+KGJ5dGVjb2RlW2luc3RydWN0aW9uTG9jYXRpb25dICYgREZBQnl0ZWNvZGVBY3Rpb25TaXpl
TWFzaykpIHsKKyAgICBjYXNlIERGQUJ5dGVjb2RlQWN0aW9uU2l6ZTo6VUludDg6CisgICAgICAg
IHJldHVybiBjb25zdW1lSW50ZWdlcjx1aW50OF90PihieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIp
OworICAgIGNhc2UgREZBQnl0ZWNvZGVBY3Rpb25TaXplOjpVSW50MTY6CisgICAgICAgIHJldHVy
biBjb25zdW1lSW50ZWdlcjx1aW50MTZfdD4oYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKTsKKyAg
ICBjYXNlIERGQUJ5dGVjb2RlQWN0aW9uU2l6ZTo6VUludDI0OgorICAgICAgICByZXR1cm4gY29u
c3VtZTI0Qml0VW5zaWduZWRJbnRlZ2VyKGJ5dGVjb2RlLCBwcm9ncmFtQ291bnRlcik7CisgICAg
Y2FzZSBERkFCeXRlY29kZUFjdGlvblNpemU6OlVJbnQzMjoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVJbnRlZ2VyPHVpbnQzMl90PihieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIERGQUJ5
dGVjb2RlSnVtcFNpemUgZ2V0SnVtcFNpemUoU3Bhbjxjb25zdCB1aW50OF90PiBieXRlY29kZSwg
dWludDMyX3QgaW5kZXgpCit7CisgICAgYXV0byBqdW1wU2l6ZSA9IHN0YXRpY19jYXN0PERGQUJ5
dGVjb2RlSnVtcFNpemU+KGdldEJpdHM8dWludDhfdD4oYnl0ZWNvZGUsIGluZGV4KSAmIERGQUJ5
dGVjb2RlSnVtcFNpemVNYXNrKTsKKyAgICBBU1NFUlQoanVtcFNpemUgPT0gREZBQnl0ZWNvZGVK
dW1wU2l6ZTo6SW50MzIKKyAgICAgICAgfHwganVtcFNpemUgPT0gREZBQnl0ZWNvZGVKdW1wU2l6
ZTo6SW50MjQKKyAgICAgICAgfHwganVtcFNpemUgPT0gREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50
MTYKKyAgICAgICAgfHwganVtcFNpemUgPT0gREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50OCk7CiAg
ICAgcmV0dXJuIGp1bXBTaXplOwogfQogCi1zdGF0aWMgaW5saW5lIGludDMyX3QgZ2V0SnVtcERp
c3RhbmNlKGNvbnN0IERGQUJ5dGVjb2RlKiBieXRlY29kZSwgdWludDMyX3QgYnl0ZWNvZGVMZW5n
dGgsIHVpbnQzMl90IGluZGV4LCBERkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplKQorc3RhdGlj
IGludDMyX3QgZ2V0SnVtcERpc3RhbmNlKFNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUsIHVp
bnQzMl90IGluZGV4LCBERkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplKQogewogICAgIHN3aXRj
aCAoanVtcFNpemUpIHsKLSAgICBjYXNlIEludDg6Ci0gICAgICAgIHJldHVybiBnZXRCaXRzPGlu
dDhfdD4oYnl0ZWNvZGUsIGJ5dGVjb2RlTGVuZ3RoLCBpbmRleCk7Ci0gICAgY2FzZSBJbnQxNjoK
LSAgICAgICAgcmV0dXJuIGdldEJpdHM8aW50MTZfdD4oYnl0ZWNvZGUsIGJ5dGVjb2RlTGVuZ3Ro
LCBpbmRleCk7Ci0gICAgY2FzZSBJbnQyNDoKLSAgICAgICAgcmV0dXJuIGdldEJpdHM8dWludDE2
X3Q+KGJ5dGVjb2RlLCBieXRlY29kZUxlbmd0aCwgaW5kZXgpIHwgKHN0YXRpY19jYXN0PGludDMy
X3Q+KGdldEJpdHM8aW50OF90PihieXRlY29kZSwgYnl0ZWNvZGVMZW5ndGgsIGluZGV4ICsgc2l6
ZW9mKHVpbnQxNl90KSkpIDw8IDE2KTsKLSAgICBjYXNlIEludDMyOgotICAgICAgICByZXR1cm4g
Z2V0Qml0czxpbnQzMl90PihieXRlY29kZSwgYnl0ZWNvZGVMZW5ndGgsIGluZGV4KTsKLSAgICBk
ZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2Ug
REZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50ODoKKyAgICAgICAgcmV0dXJuIGdldEJpdHM8aW50OF90
PihieXRlY29kZSwgaW5kZXgpOworICAgIGNhc2UgREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MTY6
CisgICAgICAgIHJldHVybiBnZXRCaXRzPGludDE2X3Q+KGJ5dGVjb2RlLCBpbmRleCk7CisgICAg
Y2FzZSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQyNDoKKyAgICAgICAgcmV0dXJuIGdldEJpdHM8
dWludDE2X3Q+KGJ5dGVjb2RlLCBpbmRleCkgfCAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oZ2V0Qml0
czxpbnQ4X3Q+KGJ5dGVjb2RlLCBpbmRleCArIHNpemVvZih1aW50MTZfdCkpKSA8PCAxNik7Cisg
ICAgY2FzZSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQzMjoKKyAgICAgICAgcmV0dXJuIGdldEJp
dHM8aW50MzJfdD4oYnl0ZWNvZGUsIGluZGV4KTsKICAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIG1hdGNoZXNDb25kaXRpb24o
dWludDY0X3QgYWN0aW9uQW5kRmxhZ3MsIGNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFj
dGlvbnMmIGNvbmRpdGlvbkFjdGlvbnMpCitzdGF0aWMgYm9vbCBtYXRjaGVzQ29uZGl0aW9uKHVp
bnQ2NF90IGFjdGlvbkFuZEZsYWdzLCBjb25zdCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rp
b25zJiBjb25kaXRpb25BY3Rpb25zKQogewogICAgIGJvb2wgaWZDb25kaXRpb24gPSBhY3Rpb25B
bmRGbGFncyAmIElmQ29uZGl0aW9uRmxhZzsKICAgICBib29sIGNvbmRpdGlvbiA9IGNvbmRpdGlv
bkFjdGlvbnMuY29udGFpbnMoYWN0aW9uQW5kRmxhZ3MpOwpAQCAtOTUsNTEgKzE4OCw0OCBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgbWF0Y2hlc0NvbmRpdGlvbih1aW50NjRfdCBhY3Rpb25BbmRGbGFn
cywgY29uc3QgREZBQnl0ZWNvZGVJbgogCiB2b2lkIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6Omlu
dGVycHJldEFwcGVuZEFjdGlvbih1aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIsIEFjdGlvbnMmIGFj
dGlvbnMsIGJvb2wgaWZDb25kaXRpb24pCiB7Ci0gICAgQVNTRVJUKGdldEluc3RydWN0aW9uKG1f
Ynl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSA9PSBERkFCeXRlY29k
ZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24KLSAgICAgICAgfHwgZ2V0SW5zdHJ1Y3Rpb24obV9i
eXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIpID09IERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbik7Ci0gICAgdWludDY0X3Qg
YWN0aW9uID0gKGlmQ29uZGl0aW9uID8gSWZDb25kaXRpb25GbGFnIDogMCkgfCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oZ2V0Qml0czx1aW50MzJfdD4obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0
aCwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikpKTsKKyAg
ICBBU1NFUlQoZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpID09IERG
QUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbgorICAgICAgICB8fCBnZXRJbnN0cnVj
dGlvbihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcikgPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlv
bjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKTsKKyAgICBhdXRvIGluc3RydWN0aW9uTG9j
YXRpb24gPSBwcm9ncmFtQ291bnRlcisrOworICAgIHVpbnQ2NF90IGFjdGlvbldpdGhvdXRGbGFn
cyA9IGNvbnN1bWVBY3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIsIGluc3RydWN0aW9u
TG9jYXRpb24pOworICAgIHVpbnQ2NF90IGFjdGlvbiA9IChpZkNvbmRpdGlvbiA/IElmQ29uZGl0
aW9uRmxhZyA6IDApIHwgYWN0aW9uV2l0aG91dEZsYWdzOwogICAgIGlmICghbV90b3BVUkxBY3Rp
b25zIHx8IG1hdGNoZXNDb25kaXRpb24oYWN0aW9uLCAqbV90b3BVUkxBY3Rpb25zKSkKICAgICAg
ICAgYWN0aW9ucy5hZGQoYWN0aW9uKTsKLSAgICAKLSAgICBwcm9ncmFtQ291bnRlciArPSBpbnN0
cnVjdGlvblNpemVXaXRoQXJndW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFj
dGlvbik7Ci0gICAgQVNTRVJUKGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMoREZBQnl0ZWNv
ZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uKSA9PSBpbnN0cnVjdGlvblNpemVXaXRoQXJndW1l
bnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbikp
OwogfQogCi12b2lkIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldFRlc3RGbGFnc0Fu
ZEFwcGVuZEFjdGlvbih1aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIsIHVpbnQxNl90IGZsYWdzLCBB
Y3Rpb25zJiBhY3Rpb25zLCBib29sIGlmQ29uZGl0aW9uKQordm9pZCBERkFCeXRlY29kZUludGVy
cHJldGVyOjppbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24odWludDMyX3QmIHByb2dy
YW1Db3VudGVyLCBSZXNvdXJjZUZsYWdzIGZsYWdzLCBBY3Rpb25zJiBhY3Rpb25zLCBib29sIGlm
Q29uZGl0aW9uKQogewotICAgIEFTU0VSVChnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5
dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlcikgPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6
VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uCi0gICAgICAgIHx8IGdldEluc3RydWN0aW9uKG1fYnl0
ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSA9PSBERkFCeXRlY29kZUlu
c3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24pOwotICAg
IHVpbnQxNl90IGZsYWdzVG9DaGVjayA9IGdldEJpdHM8dWludDE2X3Q+KG1fYnl0ZWNvZGUsIG1f
Ynl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1
Y3Rpb24pKTsKKyAgICBhdXRvIGluc3RydWN0aW9uTG9jYXRpb24gPSBwcm9ncmFtQ291bnRlcjsK
KyAgICBhdXRvIGZsYWdzVG9DaGVjayA9IGNvbnN1bWVSZXNvdXJjZUZsYWdzQW5kSW5zdHJ1Y3Rp
b24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOwogCi0gICAgdWludDE2X3QgbG9hZFR5cGVG
bGFncyA9IGZsYWdzVG9DaGVjayAmIExvYWRUeXBlTWFzazsKLSAgICB1aW50MTZfdCBsb2FkQ29u
dGV4dEZsYWdzID0gZmxhZ3NUb0NoZWNrICYgTG9hZENvbnRleHRNYXNrOwotICAgIHVpbnQxNl90
IHJlc291cmNlVHlwZUZsYWdzID0gZmxhZ3NUb0NoZWNrICYgUmVzb3VyY2VUeXBlTWFzazsKKyAg
ICBSZXNvdXJjZUZsYWdzIGxvYWRUeXBlRmxhZ3MgPSBmbGFnc1RvQ2hlY2sgJiBMb2FkVHlwZU1h
c2s7CisgICAgUmVzb3VyY2VGbGFncyBsb2FkQ29udGV4dEZsYWdzID0gZmxhZ3NUb0NoZWNrICYg
TG9hZENvbnRleHRNYXNrOworICAgIFJlc291cmNlRmxhZ3MgcmVzb3VyY2VUeXBlRmxhZ3MgPSBm
bGFnc1RvQ2hlY2sgJiBSZXNvdXJjZVR5cGVNYXNrOwogCiAgICAgYm9vbCBsb2FkVHlwZU1hdGNo
ZXMgPSBsb2FkVHlwZUZsYWdzID8gKGxvYWRUeXBlRmxhZ3MgJiBmbGFncykgOiB0cnVlOwogICAg
IGJvb2wgbG9hZENvbnRleHRNYXRjaGVzID0gbG9hZENvbnRleHRGbGFncyA/IChsb2FkQ29udGV4
dEZsYWdzICYgZmxhZ3MpIDogdHJ1ZTsKICAgICBib29sIHJlc291cmNlVHlwZU1hdGNoZXMgPSBy
ZXNvdXJjZVR5cGVGbGFncyA/IChyZXNvdXJjZVR5cGVGbGFncyAmIGZsYWdzKSA6IHRydWU7CiAg
ICAgCisgICAgYXV0byBhY3Rpb25XaXRob3V0RmxhZ3MgPSBjb25zdW1lQWN0aW9uKG1fYnl0ZWNv
ZGUsIHByb2dyYW1Db3VudGVyLCBpbnN0cnVjdGlvbkxvY2F0aW9uKTsKICAgICBpZiAobG9hZFR5
cGVNYXRjaGVzICYmIGxvYWRDb250ZXh0TWF0Y2hlcyAmJiByZXNvdXJjZVR5cGVNYXRjaGVzKSB7
Ci0gICAgICAgIHVpbnQ2NF90IGFjdGlvbkFuZEZsYWdzID0gKGlmQ29uZGl0aW9uID8gSWZDb25k
aXRpb25GbGFnIDogMCkgfCAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGZsYWdzVG9DaGVjaykgPDwg
MzIpIHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGdldEJpdHM8dWludDMyX3Q+KG1fYnl0ZWNvZGUs
IG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb24pICsgc2l6ZW9mKHVpbnQxNl90KSkpOworICAgICAgICB1aW50NjRfdCBhY3Rpb25B
bmRGbGFncyA9IChpZkNvbmRpdGlvbiA/IElmQ29uZGl0aW9uRmxhZyA6IDApIHwgKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihmbGFnc1RvQ2hlY2spIDw8IDMyKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90
PihhY3Rpb25XaXRob3V0RmxhZ3MpOwogICAgICAgICBpZiAoIW1fdG9wVVJMQWN0aW9ucyB8fCBt
YXRjaGVzQ29uZGl0aW9uKGFjdGlvbkFuZEZsYWdzLCAqbV90b3BVUkxBY3Rpb25zKSkKICAgICAg
ICAgICAgIGFjdGlvbnMuYWRkKGFjdGlvbkFuZEZsYWdzKTsKICAgICB9Ci0gICAgcHJvZ3JhbUNv
dW50ZXIgKz0gaW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0
aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24pOwotICAgIEFTU0VSVChpbnN0cnVjdGlvblNp
emVXaXRoQXJndW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVu
ZEFjdGlvbikgPT0gaW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3Ry
dWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24pKTsKIH0KIAog
dGVtcGxhdGU8Ym9vbCBjYXNlU2Vuc2l0aXZlPgogaW5saW5lIHZvaWQgREZBQnl0ZWNvZGVJbnRl
cnByZXRlcjo6aW50ZXJwZXRKdW1wVGFibGUoY29uc3QgY2hhciogdXJsLCB1aW50MzJfdCYgdXJs
SW5kZXgsIHVpbnQzMl90JiBwcm9ncmFtQ291bnRlciwgYm9vbCYgdXJsSW5kZXhJc0FmdGVyRW5k
T2ZTdHJpbmcpCiB7Ci0gICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IGdldEp1bXBT
aXplKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKTsKKyAgICBE
RkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplID0gZ2V0SnVtcFNpemUobV9ieXRlY29kZSwgcHJv
Z3JhbUNvdW50ZXIpOwogCiAgICAgY2hhciBjaGFyYWN0ZXIgPSBjYXNlU2Vuc2l0aXZlID8gdXJs
W3VybEluZGV4XSA6IHRvQVNDSUlMb3dlcih1cmxbdXJsSW5kZXhdKTsKLSAgICB1aW50OF90IGZp
cnN0Q2hhcmFjdGVyID0gZ2V0Qml0czx1aW50OF90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVu
Z3RoLCBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSk7Ci0g
ICAgdWludDhfdCBsYXN0Q2hhcmFjdGVyID0gZ2V0Qml0czx1aW50OF90PihtX2J5dGVjb2RlLCBt
X2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3Ry
dWN0aW9uKSArIHNpemVvZih1aW50OF90KSk7CisgICAgdWludDhfdCBmaXJzdENoYXJhY3RlciA9
IGdldEJpdHM8dWludDhfdD4obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbikpOworICAgIHVpbnQ4X3QgbGFzdENoYXJhY3RlciA9IGdldEJp
dHM8dWludDhfdD4obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNv
ZGVJbnN0cnVjdGlvbikgKyBzaXplb2YodWludDhfdCkpOwogICAgIGlmIChjaGFyYWN0ZXIgPj0g
Zmlyc3RDaGFyYWN0ZXIgJiYgY2hhcmFjdGVyIDw9IGxhc3RDaGFyYWN0ZXIpIHsKICAgICAgICAg
dWludDMyX3Qgc3RhcnRPZmZzZXQgPSBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29k
ZUluc3RydWN0aW9uKSArIDIgKiBzaXplb2YodWludDhfdCk7CiAgICAgICAgIHVpbnQzMl90IGp1
bXBMb2NhdGlvbiA9IHN0YXJ0T2Zmc2V0ICsgKGNoYXJhY3RlciAtIGZpcnN0Q2hhcmFjdGVyKSAq
IGp1bXBTaXplSW5CeXRlcyhqdW1wU2l6ZSk7Ci0gICAgICAgIHByb2dyYW1Db3VudGVyICs9IGdl
dEp1bXBEaXN0YW5jZShtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBqdW1wTG9jYXRpb24s
IGp1bXBTaXplKTsKKyAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gZ2V0SnVtcERpc3RhbmNlKG1f
Ynl0ZWNvZGUsIGp1bXBMb2NhdGlvbiwganVtcFNpemUpOwogICAgICAgICBpZiAoIWNoYXJhY3Rl
cikKICAgICAgICAgICAgIHVybEluZGV4SXNBZnRlckVuZE9mU3RyaW5nID0gdHJ1ZTsKICAgICAg
ICAgdXJsSW5kZXgrKzsgLy8gVGhpcyByZXByZXNlbnRzIGFuIGVkZ2UgaW4gdGhlIERGQS4KQEAg
LTE0Nyw0MCArMjM3LDQxIEBAIGlubGluZSB2b2lkIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6Omlu
dGVycGV0SnVtcFRhYmxlKGNvbnN0IGNoYXIqIHVybCwgdWludDMyX3QmCiAgICAgICAgIHByb2dy
YW1Db3VudGVyICs9IHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIDIgKiBzaXplb2Yo
dWludDhfdCkgKyBqdW1wU2l6ZUluQnl0ZXMoanVtcFNpemUpICogKGxhc3RDaGFyYWN0ZXIgLSBm
aXJzdENoYXJhY3RlciArIDEpOwogfQogCi1ERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25z
IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmFjdGlvbnNNYXRjaGluZ0V2ZXJ5dGhpbmcoKQorYXV0
byBERkFCeXRlY29kZUludGVycHJldGVyOjphY3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nKCkgLT4g
QWN0aW9ucwogewogICAgIEFjdGlvbnMgYWN0aW9uczsKIAogICAgIC8vIERGQSBoZWFkZXIuCi0g
ICAgdWludDMyX3QgZGZhQnl0ZWNvZGVMZW5ndGggPSBnZXRCaXRzPHVpbnQzMl90PihtX2J5dGVj
b2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCAwKTsKLSAgICB1aW50MzJfdCBwcm9ncmFtQ291bnRlciA9
IHNpemVvZih1aW50MzJfdCk7CisgICAgdWludDMyX3QgZGZhQnl0ZWNvZGVMZW5ndGggPSBnZXRC
aXRzPHVpbnQzMl90PihtX2J5dGVjb2RlLCAwKTsKKyAgICB1aW50MzJfdCBwcm9ncmFtQ291bnRl
ciA9IHNpemVvZihERkFIZWFkZXIpOwogCiAgICAgd2hpbGUgKHByb2dyYW1Db3VudGVyIDwgZGZh
Qnl0ZWNvZGVMZW5ndGgpIHsKLSAgICAgICAgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVj
dGlvbiA9IGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dy
YW1Db3VudGVyKTsKKyAgICAgICAgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbiA9
IGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKTsKICAgICAgICAgaWYg
KGluc3RydWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbikKICAg
ICAgICAgICAgIGludGVycHJldEFwcGVuZEFjdGlvbihwcm9ncmFtQ291bnRlciwgYWN0aW9ucywg
ZmFsc2UpOwogICAgICAgICBlbHNlIGlmIChpbnN0cnVjdGlvbiA9PSBERkFCeXRlY29kZUluc3Ry
dWN0aW9uOjpBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24pCiAgICAgICAgICAgICBpbnRlcnBy
ZXRBcHBlbmRBY3Rpb24ocHJvZ3JhbUNvdW50ZXIsIGFjdGlvbnMsIHRydWUpOwotICAgICAgICBl
bHNlIGlmIChpbnN0cnVjdGlvbiA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NB
bmRBcHBlbmRBY3Rpb24pCi0gICAgICAgICAgICBwcm9ncmFtQ291bnRlciArPSBpbnN0cnVjdGlv
blNpemVXaXRoQXJndW1lbnRzKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFw
cGVuZEFjdGlvbik7Ci0gICAgICAgIGVsc2UgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbikKLSAg
ICAgICAgICAgIHByb2dyYW1Db3VudGVyICs9IGluc3RydWN0aW9uU2l6ZVdpdGhBcmd1bWVudHMo
REZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29u
ZGl0aW9uKTsKLSAgICAgICAgZWxzZQorICAgICAgICBlbHNlIGlmIChpbnN0cnVjdGlvbiA9PSBE
RkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24KKyAgICAgICAg
ICAgIHx8IGluc3RydWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0Fu
ZEFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbikgeworICAgICAgICAgICAgYXV0byBwcm9ncmFt
Q291bnRlckF0SW5zdHJ1Y3Rpb24gPSBwcm9ncmFtQ291bnRlcjsKKyAgICAgICAgICAgIGNvbnN1
bWVSZXNvdXJjZUZsYWdzQW5kSW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIp
OworICAgICAgICAgICAgY29uc3VtZUFjdGlvbihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlciwg
cHJvZ3JhbUNvdW50ZXJBdEluc3RydWN0aW9uKTsKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIGFjdGlvbnM7CiB9CiAgICAgCi1ERkFCeXRlY29k
ZUludGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldFdp
dGhDb25kaXRpb25zKGNvbnN0IENTdHJpbmcmIHVybENTdHJpbmcsIHVpbnQxNl90IGZsYWdzLCBj
b25zdCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zJiB0b3BVUkxBY3Rpb25zKQorYXV0
byBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXRXaXRoQ29uZGl0aW9ucyhjb25zdCBD
U3RyaW5nJiB1cmxDU3RyaW5nLCBSZXNvdXJjZUZsYWdzIGZsYWdzLCBjb25zdCBBY3Rpb25zJiB0
b3BVUkxBY3Rpb25zKSAtPiBBY3Rpb25zCiB7CiAgICAgQVNTRVJUKCFtX3RvcFVSTEFjdGlvbnMp
OwogICAgIG1fdG9wVVJMQWN0aW9ucyA9ICZ0b3BVUkxBY3Rpb25zOwotICAgIERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXI6OkFjdGlvbnMgYWN0aW9ucyA9IGludGVycHJldCh1cmxDU3RyaW5nLCBmbGFn
cyk7CisgICAgYXV0byBhY3Rpb25zID0gaW50ZXJwcmV0KHVybENTdHJpbmcsIGZsYWdzKTsKICAg
ICBtX3RvcFVSTEFjdGlvbnMgPSBudWxscHRyOwogICAgIHJldHVybiBhY3Rpb25zOwogfQogCi1E
RkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6Omlu
dGVycHJldChjb25zdCBDU3RyaW5nJiB1cmxDU3RyaW5nLCB1aW50MTZfdCBmbGFncykKK2F1dG8g
REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmIHVybENTdHJp
bmcsIFJlc291cmNlRmxhZ3MgZmxhZ3MpIC0+IEFjdGlvbnMKIHsKICAgICBjb25zdCBjaGFyKiB1
cmwgPSB1cmxDU3RyaW5nLmRhdGEoKTsKICAgICBBU1NFUlQodXJsKTsKQEAgLTE4OCwzNSArMjc5
LDM0IEBAIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgREZBQnl0ZWNvZGVJbnRlcnBy
ZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmCiAgICAgQWN0aW9ucyBhY3Rpb25zOwogICAg
IAogICAgIHVpbnQzMl90IHByb2dyYW1Db3VudGVyID0gMDsKLSAgICB3aGlsZSAocHJvZ3JhbUNv
dW50ZXIgPCBtX2J5dGVjb2RlTGVuZ3RoKSB7CisgICAgd2hpbGUgKHByb2dyYW1Db3VudGVyIDwg
bV9ieXRlY29kZS5zaXplKCkpIHsKIAogICAgICAgICAvLyBERkEgaGVhZGVyLgogICAgICAgICB1
aW50MzJfdCBkZmFTdGFydCA9IHByb2dyYW1Db3VudGVyOwotICAgICAgICB1aW50MzJfdCBkZmFC
eXRlY29kZUxlbmd0aCA9IGdldEJpdHM8dWludDMyX3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVM
ZW5ndGgsIHByb2dyYW1Db3VudGVyKTsKKyAgICAgICAgdWludDMyX3QgZGZhQnl0ZWNvZGVMZW5n
dGggPSBnZXRCaXRzPHVpbnQzMl90PihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcik7CiAgICAg
ICAgIHByb2dyYW1Db3VudGVyICs9IHNpemVvZih1aW50MzJfdCk7CiAKICAgICAgICAgLy8gU2tp
cCB0aGUgYWN0aW9ucyB3aXRob3V0IGZsYWdzIG9uIHRoZSBERkEgcm9vdC4gVGhlc2UgYXJlIGFj
Y2Vzc2VkIHZpYSBhY3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nLgogICAgICAgICBpZiAoIWRmYVN0
YXJ0KSB7CiAgICAgICAgICAgICB3aGlsZSAocHJvZ3JhbUNvdW50ZXIgPCBkZmFCeXRlY29kZUxl
bmd0aCkgewotICAgICAgICAgICAgICAgIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rp
b24gPSBnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFt
Q291bnRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVjb2Rl
SW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNv
dW50ZXIgKz0gaW5zdHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0
aW9uOjpBcHBlbmRBY3Rpb24pOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluc3RydWN0aW9u
ID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbikK
LSAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gaW5zdHJ1Y3Rpb25TaXplV2l0
aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb25XaXRoSWZDb25k
aXRpb24pOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbikKKyAgICAgICAgICAgICAg
ICBERkFCeXRlY29kZUluc3RydWN0aW9uIGluc3RydWN0aW9uID0gZ2V0SW5zdHJ1Y3Rpb24obV9i
eXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOworICAgICAgICAgICAgICAgIGlmIChpbnN0cnVjdGlv
biA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24gfHwgaW5zdHJ1Y3Rpb24g
PT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKSB7
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb25Mb2NhdGlvbiA9IHByb2dyYW1D
b3VudGVyKys7CisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVBY3Rpb24obV9ieXRlY29kZSwg
cHJvZ3JhbUNvdW50ZXIsIGluc3RydWN0aW9uTG9jYXRpb24pOworICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoaW5zdHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdz
QW5kQXBwZW5kQWN0aW9uKQogICAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRUZXN0RmxhZ3NB
bmRBcHBlbmRBY3Rpb24ocHJvZ3JhbUNvdW50ZXIsIGZsYWdzLCBhY3Rpb25zLCBmYWxzZSk7CiAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5zdHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVj
dGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKQogICAgICAgICAg
ICAgICAgICAgICBpbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24ocHJvZ3JhbUNvdW50
ZXIsIGZsYWdzLCBhY3Rpb25zLCB0cnVlKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHByb2dy
YW1Db3VudGVyID49IG1fYnl0ZWNvZGVMZW5ndGgpCisgICAgICAgICAgICBpZiAocHJvZ3JhbUNv
dW50ZXIgPj0gbV9ieXRlY29kZS5zaXplKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlv
bnM7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGdl
dEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVy
KSAhPSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24KLSAgICAgICAgICAgICAg
ICAmJiBnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFt
Q291bnRlcikgIT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29u
ZGl0aW9uCi0gICAgICAgICAgICAgICAgJiYgZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgbV9i
eXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIpICE9IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246
OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbgotICAgICAgICAgICAgICAgICYmIGdldEluc3RydWN0
aW9uKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSAhPSBERkFC
eXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRp
b24sCisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGdldEluc3RydWN0aW9uKG1fYnl0
ZWNvZGUsIHByb2dyYW1Db3VudGVyKSAhPSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRB
Y3Rpb24KKyAgICAgICAgICAgICAgICAmJiBnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBwcm9n
cmFtQ291bnRlcikgIT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElm
Q29uZGl0aW9uCisgICAgICAgICAgICAgICAgJiYgZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwg
cHJvZ3JhbUNvdW50ZXIpICE9IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFw
cGVuZEFjdGlvbgorICAgICAgICAgICAgICAgICYmIGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUs
IHByb2dyYW1Db3VudGVyKSAhPSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRB
cHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24sCiAgICAgICAgICAgICAgICAgIlRyaWdnZXJzIHRo
YXQgbWF0Y2ggZXZlcnl0aGluZyBzaG91bGQgb25seSBiZSBpbiB0aGUgZmlyc3QgREZBLiIpOwog
ICAgICAgICB9CiAgICAgICAgIApAQCAtMjI1LDggKzMxNSw4IEBAIERGQUJ5dGVjb2RlSW50ZXJw
cmV0ZXI6OkFjdGlvbnMgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENT
dHJpbmcmCiAgICAgICAgIHVpbnQzMl90IHVybEluZGV4ID0gMDsKICAgICAgICAgYm9vbCB1cmxJ
bmRleElzQWZ0ZXJFbmRPZlN0cmluZyA9IGZhbHNlOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewot
ICAgICAgICAgICAgQVNTRVJUKHByb2dyYW1Db3VudGVyIDw9IG1fYnl0ZWNvZGVMZW5ndGgpOwot
ICAgICAgICAgICAgc3dpdGNoIChnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2Rl
TGVuZ3RoLCBwcm9ncmFtQ291bnRlcikpIHsKKyAgICAgICAgICAgIEFTU0VSVChwcm9ncmFtQ291
bnRlciA8PSBtX2J5dGVjb2RlLnNpemUoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGdldEluc3Ry
dWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKSkgewogCiAgICAgICAgICAgICBjYXNl
IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlcm1pbmF0ZToKICAgICAgICAgICAgICAgICBnb3Rv
IG5leHRERkE7CkBAIC0yMzcsMTAgKzMyNywxMCBAQCBERkFCeXRlY29kZUludGVycHJldGVyOjpB
Y3Rpb25zIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldChjb25zdCBDU3RyaW5nJgog
CiAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBuZXh0IGNoYXJhY3RlciBp
biB0aGUgdXJsIGlzIHRoZSB2YWx1ZSBzdG9yZWQgd2l0aCB0aGUgYnl0ZWNvZGUuCiAgICAgICAg
ICAgICAgICAgY2hhciBjaGFyYWN0ZXIgPSB1cmxbdXJsSW5kZXhdOwotICAgICAgICAgICAgICAg
IERGQUJ5dGVjb2RlSnVtcFNpemUganVtcFNpemUgPSBnZXRKdW1wU2l6ZShtX2J5dGVjb2RlLCBt
X2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGNo
YXJhY3RlciA9PSBnZXRCaXRzPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgs
IHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pKSkgeworICAg
ICAgICAgICAgICAgIERGQUJ5dGVjb2RlSnVtcFNpemUganVtcFNpemUgPSBnZXRKdW1wU2l6ZSht
X2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcik7CisgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3Rl
ciA9PSBnZXRCaXRzPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9m
KERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pKSkgewogICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBqdW1wTG9jYXRpb24gPSBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3Ry
dWN0aW9uKSArIHNpemVvZih1aW50OF90KTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNv
dW50ZXIgKz0gZ2V0SnVtcERpc3RhbmNlKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIGp1
bXBMb2NhdGlvbiwganVtcFNpemUpOworICAgICAgICAgICAgICAgICAgICBwcm9ncmFtQ291bnRl
ciArPSBnZXRKdW1wRGlzdGFuY2UobV9ieXRlY29kZSwganVtcExvY2F0aW9uLCBqdW1wU2l6ZSk7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyKQogICAgICAgICAgICAgICAgICAg
ICAgICAgdXJsSW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICB1cmxJbmRleCsrOyAvLyBUaGlzIHJlcHJlc2VudHMgYW4gZWRnZSBpbiB0aGUgREZBLgpA
QCAtMjU1LDEwICszNDUsMTAgQEAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyBERkFC
eXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXQoY29uc3QgQ1N0cmluZyYKIAogICAgICAgICAg
ICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIHVybCBp
cyB0aGUgdmFsdWUgc3RvcmVkIHdpdGggdGhlIGJ5dGVjb2RlLgogICAgICAgICAgICAgICAgIGNo
YXIgY2hhcmFjdGVyID0gdG9BU0NJSUxvd2VyKHVybFt1cmxJbmRleF0pOwotICAgICAgICAgICAg
ICAgIERGQUJ5dGVjb2RlSnVtcFNpemUganVtcFNpemUgPSBnZXRKdW1wU2l6ZShtX2J5dGVjb2Rl
LCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlcik7Ci0gICAgICAgICAgICAgICAgaWYg
KGNoYXJhY3RlciA9PSBnZXRCaXRzPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5n
dGgsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pKSkgewor
ICAgICAgICAgICAgICAgIERGQUJ5dGVjb2RlSnVtcFNpemUganVtcFNpemUgPSBnZXRKdW1wU2l6
ZShtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcik7CisgICAgICAgICAgICAgICAgaWYgKGNoYXJh
Y3RlciA9PSBnZXRCaXRzPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyICsgc2l6
ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pKSkgewogICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBqdW1wTG9jYXRpb24gPSBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUlu
c3RydWN0aW9uKSArIHNpemVvZih1aW50OF90KTsKLSAgICAgICAgICAgICAgICAgICAgcHJvZ3Jh
bUNvdW50ZXIgKz0gZ2V0SnVtcERpc3RhbmNlKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgs
IGp1bXBMb2NhdGlvbiwganVtcFNpemUpOworICAgICAgICAgICAgICAgICAgICBwcm9ncmFtQ291
bnRlciArPSBnZXRKdW1wRGlzdGFuY2UobV9ieXRlY29kZSwganVtcExvY2F0aW9uLCBqdW1wU2l6
ZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyKQogICAgICAgICAgICAgICAg
ICAgICAgICAgdXJsSW5kZXhJc0FmdGVyRW5kT2ZTdHJpbmcgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICB1cmxJbmRleCsrOyAvLyBUaGlzIHJlcHJlc2VudHMgYW4gZWRnZSBpbiB0aGUgREZB
LgpAQCAtMjg1LDExICszNzUsMTEgQEAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyBE
RkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXQoY29uc3QgQ1N0cmluZyYKICAgICAgICAg
ICAgICAgICAgICAgZ290byBuZXh0REZBOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGNoYXIgY2hhcmFjdGVyID0gdXJsW3VybEluZGV4XTsKLSAgICAgICAgICAgICAgICBERkFC
eXRlY29kZUp1bXBTaXplIGp1bXBTaXplID0gZ2V0SnVtcFNpemUobV9ieXRlY29kZSwgbV9ieXRl
Y29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIpOwotICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0
ZXIgPj0gZ2V0Qml0czx1aW50OF90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9n
cmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSkKLSAgICAgICAgICAg
ICAgICAgICAgJiYgY2hhcmFjdGVyIDw9IGdldEJpdHM8dWludDhfdD4obV9ieXRlY29kZSwgbV9i
eXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVj
dGlvbikgKyBzaXplb2YodWludDhfdCkpKSB7CisgICAgICAgICAgICAgICAgREZBQnl0ZWNvZGVK
dW1wU2l6ZSBqdW1wU2l6ZSA9IGdldEp1bXBTaXplKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVy
KTsKKyAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyID49IGdldEJpdHM8dWludDhfdD4obV9i
eXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikp
CisgICAgICAgICAgICAgICAgICAgICYmIGNoYXJhY3RlciA8PSBnZXRCaXRzPHVpbnQ4X3Q+KG1f
Ynl0ZWNvZGUsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24p
ICsgc2l6ZW9mKHVpbnQ4X3QpKSkgewogICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBqdW1w
TG9jYXRpb24gPSBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9u
KSArIDIgKiBzaXplb2YodWludDhfdCk7Ci0gICAgICAgICAgICAgICAgICAgIHByb2dyYW1Db3Vu
dGVyICs9IGdldEp1bXBEaXN0YW5jZShtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBqdW1w
TG9jYXRpb24sIGp1bXBTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUNvdW50ZXIg
Kz0gZ2V0SnVtcERpc3RhbmNlKG1fYnl0ZWNvZGUsIGp1bXBMb2NhdGlvbiwganVtcFNpemUpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYXJhY3RlcikKICAgICAgICAgICAgICAgICAgICAg
ICAgIHVybEluZGV4SXNBZnRlckVuZE9mU3RyaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgdXJsSW5kZXgrKzsgLy8gVGhpcyByZXByZXNlbnRzIGFuIGVkZ2UgaW4gdGhlIERGQS4KQEAg
LTMwMywxMSArMzkzLDExIEBAIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgREZBQnl0
ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmCiAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gbmV4dERGQTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBj
aGFyIGNoYXJhY3RlciA9IHRvQVNDSUlMb3dlcih1cmxbdXJsSW5kZXhdKTsKLSAgICAgICAgICAg
ICAgICBERkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplID0gZ2V0SnVtcFNpemUobV9ieXRlY29k
ZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIpOwotICAgICAgICAgICAgICAgIGlm
IChjaGFyYWN0ZXIgPj0gZ2V0Qml0czx1aW50OF90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVu
Z3RoLCBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSkKLSAg
ICAgICAgICAgICAgICAgICAgJiYgY2hhcmFjdGVyIDw9IGdldEJpdHM8dWludDhfdD4obV9ieXRl
Y29kZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNv
ZGVJbnN0cnVjdGlvbikgKyBzaXplb2YodWludDhfdCkpKSB7CisgICAgICAgICAgICAgICAgREZB
Qnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IGdldEp1bXBTaXplKG1fYnl0ZWNvZGUsIHByb2dy
YW1Db3VudGVyKTsKKyAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyID49IGdldEJpdHM8dWlu
dDhfdD4obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbikpCisgICAgICAgICAgICAgICAgICAgICYmIGNoYXJhY3RlciA8PSBnZXRCaXRzPHVp
bnQ4X3Q+KG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb24pICsgc2l6ZW9mKHVpbnQ4X3QpKSkgewogICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBqdW1wTG9jYXRpb24gPSBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUlu
c3RydWN0aW9uKSArIDIgKiBzaXplb2YodWludDhfdCk7Ci0gICAgICAgICAgICAgICAgICAgIHBy
b2dyYW1Db3VudGVyICs9IGdldEp1bXBEaXN0YW5jZShtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVu
Z3RoLCBqdW1wTG9jYXRpb24sIGp1bXBTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3Jh
bUNvdW50ZXIgKz0gZ2V0SnVtcERpc3RhbmNlKG1fYnl0ZWNvZGUsIGp1bXBMb2NhdGlvbiwganVt
cFNpemUpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYXJhY3RlcikKICAgICAgICAgICAg
ICAgICAgICAgICAgIHVybEluZGV4SXNBZnRlckVuZE9mU3RyaW5nID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgdXJsSW5kZXgrKzsgLy8gVGhpcyByZXByZXNlbnRzIGFuIGVkZ2UgaW4gdGhl
IERGQS4KQEAgLTMyMSw4ICs0MTEsOCBAQCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25z
IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldChjb25zdCBDU3RyaW5nJgogICAgICAg
ICAgICAgICAgICAgICBnb3RvIG5leHRERkE7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgdWludDMyX3QganVtcExvY2F0aW9uID0gcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbik7Ci0gICAgICAgICAgICAgICAgREZBQnl0ZWNvZGVKdW1wU2l6
ZSBqdW1wU2l6ZSA9IGdldEp1bXBTaXplKG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHBy
b2dyYW1Db3VudGVyKTsKLSAgICAgICAgICAgICAgICBwcm9ncmFtQ291bnRlciArPSBnZXRKdW1w
RGlzdGFuY2UobV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwganVtcExvY2F0aW9uLCBqdW1w
U2l6ZSk7CisgICAgICAgICAgICAgICAgREZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IGdl
dEp1bXBTaXplKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKTsKKyAgICAgICAgICAgICAgICBw
cm9ncmFtQ291bnRlciArPSBnZXRKdW1wRGlzdGFuY2UobV9ieXRlY29kZSwganVtcExvY2F0aW9u
LCBqdW1wU2l6ZSk7CiAgICAgICAgICAgICAgICAgdXJsSW5kZXgrKzsgLy8gVGhpcyByZXByZXNl
bnRzIGFuIGVkZ2UgaW4gdGhlIERGQS4KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KQEAgLTM1Nyw4ICs0NDcsNiBAQCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25z
IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldChjb25zdCBDU3RyaW5nJgogICAgIHJl
dHVybiBhY3Rpb25zOwogfQogCi19IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwotICAg
IAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnMKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVy
cHJldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUlu
dGVycHJldGVyLmgKaW5kZXggMWNmM2I4YzlhYjIxYzYyODg3MWY0YzE0NmI1ZWI2ZWEyYmYwZDdk
NC4uNmIyYTFjZjJkMWJjYTQ0YjExZmM3NjYzOTRmZTRjNzA2NGExYzA3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJw
cmV0ZXIuaApAQCAtMzMsMzcgKzMzLDMwIEBACiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1uYW1l
c3BhY2UgQ29udGVudEV4dGVuc2lvbnMgeworbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgREZBQnl0ZWNvZGVJbnRlcnByZXRlciB7
CitjbGFzcyBERkFCeXRlY29kZUludGVycHJldGVyIHsKIHB1YmxpYzoKLSAgICBERkFCeXRlY29k
ZUludGVycHJldGVyKGNvbnN0IERGQUJ5dGVjb2RlKiBieXRlY29kZSwgdW5zaWduZWQgYnl0ZWNv
ZGVMZW5ndGgpCi0gICAgICAgIDogbV9ieXRlY29kZShieXRlY29kZSkKLSAgICAgICAgLCBtX2J5
dGVjb2RlTGVuZ3RoKGJ5dGVjb2RlTGVuZ3RoKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdHlw
ZWRlZiBIYXNoU2V0PHVpbnQ2NF90LCBEZWZhdWx0SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBBY3Rpb25zOwotICAgIAotICAgIEFj
dGlvbnMgaW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmLCB1aW50MTZfdCBmbGFncyk7Ci0gICAgQWN0
aW9ucyBpbnRlcnByZXRXaXRoQ29uZGl0aW9ucyhjb25zdCBDU3RyaW5nJiwgdWludDE2X3QgZmxh
Z3MsIGNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIGNvbmRpdGlvbkFjdGlv
bnMpOworICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIoU3Bhbjxjb25zdCB1aW50OF90PiBieXRl
Y29kZSkKKyAgICAgICAgOiBtX2J5dGVjb2RlKGJ5dGVjb2RlKSB7IH0KKworICAgIHVzaW5nIEFj
dGlvbnMgPSBIYXNoU2V0PHVpbnQ2NF90LCBEZWZhdWx0SGFzaDx1aW50NjRfdD4sIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PjsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIEFjdGlvbnMgaW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmLCBSZXNvdXJjZUZsYWdzKTsKKyAg
ICBBY3Rpb25zIGludGVycHJldFdpdGhDb25kaXRpb25zKGNvbnN0IENTdHJpbmcmLCBSZXNvdXJj
ZUZsYWdzLCBjb25zdCBBY3Rpb25zJiBjb25kaXRpb25BY3Rpb25zKTsKICAgICBBY3Rpb25zIGFj
dGlvbnNNYXRjaGluZ0V2ZXJ5dGhpbmcoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGludGVycHJl
dEFwcGVuZEFjdGlvbih1bnNpZ25lZCYgcHJvZ3JhbUNvdW50ZXIsIEFjdGlvbnMmLCBib29sIGlm
Q29uZGl0aW9uKTsKLSAgICB2b2lkIGludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbih1
bnNpZ25lZCYgcHJvZ3JhbUNvdW50ZXIsIHVpbnQxNl90IGZsYWdzLCBBY3Rpb25zJiwgYm9vbCBp
ZkNvbmRpdGlvbik7CisgICAgdm9pZCBpbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24o
dW5zaWduZWQmIHByb2dyYW1Db3VudGVyLCBSZXNvdXJjZUZsYWdzLCBBY3Rpb25zJiwgYm9vbCBp
ZkNvbmRpdGlvbik7CiAKICAgICB0ZW1wbGF0ZTxib29sIGNhc2VTZW5zaXRpdmU+CiAgICAgdm9p
ZCBpbnRlcnBldEp1bXBUYWJsZShjb25zdCBjaGFyKiB1cmwsIHVpbnQzMl90JiB1cmxJbmRleCwg
dWludDMyX3QmIHByb2dyYW1Db3VudGVyLCBib29sJiB1cmxJbmRleElzQWZ0ZXJFbmRPZlN0cmlu
Zyk7CiAKLSAgICBjb25zdCBERkFCeXRlY29kZSogbV9ieXRlY29kZTsKLSAgICBjb25zdCB1bnNp
Z25lZCBtX2J5dGVjb2RlTGVuZ3RoOworICAgIGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4gbV9i
eXRlY29kZTsKICAgICBjb25zdCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zKiBtX3Rv
cFVSTEFjdGlvbnMgeyBudWxscHRyIH07CiB9OwogCi19IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDc5MWJjOTMyYmRjYzk4
MTI2MDZmOGQ1NGI0Mzk5YzNiNjc5M2Q0ZjMuLmE0NmU2MDBhYmNhYWVjYjRlODY5ZDdlYzFlNzVm
NTViZmE2Njg2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTE1OSw3
ICsxNTksNyBAQCB2b2lkIFBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUmIGZy
YW1lLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgUmVmPEZvcgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QocmVwb3J0VVJMKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAg
IGlmIChwcm9jZXNzQ29udGVudFJ1bGVMaXN0c0ZvckxvYWQoZnJhbWUsIHJlcXVlc3QsIENvbnRl
bnRFeHRlbnNpb25zOjpSZXNvdXJjZVR5cGU6Ok90aGVyKSkKKyAgICBpZiAocHJvY2Vzc0NvbnRl
bnRSdWxlTGlzdHNGb3JMb2FkKGZyYW1lLCByZXF1ZXN0LCBDb250ZW50RXh0ZW5zaW9uczo6UmVz
b3VyY2VUeXBlOjpDU1BSZXBvcnQpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwCmluZGV4IDU0YjgxYmZiZWRiNWQ5
Nzk2NjI5NmRmOGI5NWNkZDU5YjQwNzc0NmMuLjJlZGVlYmQ0OTAxMzExM2I4ZDM2YjMwMWU2YzQ5
ODJlNGQxYmM2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5j
cHAKQEAgLTMyLDggKzMyLDcgQEAKICNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFj
ZSBDb250ZW50RXh0ZW5zaW9ucyB7CituYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnMgewogCiBPcHRpb25TZXQ8UmVzb3VyY2VUeXBlPiB0b1Jlc291cmNlVHlwZShDYWNoZWRSZXNv
dXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXF1ZXN0ZXIgcmVxdWVzdGVy
KQogewpAQCAtOTgsMTMgKzk3LDEzIEBAIHN0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PFJlc291cmNl
VHlwZT4+IHJlYWRSZXNvdXJjZVR5cGUoU3RyaW5nVmlldyBuYW1lKQogICAgIGlmIChuYW1lID09
ICJmb250IikKICAgICAgICAgcmV0dXJuIHsgUmVzb3VyY2VUeXBlOjpGb250IH07CiAgICAgaWYg
KG5hbWUgPT0gInJhdyIpCi0gICAgICAgIHJldHVybiB7eyBSZXNvdXJjZVR5cGU6OkZldGNoLCBS
ZXNvdXJjZVR5cGU6OldlYlNvY2tldCwgUmVzb3VyY2VUeXBlOjpPdGhlciwgUmVzb3VyY2VUeXBl
OjpQaW5nIH19OworICAgICAgICByZXR1cm4geyB7IFJlc291cmNlVHlwZTo6RmV0Y2gsIFJlc291
cmNlVHlwZTo6V2ViU29ja2V0LCBSZXNvdXJjZVR5cGU6Ok90aGVyLCBSZXNvdXJjZVR5cGU6OlBp
bmcgfSB9OwogICAgIGlmIChuYW1lID09ICJ3ZWJzb2NrZXQiKQogICAgICAgICByZXR1cm4geyBS
ZXNvdXJjZVR5cGU6OldlYlNvY2tldCB9OwogICAgIGlmIChuYW1lID09ICJmZXRjaCIpCiAgICAg
ICAgIHJldHVybiB7IFJlc291cmNlVHlwZTo6RmV0Y2ggfTsKICAgICBpZiAobmFtZSA9PSAib3Ro
ZXIiKQotICAgICAgICByZXR1cm4ge3sgUmVzb3VyY2VUeXBlOjpPdGhlciwgUmVzb3VyY2VUeXBl
OjpQaW5nIH19OworICAgICAgICByZXR1cm4geyB7IFJlc291cmNlVHlwZTo6T3RoZXIsIFJlc291
cmNlVHlwZTo6UGluZywgUmVzb3VyY2VUeXBlOjpDU1BSZXBvcnQgfSB9OwogICAgIGlmIChuYW1l
ID09ICJzdmctZG9jdW1lbnQiKQogICAgICAgICByZXR1cm4geyBSZXNvdXJjZVR5cGU6OlNWR0Rv
Y3VtZW50IH07CiAgICAgaWYgKG5hbWUgPT0gIm1lZGlhIikKQEAgLTExMyw2ICsxMTIsOCBAQCBz
dGQ6Om9wdGlvbmFsPE9wdGlvblNldDxSZXNvdXJjZVR5cGU+PiByZWFkUmVzb3VyY2VUeXBlKFN0
cmluZ1ZpZXcgbmFtZSkKICAgICAgICAgcmV0dXJuIHsgUmVzb3VyY2VUeXBlOjpQb3B1cCB9Owog
ICAgIGlmIChuYW1lID09ICJwaW5nIikKICAgICAgICAgcmV0dXJuIHsgUmVzb3VyY2VUeXBlOjpQ
aW5nIH07CisgICAgaWYgKG5hbWUgPT0gImNzcC1yZXBvcnQiKQorICAgICAgICByZXR1cm4geyBS
ZXNvdXJjZVR5cGU6OkNTUFJlcG9ydCB9OwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
QEAgLTE0OSw3ICsxNTAsNiBAQCBSZXNvdXJjZUZsYWdzIFJlc291cmNlTG9hZEluZm86OmdldFJl
c291cmNlRmxhZ3MoKSBjb25zdAogICAgIHJldHVybiBmbGFnczsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UgQ29udGVudEV4dGVuc2lvbnMKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKaW5k
ZXggZTA4ZWI4MmQwNTBkN2U3ZTdiNmU5MDI1ZjBlNGRlZTNlZTdjZmZkNC4uYTlhYzA3YmU5YmIy
OWEzYmJiOWY3YWQ1YWZjNmJlMzc4OGE3MWQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkSW5mby5oCkBAIC0zMSwxMCArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25T
ZXQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVz
cGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CituYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnMgewogCi1lbnVtIGNsYXNzIFJlc291cmNlVHlwZSA6IHVpbnQxNl90IHsKK2VudW0gY2xh
c3MgUmVzb3VyY2VUeXBlIDogdWludDMyX3QgewogICAgIERvY3VtZW50ID0gMHgwMDAxLAogICAg
IEltYWdlID0gMHgwMDAyLAogICAgIFN0eWxlU2hlZXQgPSAweDAwMDQsCkBAIC00NywzNiArNDYs
MzcgQEAgZW51bSBjbGFzcyBSZXNvdXJjZVR5cGUgOiB1aW50MTZfdCB7CiAgICAgRmV0Y2ggPSAw
eDAyMDAsCiAgICAgV2ViU29ja2V0ID0gMHgwNDAwLAogICAgIE90aGVyID0gMHgwODAwLAorICAg
IENTUFJlcG9ydCA9IDB4MTAwMDAsCiB9OwotY29uc3QgdWludDE2X3QgUmVzb3VyY2VUeXBlTWFz
ayA9IDB4MEZGRjsKK3N0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgUmVzb3VyY2VUeXBlTWFzayA9
IDB4MTBGRkY7CiAKLWVudW0gY2xhc3MgTG9hZFR5cGUgOiB1aW50MTZfdCB7CitlbnVtIGNsYXNz
IExvYWRUeXBlIDogdWludDMyX3QgewogICAgIEZpcnN0UGFydHkgPSAweDEwMDAsCiAgICAgVGhp
cmRQYXJ0eSA9IDB4MjAwMCwKIH07Ci1jb25zdCB1aW50MTZfdCBMb2FkVHlwZU1hc2sgPSAweDMw
MDA7CitzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IExvYWRUeXBlTWFzayA9IDB4MzAwMDsKIAot
ZW51bSBjbGFzcyBMb2FkQ29udGV4dCA6IHVpbnQxNl90IHsKK2VudW0gY2xhc3MgTG9hZENvbnRl
eHQgOiB1aW50MzJfdCB7CiAgICAgVG9wRnJhbWUgPSAweDQwMDAsCiAgICAgQ2hpbGRGcmFtZSA9
IDB4ODAwMCwKIH07Ci1jb25zdCB1aW50MTZfdCBMb2FkQ29udGV4dE1hc2sgPSAweEMwMDA7Citz
dGF0aWMgY29uc3RleHByIHVpbnQzMl90IExvYWRDb250ZXh0TWFzayA9IDB4QzAwMDsKIAotc3Rh
dGljX2Fzc2VydCghKFJlc291cmNlVHlwZU1hc2sgJiBMb2FkVHlwZU1hc2spLCAiUmVzb3VyY2VU
eXBlTWFzayBhbmQgTG9hZFR5cGVNYXNrIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgYmVj
YXVzZSB0aGV5IGFyZSBzdG9yZWQgaW4gdGhlIHNhbWUgdWludDE2X3QiKTsKLXN0YXRpY19hc3Nl
cnQoIShSZXNvdXJjZVR5cGVNYXNrICYgTG9hZENvbnRleHRNYXNrKSwgIlJlc291cmNlVHlwZU1h
c2sgYW5kIExvYWRDb250ZXh0TWFzayBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGJlY2F1
c2UgdGhleSBhcmUgc3RvcmVkIGluIHRoZSBzYW1lIHVpbnQxNl90Iik7Ci1zdGF0aWNfYXNzZXJ0
KCEoTG9hZENvbnRleHRNYXNrICYgTG9hZFR5cGVNYXNrKSwgIkxvYWRDb250ZXh0TWFzayBhbmQg
TG9hZFR5cGVNYXNrIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgYmVjYXVzZSB0aGV5IGFy
ZSBzdG9yZWQgaW4gdGhlIHNhbWUgdWludDE2X3QiKTsKK3N0YXRpY19hc3NlcnQoIShSZXNvdXJj
ZVR5cGVNYXNrICYgTG9hZFR5cGVNYXNrKSwgIlJlc291cmNlVHlwZU1hc2sgYW5kIExvYWRUeXBl
TWFzayBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGJlY2F1c2UgdGhleSBhcmUgc3RvcmVk
IGluIHRoZSBzYW1lIHVpbnQzMl90Iik7CitzdGF0aWNfYXNzZXJ0KCEoUmVzb3VyY2VUeXBlTWFz
ayAmIExvYWRDb250ZXh0TWFzayksICJSZXNvdXJjZVR5cGVNYXNrIGFuZCBMb2FkQ29udGV4dE1h
c2sgc2hvdWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBiZWNhdXNlIHRoZXkgYXJlIHN0b3JlZCBp
biB0aGUgc2FtZSB1aW50MzJfdCIpOworc3RhdGljX2Fzc2VydCghKExvYWRDb250ZXh0TWFzayAm
IExvYWRUeXBlTWFzayksICJMb2FkQ29udGV4dE1hc2sgYW5kIExvYWRUeXBlTWFzayBzaG91bGQg
YmUgbXV0dWFsbHkgZXhjbHVzaXZlIGJlY2F1c2UgdGhleSBhcmUgc3RvcmVkIGluIHRoZSBzYW1l
IHVpbnQzMl90Iik7CiAKLXR5cGVkZWYgdWludDE2X3QgUmVzb3VyY2VGbGFnczsKK3VzaW5nIFJl
c291cmNlRmxhZ3MgPSB1aW50MzJfdDsKIAogLy8gVGhlIGZpcnN0IDMyIGJpdHMgb2YgYSB1aW50
NjRfdCBhY3Rpb24gYXJlIHVzZWQgZm9yIHRoZSBhY3Rpb24gbG9jYXRpb24uCi0vLyBUaGUgbmV4
dCAxNiBiaXRzIGFyZSB1c2VkIGZvciB0aGUgZmxhZ3MgKFJlc291cmNlVHlwZSBhbmQgTG9hZFR5
cGUpLgorLy8gVGhlIG5leHQgMjQgYml0cyBhcmUgdXNlZCBmb3IgdGhlIGZsYWdzIChSZXNvdXJj
ZVR5cGUgYW5kIExvYWRUeXBlKS4KIC8vIFRoZSBuZXh0IGJpdCBpcyB1c2VkIHRvIG1hcmsgYWN0
aW9ucyB0aGF0IGFyZSBmcm9tIGEgcnVsZSB3aXRoIGFuIGlmLWRvbWFpbi4KIC8vICAgICBBY3Rp
b25zIGZyb20gcnVsZXMgd2l0aCB1bmxlc3MtZG9tYWluIGNvbmRpdGlvbnMgYXJlIGRpc3Rpbmd1
aXNoZWQgZnJvbQogLy8gICAgIHJ1bGVzIHdpdGggaWYtZG9tYWluIGNvbmRpdGlvbnMgYnkgbm90
IGhhdmluZyB0aGlzIGJpdCBzZXQuCiAvLyAgICAgQWN0aW9ucyBmcm9tIHJ1bGVzIHdpdGggbm8g
Y29uZGl0aW9ucyBhcmUgcHV0IGluIHRoZSBERkEgd2l0aG91dCBjb25kaXRpb25zLgogLy8gVGhl
IHZhbHVlcyAtMSBhbmQgLTIgYXJlIHVzZWQgZm9yIHJlbW92ZWQgYW5kIGVtcHR5IHZhbHVlcyBp
biBIYXNoVGFibGVzLgotY29uc3QgdWludDY0X3QgQWN0aW9uRmxhZ01hc2sgPSAweDAwMDBGRkZG
MDAwMDAwMDA7Ci1jb25zdCB1aW50NjRfdCBJZkNvbmRpdGlvbkZsYWcgPSAweDAwMDEwMDAwMDAw
MDAwMDA7CitzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IEFjdGlvbkZsYWdNYXNrID0gMHgwMEZG
RkZGRjAwMDAwMDAwOworc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBJZkNvbmRpdGlvbkZsYWcg
PSAweDAxMDAwMDAwMDAwMDAwMDA7CiAKIE9wdGlvblNldDxSZXNvdXJjZVR5cGU+IHRvUmVzb3Vy
Y2VUeXBlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXF1ZXN0
ZXIpOwogc3RkOjpvcHRpb25hbDxPcHRpb25TZXQ8UmVzb3VyY2VUeXBlPj4gcmVhZFJlc291cmNl
VHlwZShTdHJpbmdWaWV3KTsKQEAgLTkzLDcgKzkzLDYgQEAgc3RydWN0IFJlc291cmNlTG9hZElu
Zm8gewogICAgIFJlc291cmNlRmxhZ3MgZ2V0UmVzb3VyY2VGbGFncygpIGNvbnN0OwogfTsKIAot
fSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhlOTBlODcx
N2FlNjRiZDQxYmE4ZjdlNDU2OTAxMjYxNmU1OTdjODEuLjdlMDI4ZjE4ZmEyODBhMjBhZjNkYzU3
NjcwYzNkMmJmYmI3OGYyMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMS0zMCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBjc3AtcmVwb3J0IHJl
c291cmNlIHR5cGUgdG8gV0tDb250ZW50UnVsZUxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NQorICAgICAgICA8cmRhcjovLzcxODY5ODkz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmNvbXBhcmVDb250ZW50cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29u
dGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjEtMTEt
MjkgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJr
aXRjb3JlcHldIERlbGV0ZSB1bnVzZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNw
cAppbmRleCBiYzU0ODRmM2YwNmM1YThiMTg2MjJhYmZlYTc4MDA1YmNiOWY4ZjdjLi4xYjQzZGM4
NjkyY2JjNjQ5NzFjMTdkZjA0M2E5ODk0OTFhZmI1M2JkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTU0
MCw3ICs1NDAsNyBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIERpc3Rpbmd1aXNoYWJs
ZVByZWZpeEFyZU5vdE1lcmdlZCkKICAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJodHRwOi8vZm9vLm9yZ2cvIiksIHsgdmFyaWFudEluZGV4PENvbnRlbnRFeHRl
bnNpb25zOjpCbG9ja0xvYWRBY3Rpb24+IH0pOwogfQogCi1zdGF0aWMgdm9pZCBjb21wYXJlQ29u
dGVudHMoY29uc3QgQ29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFj
dGlvbnMmIGEsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGIpCitzdGF0aWMgdm9pZCBjb21wYXJl
Q29udGVudHMoY29uc3QgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyYgYSwgY29uc3Qg
VmVjdG9yPHVpbnQ2NF90PiYgYikKIHsKICAgICBFWFBFQ1RfRVEoYS5zaXplKCksIGIuc2l6ZSgp
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYi5zaXplKCk7ICsraSkKQEAgLTU2Miw3
ICs1NjIsNyBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFNlYXJjaFN1ZmZpeGVzV2l0
aElkZW50aWNhbEFjdGlvbkFyZU1lcmdlZCkKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6
OkRGQUJ5dGVjb2RlPiBieXRlY29kZTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNv
ZGVDb21waWxlciBjb21waWxlcihkZmEsIGJ5dGVjb2RlKTsKICAgICBjb21waWxlci5jb21waWxl
KCk7Ci0gICAgQ29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgaW50ZXJw
cmV0ZXIoYnl0ZWNvZGUuZGF0YSgpLCBieXRlY29kZS5zaXplKCkpOworICAgIERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXIgaW50ZXJwcmV0ZXIoeyBieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUo
KSB9KTsKICAgICBjb21wYXJlQ29udGVudHMoaW50ZXJwcmV0ZXIuaW50ZXJwcmV0KCJmb28ub3Jn
IiwgMCksIHsgMCB9KTsKICAgICBjb21wYXJlQ29udGVudHMoaW50ZXJwcmV0ZXIuaW50ZXJwcmV0
KCJiYS5vcmciLCAwKSwgeyAwIH0pOwogICAgIGNvbXBhcmVDb250ZW50cyhpbnRlcnByZXRlci5p
bnRlcnByZXQoImJhci5vcmciLCAwKSwgeyB9KTsKQEAgLTU4OCw3ICs1ODgsNyBAQCBURVNUX0Yo
Q29udGVudEV4dGVuc2lvblRlc3QsIFNlYXJjaFN1ZmZpeGVzV2l0aERpc3Rpbmd1aXNoYWJsZUFj
dGlvbkFyZU5vdE1lcmdlZAogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNv
ZGU+IGJ5dGVjb2RlOwogICAgIENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVy
IGNvbXBpbGVyKGRmYSwgYnl0ZWNvZGUpOwogICAgIGNvbXBpbGVyLmNvbXBpbGUoKTsKLSAgICBD
b250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcihieXRl
Y29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUoKSk7CisgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRl
ciBpbnRlcnByZXRlcih7IGJ5dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpIH0pOwogICAg
IGNvbXBhcmVDb250ZW50cyhpbnRlcnByZXRlci5pbnRlcnByZXQoImZvby5vcmciLCAwKSwgeyAw
IH0pOwogICAgIGNvbXBhcmVDb250ZW50cyhpbnRlcnByZXRlci5pbnRlcnByZXQoImJhLm9yZyIs
IDApLCB7IDEgfSk7CiAgICAgY29tcGFyZUNvbnRlbnRzKGludGVycHJldGVyLmludGVycHJldCgi
YmFyLm9yZyIsIDApLCB7IH0pOwpAQCAtOTcxLDkgKzk3MSw5IEBAIFRFU1RfRihDb250ZW50RXh0
ZW5zaW9uVGVzdCwgU3RyaW5nQ29tYmluaW5nKQogICAgIEFTU0VSVF9FUShzZXF1ZW5jZUluc3Rh
bmNlcyhkYXRhLmFjdGlvbnMsICJHR0ciKSwgMSk7CiAKICAgICBBU1NFUlRfRVEoZGF0YS5hY3Rp
b25zLnNpemUoKSwgNzh1KTsKLSAgICBBU1NFUlRfRVEoZGF0YS5maWx0ZXJzV2l0aG91dENvbmRp
dGlvbnMuc2l6ZSgpLCAgMzEzdSk7Ci0gICAgQVNTRVJUX0VRKGRhdGEuZmlsdGVyc1dpdGhDb25k
aXRpb25zLnNpemUoKSwgIDV1KTsKLSAgICBBU1NFUlRfRVEoZGF0YS50b3BVUkxGaWx0ZXJzLnNp
emUoKSwgIDV1KTsKKyAgICBBU1NFUlRfRVEoZGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnMu
c2l6ZSgpLCAyODh1KTsKKyAgICBBU1NFUlRfRVEoZGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnMu
c2l6ZSgpLCA1dSk7CisgICAgQVNTRVJUX0VRKGRhdGEudG9wVVJMRmlsdGVycy5zaXplKCksIDV1
KTsKICAgICBBU1NFUlRfRkFMU0UoZGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4pOwog
CiAgICAgYXV0byBleHRlbnNpb25XaXRoRmxhZ3MgPSBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4
dGVuc2lvbjo6Y3JlYXRlKCJbIgpAQCAtMTEwOCw3ICsxMTA4LDcgQEAgVEVTVF9GKENvbnRlbnRF
eHRlbnNpb25UZXN0LCBVc2VsZXNzVGVybXNNYXRjaGluZ0V2ZXJ5dGhpbmdBcmVFbGltaW5hdGVk
KQogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+IGJ5dGVjb2RlOwog
ICAgIENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUNvbXBpbGVyIGNvbXBpbGVyKGRmYSwg
Ynl0ZWNvZGUpOwogICAgIGNvbXBpbGVyLmNvbXBpbGUoKTsKLSAgICBDb250ZW50RXh0ZW5zaW9u
czo6REZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcihieXRlY29kZS5kYXRhKCksIGJ5
dGVjb2RlLnNpemUoKSk7CisgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcih7
IGJ5dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpIH0pOwogICAgIGNvbXBhcmVDb250ZW50
cyhpbnRlcnByZXRlci5pbnRlcnByZXQoImViIiwgMCksIHsgfSk7CiAgICAgY29tcGFyZUNvbnRl
bnRzKGludGVycHJldGVyLmludGVycHJldCgid2UiLCAwKSwgeyB9KTsKICAgICBjb21wYXJlQ29u
dGVudHMoaW50ZXJwcmV0ZXIuaW50ZXJwcmV0KCJ3ZWViIiwgMCksIHsgfSk7CkBAIC0xMjY3LDcg
KzEyNjcsNyBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIExhcmdlSnVtcHMpCiAgICAg
ICAgIGNvbWJpbmVkQnl0ZWNvZGUuYXBwZW5kVmVjdG9yKGJ5dGVjb2RlKTsKICAgICB9CiAgICAg
Ci0gICAgQ29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgaW50ZXJwcmV0
ZXIoJmNvbWJpbmVkQnl0ZWNvZGVbMF0sIGNvbWJpbmVkQnl0ZWNvZGUuc2l6ZSgpKTsKKyAgICBE
RkFCeXRlY29kZUludGVycHJldGVyIGludGVycHJldGVyKHsgY29tYmluZWRCeXRlY29kZS5kYXRh
KCksIGNvbWJpbmVkQnl0ZWNvZGUuc2l6ZSgpIH0pOwogICAgIAogICAgIHBhdHRlcm5JZCA9IDA7
CiAgICAgZm9yIChjaGFyIGMxID0gJ0EnOyBjMSA8PSAnWic7ICsrYzEpIHsKQEAgLTE3MDgsNyAr
MTcwOCw3IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgU3BsaXR0aW5nTGFyZ2VORkFz
KQogICAgICAgICAgICAgY29tYmluZWRCeXRlY29kZS5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNv
ZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcigmY29tYmluZWRCeXRlY29kZVswXSwgY29tYmluZWRC
eXRlY29kZS5zaXplKCkpOworICAgICAgICBERkFCeXRlY29kZUludGVycHJldGVyIGludGVycHJl
dGVyKHsgY29tYmluZWRCeXRlY29kZS5kYXRhKCksIGNvbWJpbmVkQnl0ZWNvZGUuc2l6ZSgpIH0p
OwogICAgICAgICAKICAgICAgICAgRVhQRUNUX0VRKGludGVycHJldGVyLmludGVycHJldCgiQUJC
QlgiLCAwKS5zaXplKCksIDF1bGwpOwogICAgICAgICBFWFBFQ1RfRVEoaW50ZXJwcmV0ZXIuaW50
ZXJwcmV0KCJBQ0NDWCIsIDApLnNpemUoKSwgMXVsbCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0
Tm90aWZpY2F0aW9uLm1tCmluZGV4IGI5M2EyOTdjZTI5NmMyNjJkMjI0MTc1MjMzMWFmY2E0NWVh
MzFmMmUuLmVkMzIxNzY3N2RjNTU5NzA2MDVjNDYxYmM2OWJiN2VhMGFkNDI0NTUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0
Tm90aWZpY2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uLm1tCkBAIC00MTYsNiArNDE2LDI2IEBAIFRF
U1QoQ29udGVudFJ1bGVMaXN0LCBUb3BGcmFtZUNoaWxkRnJhbWUpCiAgICAgRVhQRUNUX1dLX1NU
UkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sICJpZnJhbWUgZmV0Y2hlZCBzdWNjZXNz
ZnVsbHkiKTsKIH0KIAorVEVTVChDb250ZW50UnVsZUxpc3QsIENTUFJlcG9ydCkKK3sKKyAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7IHsgIi8iLCB7IHsKKyAgICAgICAgeyAi
Q29udGVudC1TZWN1cml0eS1Qb2xpY3kiLCAiZnJhbWUtc3JjICdub25lJzsgcmVwb3J0LXVyaSBy
ZXNvdXJjZXMvc2F2ZS1yZXBvcnQucHkiIH0KKyAgICB9LCAiPGlmcmFtZSBzcmM9XCJodHRwczov
L3dlYmtpdC5vcmcvXCI+PC9pZnJhbWU+IiB9IH0gfSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZENvbnRlbnRSdWxlTGlzdDptYWtlQ29u
dGVudFJ1bGVMaXN0KEAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dl
clwiOntcInVybC1maWx0ZXJcIjpcIi4qXCIsXCJyZXNvdXJjZS10eXBlXCI6W1wiY3NwLXJlcG9y
dFwiXX19XSIpLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW0NvbnRlbnRSdWxlTGlz
dE5vdGlmaWNhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVy
LnJlcXVlc3QoKV07CisgICAgd2hpbGUgKG5vdGlmaWNhdGlvbkxpc3QuaXNFbXB0eSgpKQorICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOworCisgICAgVVJMIGV4cGVj
dGVkVVJMID0gc2VydmVyLnJlcXVlc3QoKS5VUkw7CisgICAgZXhwZWN0ZWRVUkwuc2V0UGF0aCgi
L3Jlc291cmNlcy9zYXZlLXJlcG9ydC5weSIpOworICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZFVS
TC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBub3RpZmljYXRpb25MaXN0LmZpcnN0KCkudXJsLnV0
ZjgoKS5kYXRhKCkpOworfQorCiBURVNUKENvbnRlbnRSdWxlTGlzdCwgTGVnYWN5VmVyc2lvbkFu
ZE5hbWUpCiB7CiAgICAgTlNTdHJpbmcgKmRpcmVjdG9yeSA9IFtOU1RlbXBvcmFyeURpcmVjdG9y
eSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRSdWxlTGlzdFRlc3RE
aXJlY3RvcnkiXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCmluZGV4IDBiODVjZWNj
MWUzZGQ2Y2E0YjZjOGFhMWZiMjUzMWZjNzY5N2E3OWQuLmI5Mjg1MjA2NjQyOGY5ZDQzZjIwN2E3
NWRjODUwZmNmNzIxNDJiMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQpAQCAt
MjUyLDcgKzI1Miw3IEBAIFRFU1RfRihXS0NvbnRlbnRSdWxlTGlzdFN0b3JlVGVzdCwgTm9uRGVm
YXVsdFN0b3JlKQogCiAgICAgTlNEYXRhICpkYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRz
T2ZVUkw6W3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZpbGVOYW1lXV07CiAg
ICAgRVhQRUNUX05PVF9OVUxMKGRhdGEpOwotICAgIEVYUEVDVF9FUShkYXRhLmxlbmd0aCwgMjI4
dSk7CisgICAgRVhQRUNUX0VRKGRhdGEubGVuZ3RoLCAyMjV1KTsKICAgICAKICAgICBfX2Jsb2Nr
IGJvb2wgZG9uZUNoZWNraW5nU291cmNlID0gZmFsc2U7CiAgICAgW3N0b3JlIF9nZXRDb250ZW50
UnVsZUxpc3RTb3VyY2VGb3JJZGVudGlmaWVyOmlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6
XihOU1N0cmluZyAqc291cmNlKSB7Cg==
</data>
<flag name="review"
          id="470816"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>