<?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>189457</bug_id>
          
          <creation_ts>2018-09-08 18:50:03 -0700</creation_ts>
          <short_desc>[Cocoa] Use more bridging casts in TestWebKitAPI</short_desc>
          <delta_ts>2018-09-08 21:25:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>lforschler</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1457962</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-08 18:50:03 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457979</commentid>
    <comment_count>1</comment_count>
      <attachid>349275</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-08 20:26:18 -0700</bug_when>
    <thetext>Created attachment 349275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457987</commentid>
    <comment_count>2</comment_count>
      <attachid>349275</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-09-08 20:42:26 -0700</bug_when>
    <thetext>Comment on attachment 349275
Patch

Thanks. These look good. I am working on a patch that turns on ARC for TestWebKitAPI and this should have a good overlap with the changes needed for that. Under ARC these get checked a little bit more so it might catch some mistakes that are harmless in non-ARC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457997</commentid>
    <comment_count>3</comment_count>
      <attachid>349275</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-08 21:24:39 -0700</bug_when>
    <thetext>Comment on attachment 349275
Patch

Clearing flags on attachment: 349275

Committed r235835: &lt;https://trac.webkit.org/changeset/235835&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457998</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-08 21:24:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457999</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-08 21:25:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/44269797&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349275</attachid>
            <date>2018-09-08 20:26:18 -0700</date>
            <delta_ts>2018-09-08 21:24:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189457-20180908202617.patch</filename>
            <type>text/plain</type>
            <size>62787</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Nzc1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDUxYTQwMmQwODA3MTZlNmI5ZGUzYWFkZGRmNWNjNGY4
M2QxMjQyNi4uZDcxZWFjZTE5M2YxN2JkNGZjNjUwNjFmNGE2Mzc1NmFkOGQ0MDk4NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYz
IEBACisyMDE4LTA5LTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gVXNlIG1vcmUgYnJpZGdpbmcgY2FzdHMgaW4gVGVzdFdlYktpdEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NDU3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBz
b21lIGJyaWRnaW5nIGNhc3RzIHRvIFRlc3RXZWJLaXRBUEksIHdoZW4gY29udmVydGluZyBiZXR3
ZWVlbiBzZXZlcmFsIGNvbW1vbiB0eXBlcyBvZiBvYmplY3RzLCBpbmNsdWRpbmc6CisgICAgICAg
IENGU3RyaW5nUmVmIDw9PiBOU1N0cmluZworICAgICAgICBDRlVSTFJlZiA8PT4gTlNVUkwKKyAg
ICAgICAgV0tQcmVmZXJlbmNlcyA8PT4gV0tQcmVmZXJlbmNlc1JlZgorICAgICAgICBDRkRhdGFS
ZWYgPD0+IE5TRGF0YQorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbToKKyAg
ICAgICAgKHJlYWRIVE1MRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoY3JlYXRlV2ViVmlld1dp
dGhDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQ29weVVSTC5tbToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdXaXRo
Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0RyYWdBbmREcm9wVGVzdHMubW06CisgICAgICAgIChURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSFRNTC5tbToKKyAg
ICAgICAgKHdyaXRlSFRNTFRvUGFzdGVib2FyZCk6CisgICAgICAgIChjcmVhdGVXZWJWaWV3V2l0
aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29udGVudC5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFVwV2ViVmlldyk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Bhc3RlUlRGRC5tbToKKyAgICAgICAgKHdyaXRlUlRGVG9QYXN0ZWJvYXJkKToKKyAgICAgICAg
KHdyaXRlUlRGRFRvUGFzdGVib2FyZCk6CisgICAgICAgIChjcmVhdGVXZWJWaWV3V2l0aEN1c3Rv
bVBhc3RlYm9hcmREYXRhRW5hYmxlZCk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlV2ViQXJjaGl2ZS5tbToKKyAgICAgICAg
KGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc3RvcmVTZXNzaW9uU3RhdGVXaXRo
b3V0TmF2aWdhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06
CisgICAgICAgICh3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9tYWMvQWNjZXNzaW5nUGFzdGVkSW1hZ2UubW06
CisgICAgICAgICh3cml0ZVJURkRUb1Bhc3RlYm9hcmQpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRU
ZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW06CisgICAgICAgIChjaGVj
a1JpY2hUZXh0VHlwZVByZWNlZGVzUGxhaW5UZXh0VHlwZSk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFVwVGVzdFdlYlZpZXdGb3JE
YXRhVHJhbnNmZXJJdGVtcyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvVUlQ
YXN0ZWJvYXJkVGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVV0aWxpdGllc01hYy5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpVUkxGb3JOb25FeGlzdGVudFJlc291cmNlKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlV0aWw6Ok1JTUVUeXBlRm9yV0tVUkxSZXNwb25zZSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9tYWMvV2ViS2l0QWdub3N0aWNUZXN0Lm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6V2ViS2l0QWdub3N0aWNUZXN0Ojpsb2FkVVJMKToKKwogMjAxOC0wOS0wNiAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIEFkZCBzdXBw
b3J0IGZvciBtaW4vbWF4LWhlaWdodCBwZXJjZW50YWdlIHZhbHVlcy4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmlu
ZGV4IDM5OWI5NWNiMzQzOThhYmZjMmMwMTFjNGMwZGZlOTY3MjFiNDFkN2QuLjE4YzA2NzIwNTUx
ZjFlMzVjNDE5OWMzMjlmODc5NWZiMDAwYTIxNWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtNTYsMTEg
KzU2LDExIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAg
ICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFw
cGVuZCgoQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2Jy
aWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CiAKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgoQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBb
IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVO
U0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbQppbmRleCA2MzFmYmVhMjM3MDQxMWVhNjQ1NDVj
ZjEzZWVkMzk1MzUwMTMyM2JlLi41NTZlM2M4MGViMTg3NDFhYmFiMzg2MzBkODc2OWJkNDMxM2U3
Zjg4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Nv
cHlIVE1MLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29w
eUhUTUwubW0KQEAgLTUxLDcgKzUxLDcgQEAgTlNTdHJpbmcgKnJlYWRIVE1MRnJvbVBhc3RlYm9h
cmQoKQogI2Vsc2UKIE5TU3RyaW5nICpyZWFkSFRNTEZyb21QYXN0ZWJvYXJkKCkKIHsKLSAgICBp
ZCB2YWx1ZSA9IFtbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSB2YWx1ZUZvclBhc3Rl
Ym9hcmRUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVIVE1MXTsKKyAgICBpZCB2YWx1ZSA9IFtbVUlQ
YXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSB2YWx1ZUZvclBhc3RlYm9hcmRUeXBlOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MXTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xh
c3M6W05TRGF0YSBjbGFzc11dKQogICAgICAgICB2YWx1ZSA9IFtbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aERhdGE6KE5TRGF0YSAqKXZhbHVlIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XSBhdXRvcmVsZWFzZV07CiAgICAgQVNTRVJUKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBjbGFzc11dKTsKQEAgLTYyLDcgKzYyLDcgQEAgTlNTdHJpbmcgKnJlYWRIVE1MRnJvbVBhc3Rl
Ym9hcmQoKQogc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBjcmVhdGVXZWJWaWV3V2l0
aEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA0MDAsIDQwMCldKTsKLSAgICBhdXRvIHByZWZlcmVuY2VzID0gKFdLUHJlZmVyZW5jZXNSZWYp
W1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByZWZlcmVuY2VzXTsKKyAgICBhdXRvIHByZWZlcmVu
Y2VzID0gKF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25d
IHByZWZlcmVuY2VzXTsKICAgICBXS1ByZWZlcmVuY2VzU2V0RGF0YVRyYW5zZmVySXRlbXNFbmFi
bGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0Q3VzdG9tUGFzdGVi
b2FyZERhdGFFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKICAgICByZXR1cm4gd2ViVmlldzsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weVVS
TC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weVVSTC5tbQpp
bmRleCA2YWNkZWUzYzQzNzY2NDE3MWQ2NDY0NzMyZGJiNmU3N2Y5MjQ5OGZiLi42MThmMDk5ZDBm
MzIyOWQ0ZWFiNjYyNzllMmI4MmNkN2VjYzU4MmU0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlVUkwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5VVJMLm1tCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJv
YXJkRGF0YUVuYWJsZWQoKQogI2VuZGlmCiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwg
NDAwKV0pOwotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoV0tQcmVmZXJlbmNlc1JlZilbW3dlYlZp
ZXcgY29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAo
X19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVy
ZW5jZXNdOwogICAgIFdLUHJlZmVyZW5jZXNTZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQocHJl
ZmVyZW5jZXMsIHRydWUpOwogICAgIFdLUHJlZmVyZW5jZXNTZXRDdXN0b21QYXN0ZWJvYXJkRGF0
YUVuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwogICAgIHJldHVybiB3ZWJWaWV3OwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EcmFnQW5kRHJvcFRl
c3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EcmFnQW5kRHJv
cFRlc3RzLm1tCmluZGV4IDIwNjcwOWVmYjA0NDNlNTExNWRiMTU0OWViYzcyZDNiOTkwOGYwNDAu
LjU1MDAyNjMwMmYyZWVmYmQ1MGVjYWIxMGNjNjlhMWM4MGNiOGExNDIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRHJhZ0FuZERyb3BUZXN0cy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RyYWdBbmREcm9wVGVz
dHMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHBvc2VNdWx0
aXBsZVVSTHNJbkRhdGFUcmFuc2ZlcikKIHsKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMo
W1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3RnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBhdXRvIHdlYlZpZXcgPSBbc2ltdWxhdG9yIHdl
YlZpZXddOwotICAgIFdLUHJlZmVyZW5jZXNTZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQo
KFdLUHJlZmVyZW5jZXNSZWYpW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJlZmVyZW5jZXMsIHRy
dWUpOworICAgIFdLUHJlZmVyZW5jZXNTZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoKF9f
YnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJlZmVyZW5j
ZXMsIHRydWUpOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpA
IkRhdGFUcmFuc2ZlciJdOwogCiAgICAgTlNTdHJpbmcgKnN0cmluZ0RhdGEgPSBAIkhlbGxvIHdv
cmxkIjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UGFzdGVIVE1MLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0
ZUhUTUwubW0KaW5kZXggN2Y4MGZhYjA1YmY3ZTE1YTA3ODNiNDk2ZTk5Y2QyZjk5M2UxZWMyMy4u
ZjRmNThmMGZhY2VkYzk5OGVmZjkzMGQzODhmOTlhYTFkODhjZGY1MiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUhUTUwubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUhUTUwubW0KQEAgLTUzLDE0
ICs1MywxNCBAQCB2b2lkIHdyaXRlSFRNTFRvUGFzdGVib2FyZChOU1N0cmluZyAqaHRtbCkKICNl
bHNlCiB2b2lkIHdyaXRlSFRNTFRvUGFzdGVib2FyZChOU1N0cmluZyAqaHRtbCkKIHsKLSAgICBb
W1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gc2V0SXRlbXM6QFtAeyAoTlNTdHJpbmcg
KilrVVRUeXBlSFRNTCA6IGh0bWx9XV07CisgICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3Rl
Ym9hcmRdIHNldEl0ZW1zOkBbQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUwgOiBo
dG1sfV1dOwogfQogI2VuZGlmCiAKIHN0YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gY3Jl
YXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNldHRpbmcoYm9vbCBlbmFibGVkKQog
ewogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7Ci0gICAgYXV0byBwcmVmZXJl
bmNlcyA9IChXS1ByZWZlcmVuY2VzUmVmKVtbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcmVmZXJl
bmNlc107CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVm
KVtbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcmVmZXJlbmNlc107CiAgICAgV0tQcmVmZXJlbmNl
c1NldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CiAgICAgV0tQ
cmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZChwcmVmZXJlbmNlcywgZW5h
YmxlZCk7CiAgICAgcmV0dXJuIHdlYlZpZXc7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0KaW5kZXggZDg5ZWM5NGI0NjgzNGQ3NjM4
NTM1Y2YzYmM1YWJiMmRlOGI4YTIzYy4uZTBhNWE0NWMyZDAwY2U1OTdiMTNmNzUwNDhjYjg3OTNk
NDVkYmQyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9QYXN0ZUltYWdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUGFzdGVJbWFnZS5tbQpAQCAtNzcsNyArNzcsNyBAQCBURVNUKFBhc3RlSW1hZ2UsIFBhc3Rl
R0lGSW1hZ2UpCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAi
cGFzdGUtaW1hZ2UiXTsKIAogICAgIGF1dG8gKmRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZkZpbGU6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBwYXRoRm9yUmVzb3VyY2U6QCJzdW5zZXQt
aW4tY3VwZXJ0aW5vLTQwMHB4IiBvZlR5cGU6QCJnaWYiIGluRGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgd3JpdGVJbWFnZURhdGFUb1Bhc3RlYm9hcmQoKE5TU3Ry
aW5nICopa1VUVHlwZUdJRiwgZGF0YSk7CisgICAgd3JpdGVJbWFnZURhdGFUb1Bhc3RlYm9hcmQo
KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUdJRiwgZGF0YSk7CiAgICAgW3dlYlZpZXcgcGFz
dGU6bmlsXTsKIAogICAgIEVYUEVDVF9XS19TVFJFUSgiZmFsc2UiLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZGF0YVRyYW5zZmVyLnR5cGVzLmluY2x1ZGVzKCdpbWFn
ZS9naWYnKS50b1N0cmluZygpIl0pOwpAQCAtOTksNyArOTksNyBAQCBURVNUKFBhc3RlSW1hZ2Us
IFBhc3RlSlBFR0ltYWdlKQogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAInBhc3RlLWltYWdlIl07CiAKICAgICBhdXRvICpkYXRhID0gW05TRGF0YSBkYXRhV2l0
aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gcGF0aEZvclJlc291cmNlOkAi
c3Vuc2V0LWluLWN1cGVydGluby02MDBweCIgb2ZUeXBlOkAianBnIiBpbkRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIHdyaXRlSW1hZ2VEYXRhVG9QYXN0ZWJvYXJk
KChOU1N0cmluZyAqKWtVVFR5cGVKUEVHLCBkYXRhKTsKKyAgICB3cml0ZUltYWdlRGF0YVRvUGFz
dGVib2FyZCgoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSlBFRywgZGF0YSk7CiAgICAgW3dl
YlZpZXcgcGFzdGU6bmlsXTsKIAogICAgIEVYUEVDVF9XS19TVFJFUSgiZmFsc2UiLCBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZGF0YVRyYW5zZmVyLnR5cGVzLmluY2x1
ZGVzKCdpbWFnZS9naWYnKS50b1N0cmluZygpIl0pOwpAQCAtMTIxLDcgKzEyMSw3IEBAIFRFU1Qo
UGFzdGVJbWFnZSwgUGFzdGVQTkdJbWFnZSkKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZFRlc3RQYWdlTmFtZWQ6QCJwYXN0ZS1pbWFnZSJdOwogCiAgICAgYXV0byAqZGF0YSA9IFtOU0Rh
dGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIG1haW5CdW5kbGVdIHBhdGhGb3JS
ZXNvdXJjZTpAInN1bnNldC1pbi1jdXBlcnRpbm8tMjAwcHgiIG9mVHlwZTpAInBuZyIgaW5EaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICB3cml0ZUltYWdlRGF0YVRv
UGFzdGVib2FyZCgoTlNTdHJpbmcgKilrVVRUeXBlUE5HLCBkYXRhKTsKKyAgICB3cml0ZUltYWdl
RGF0YVRvUGFzdGVib2FyZCgoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HLCBkYXRhKTsK
ICAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOwogCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJmYWxzZSIs
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkYXRhVHJhbnNmZXIudHlw
ZXMuaW5jbHVkZXMoJ2ltYWdlL2dpZicpLnRvU3RyaW5nKCkiXSk7CkBAIC0yNTksNyArMjU5LDcg
QEAgVEVTVChQYXN0ZUltYWdlLCBQYXN0ZVRJRkZJbWFnZSkKICAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJwYXN0ZS1pbWFnZSJdOwogCiAgICAgYXV0byAqZGF0
YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIG1haW5CdW5kbGVd
IHBhdGhGb3JSZXNvdXJjZTpAInN1bnNldC1pbi1jdXBlcnRpbm8tMTAwcHgiIG9mVHlwZTpAInRp
ZmYiIGluRGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgd3JpdGVJ
bWFnZURhdGFUb1Bhc3RlYm9hcmQoKE5TU3RyaW5nICopa1VUVHlwZVRJRkYsIGRhdGEpOworICAg
IHdyaXRlSW1hZ2VEYXRhVG9QYXN0ZWJvYXJkKChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVU
SUZGLCBkYXRhKTsKICAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOwogCiAgICAgRVhQRUNUX1dLX1NU
UkVRKCJmYWxzZSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkYXRh
VHJhbnNmZXIudHlwZXMuaW5jbHVkZXMoJ2ltYWdlL2dpZicpLnRvU3RyaW5nKCkiXSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRD
b250ZW50Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZU1p
eGVkQ29udGVudC5tbQppbmRleCA3MTMyYTJlYzljNjkzZTZlY2NlMTUyYjQ1OWIzZDhiZjgzZGM3
NGJiLi41YWVlZDRkNzY1YjMwZGFlYzVlZGRiZWU4MjJiYjZhNzI2MzJhYzU4IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhl
ZENvbnRlbnQubW0KQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCB3cml0ZVR5cGVzQW5kRGF0YVRvUGFz
dGVib2FyZChpZCB0eXBlLCAuLi4pCiBzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHNl
dFVwV2ViVmlldygpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKLSAg
ICBXS1ByZWZlcmVuY2VzU2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKChXS1ByZWZlcmVu
Y2VzUmVmKVt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICBX
S1ByZWZlcmVuY2VzU2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKChfX2JyaWRnZSBXS1By
ZWZlcmVuY2VzUmVmKVt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByZWZlcmVuY2VzLCB0cnVlKTsK
ICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJEYXRhVHJhbnNm
ZXIiXTsKICAgICByZXR1cm4gd2ViVmlldzsKIH0KQEAgLTMxMCw3ICszMTAsNyBAQCBURVNUKFBh
c3RlTWl4ZWRDb250ZW50LCBDb3B5QW5kUGFzdGVXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFPbmx5
KQogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxl
cjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInNhbWUiXTsKICAgICBbY29uZmln
dXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2No
ZW1lOkAiZGlmZmVyZW50Il07Ci0gICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmRE
YXRhRW5hYmxlZCgoV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10s
IHRydWUpOworICAgIFdLUHJlZmVyZW5jZXNTZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQo
KF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCB0
cnVlKTsKIAogICAgIGF1dG8gc291cmNlID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3NvdXJjZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6bWFya3VwRm9yU291cmNlIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJzYW1l
Oi8vIl1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9QYXN0ZVJURkQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bh
c3RlUlRGRC5tbQppbmRleCAwYzU0MTgzMzhlN2UzZjM5ZWQzMmI4YTcyOTI4NmE4MzJjMTljNDAz
Li5jODE5YmI5MzZmYTU4NGQxZjQ3YjcwYzU2MzcyMmIxNjdjYWZjYTNhIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlUlRGRC5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlUlRGRC5tbQpAQCAtNjcs
MTkgKzY3LDE5IEBAIEBlbmQKIAogdm9pZCB3cml0ZVJURlRvUGFzdGVib2FyZChOU0RhdGEgKmRh
dGEpCiB7Ci0gICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldEl0ZW1zOkBb
QHsgKE5TU3RyaW5nICopa1VUVHlwZVJURiA6IGRhdGF9XV07CisgICAgW1tVSVBhc3RlYm9hcmQg
Z2VuZXJhbFBhc3RlYm9hcmRdIHNldEl0ZW1zOkBbQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VU
VHlwZVJURiA6IGRhdGF9XV07CiB9CiAKIHZvaWQgd3JpdGVSVEZEVG9QYXN0ZWJvYXJkKE5TRGF0
YSAqZGF0YSkKIHsKLSAgICBbW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gc2V0SXRl
bXM6QFtAeyAoTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkQgOiBkYXRhfV1dOworICAgIFtbVUlQ
YXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRJdGVtczpAW0B7IChfX2JyaWRnZSBOU1N0
cmluZyAqKWtVVFR5cGVGbGF0UlRGRCA6IGRhdGF9XV07CiB9CiAjZW5kaWYKIAogc3RhdGljIFJl
dGFpblB0cjxUZXN0V0tXZWJWaWV3PiBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmRE
YXRhRW5hYmxlZCgpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKLSAg
ICBhdXRvIHByZWZlcmVuY2VzID0gKFdLUHJlZmVyZW5jZXNSZWYpW1t3ZWJWaWV3IGNvbmZpZ3Vy
YXRpb25dIHByZWZlcmVuY2VzXTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gKF9fYnJpZGdlIFdL
UHJlZmVyZW5jZXNSZWYpW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByZWZlcmVuY2VzXTsKICAg
ICBXS1ByZWZlcmVuY2VzU2V0RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKHByZWZlcmVuY2VzLCB0
cnVlKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKHBy
ZWZlcmVuY2VzLCB0cnVlKTsKICAgICByZXR1cm4gd2ViVmlldzsKQEAgLTE0NSw3ICsxNDUsNyBA
QCBURVNUKFBhc3RlUlRGRCwgSW1hZ2VFbGVtZW50VXNlc0Jsb2JVUkwpCiAgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOwogCiAgICAgYXV0
byAqcG5nRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIHBhdGhGb3JSZXNvdXJjZTpAInN1bnNldC1pbi1jdXBlcnRpbm8tMjAwcHgiIG9m
VHlwZTpAInBuZyIgaW5EaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAg
ICBhdXRvIGF0dGFjaG1lbnQgPSBhZG9wdE5TKFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5p
dFdpdGhEYXRhOnBuZ0RhdGEgb2ZUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVQTkddKTsKKyAgICBh
dXRvIGF0dGFjaG1lbnQgPSBhZG9wdE5TKFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5pdFdp
dGhEYXRhOnBuZ0RhdGEgb2ZUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVQTkddKTsK
ICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtOU0F0dHJpYnV0ZWRTdHJpbmcgYXR0
cmlidXRlZFN0cmluZ1dpdGhBdHRhY2htZW50OmF0dGFjaG1lbnQuZ2V0KCldOwogICAgIE5TRGF0
YSAqUlRGRERhdGEgPSBbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmlu
ZyBsZW5ndGhdKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV07CiAKQEAgLTE2Myw3ICsxNjMsNyBA
QCBURVNUKFBhc3RlUlRGRCwgSW1hZ2VFbGVtZW50VXNlc0Jsb2JVUkxJbkhUTUwpCiAgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOwogCiAg
ICAgYXV0byAqcG5nRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIHBhdGhGb3JSZXNvdXJjZTpAInN1bnNldC1pbi1jdXBlcnRpbm8tMjAw
cHgiIG9mVHlwZTpAInBuZyIgaW5EaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
XTsKLSAgICBhdXRvIGF0dGFjaG1lbnQgPSBhZG9wdE5TKFtbTlNUZXh0QXR0YWNobWVudCBhbGxv
Y10gaW5pdFdpdGhEYXRhOnBuZ0RhdGEgb2ZUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVQTkddKTsK
KyAgICBhdXRvIGF0dGFjaG1lbnQgPSBhZG9wdE5TKFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10g
aW5pdFdpdGhEYXRhOnBuZ0RhdGEgb2ZUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVQ
TkddKTsKICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtOU0F0dHJpYnV0ZWRTdHJp
bmcgYXR0cmlidXRlZFN0cmluZ1dpdGhBdHRhY2htZW50OmF0dGFjaG1lbnQuZ2V0KCldOwogICAg
IE5TRGF0YSAqUlRGRERhdGEgPSBbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwg
W3N0cmluZyBsZW5ndGhdKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV07CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVXZWJBcmNoaXZlLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVdlYkFyY2hpdmUu
bW0KaW5kZXggMTVmMjdlOTEzZDEzNzc2NGEzZmExNTBhMTY0OTBmNDliYzE0NTQ1MC4uNTA0NThk
ZGU5MWEzYjA5ODM4MTNmZjQ5MzA5NjdhYzY5YmViZmI4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVdlYkFyY2hpdmUubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVdlYkFyY2hpdmUubW0KQEAg
LTQyLDcgKzQyLDcgQEAgQGVuZAogc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBjcmVh
dGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpCiB7CiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKLSAgICBhdXRvIHByZWZlcmVuY2VzID0gKFdLUHJl
ZmVyZW5jZXNSZWYpW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByZWZlcmVuY2VzXTsKKyAgICBh
dXRvIHByZWZlcmVuY2VzID0gKF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW1t3ZWJWaWV3IGNv
bmZpZ3VyYXRpb25dIHByZWZlcmVuY2VzXTsKICAgICBXS1ByZWZlcmVuY2VzU2V0RGF0YVRyYW5z
ZmVySXRlbXNFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0
Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKICAgICByZXR1
cm4gd2ViVmlldzsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5h
dmlnYXRpb24ubW0KaW5kZXggZWJhZGRhZWEwMWNkZWM3NzdlNTk3MmZmZWY5OTJhMzI1MzU4MDA1
Ni4uZmU5NTYxNmEzYmI3ZDkwOTZhNmU1ZmMxMjhmOWVjNzk1M2ZhYWYwOCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRl
V2l0aG91dE5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9SZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW0KQEAgLTk4LDcg
Kzk4LDcgQEAgVEVTVChXZWJLaXQsIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlv
bikKICAgICBhdXRvIGN1cnJlbnRJdGVtID0gV0tCYWNrRm9yd2FyZExpc3RHZXRDdXJyZW50SXRl
bShiYWNrRm9yd2FyZExpc3QpOwogICAgIGF1dG8gY3VycmVudEl0ZW1VUkwgPSBhZG9wdFdLKFdL
QmFja0ZvcndhcmRMaXN0SXRlbUNvcHlVUkwoY3VycmVudEl0ZW0pKTsKICAgICAKLSAgICBhdXRv
IGV4cGVjdGVkVVJMID0gYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhDRlVSTCgoQ0ZVUkxSZWYpW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl0pKTsKKyAg
ICBhdXRvIGV4cGVjdGVkVVJMID0gYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhDRlVSTCgoX19icmlk
Z2UgQ0ZVUkxSZWYpW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBs
ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl0pKTsKICAgICBFWFBFQ1RfTk9UX05VTEwoZXhwZWN0ZWRVUkwpOwogICAgIEVYUEVD
VF9UUlVFKFdLVVJMSXNFcXVhbChjdXJyZW50SXRlbVVSTC5nZXQoKSwgZXhwZWN0ZWRVUkwuZ2V0
KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCmluZGV4IDY4ZDE5YWQ2NjlmNTQ4OGQ1NzVjMzhi
ODQ4NGIzYjA4Y2E5Yjc5OWEuLjJjMzYyYTRlNzI3ZDdjZDYzYmU5MzIwMTNjMjM2ODQ3Nzc5ZWFl
YzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tB
dHRhY2htZW50VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyBOU1N0
cmluZyAqYXR0YWNobWVudEVkaXRpbmdUZXN0TWFya3VwID0gQCI8bWV0YSBuYW1lPSd2aWV3cG9y
dCcgY29udGVudD0nCiBzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JU
ZXN0aW5nQXR0YWNobWVudHMoQ0dTaXplIHdlYlZpZXdTaXplLCBXS1dlYlZpZXdDb25maWd1cmF0
aW9uICpjb25maWd1cmF0aW9uKQogewogICAgIGNvbmZpZ3VyYXRpb24uX2F0dGFjaG1lbnRFbGVt
ZW50RW5hYmxlZCA9IFlFUzsKLSAgICBXS1ByZWZlcmVuY2VzU2V0Q3VzdG9tUGFzdGVib2FyZERh
dGFFbmFibGVkKChXS1ByZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwg
WUVTKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKChf
X2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgWUVT
KTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgd2ViVmlld1NpemUud2lkdGgsIHdlYlZpZXdT
aXplLmhlaWdodCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmF0dGFjaG1lbnRFZGl0aW5nVGVzdE1hcmt1cF07
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9tYWMv
QWNjZXNzaW5nUGFzdGVkSW1hZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dExlZ2FjeS9tYWMvQWNjZXNzaW5nUGFzdGVkSW1hZ2UubW0KaW5kZXggNTAzYzIyNGJiYTY2YjI4
MjY3Yzc3NDViYmYxY2Q3ZDM2ZTc2NWY4Yi4uY2FjMzZhYmZhNDYyMDZhYTAxNDQ1YmEyNmE0OTk2
Yzg5MmFmZTA4OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRM
ZWdhY3kvbWFjL0FjY2Vzc2luZ1Bhc3RlZEltYWdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0TGVnYWN5L21hYy9BY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbQpAQCAtNTMs
NyArNTMsNyBAQCBAZW5kCiAKIHN0YXRpYyB2b2lkIHdyaXRlUlRGRFRvUGFzdGVib2FyZChOU0Rh
dGEgKmRhdGEpCiB7Ci0gICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldEl0
ZW1zOkBbQHsgKE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEIDogZGF0YX1dXTsKKyAgICBbW1VJ
UGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gc2V0SXRlbXM6QFtAeyAoX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlRmxhdFJURkQgOiBkYXRhfV1dOwogfQogI2VuZGlmCiAKQEAgLTkzLDcg
KzkzLDcgQEAgVEVTVChXZWJLaXRMZWdhY3ksIEFjY2Vzc2luZ0ltYWdlSW5QYXN0ZWRSVEZEKQog
ICAgIFt3ZWJWaWV3LmdldCgpIHNldEVkaXRhYmxlOllFU107CiAKICAgICBhdXRvICpwbmdEYXRh
ID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
cGF0aEZvclJlc291cmNlOkAic3Vuc2V0LWluLWN1cGVydGluby0yMDBweCIgb2ZUeXBlOkAicG5n
IiBpbkRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIGF1dG8gYXR0
YWNobWVudCA9IGFkb3B0TlMoW1tOU1RleHRBdHRhY2htZW50IGFsbG9jXSBpbml0V2l0aERhdGE6
cG5nRGF0YSBvZlR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVBOR10pOworICAgIGF1dG8gYXR0YWNo
bWVudCA9IGFkb3B0TlMoW1tOU1RleHRBdHRhY2htZW50IGFsbG9jXSBpbml0V2l0aERhdGE6cG5n
RGF0YSBvZlR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBOR10pOwogICAgIE5TQXR0
cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3Ry
aW5nV2l0aEF0dGFjaG1lbnQ6YXR0YWNobWVudC5nZXQoKV07CiAgICAgTlNEYXRhICpSVEZERGF0
YSA9IFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0p
IGRvY3VtZW50QXR0cmlidXRlczpAeyB9XTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0KaW5kZXggZGNmYzJlMTIyZTk4NWQ5ZDBkMzE0
NmUyNjZhY2ZkNWI5NWNhMzQ5Mi4uYjlmZmE3NGQ2MTA3NzFhMDA1MzEwYzhjOWE0ODZhNTQ4ZmMx
OTE1OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9uU2hl
ZXRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVl
dFRlc3RzLm1tCkBAIC0yNTAsMTQgKzI1MCwxNCBAQCBURVNUKEFjdGlvblNoZWV0VGVzdHMsIENv
cHlJbWFnZUVsZW1lbnRXaXRoSFJFRkFuZFRpdGxlKQogICAgIFt3ZWJWaWV3IF9kb0FmdGVyTmV4
dFByZXNlbnRhdGlvblVwZGF0ZTpeKCkgewogICAgICAgICBOU0FycmF5IDxOU1N0cmluZyAqPiAq
cGFzdGVib2FyZFR5cGVzID0gW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHBhc3Rl
Ym9hcmRUeXBlc107CiAgICAgICAgIEVYUEVDVF9FUSgyVUwsIHBhc3RlYm9hcmRUeXBlcy5jb3Vu
dCk7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUSgoTlNTdHJpbmcgKilrVVRUeXBlUE5HLCBwYXN0
ZWJvYXJkVHlwZXMuZmlyc3RPYmplY3QpOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoKE5TU3Ry
aW5nICopa1VUVHlwZVVSTCwgcGFzdGVib2FyZFR5cGVzLmxhc3RPYmplY3QpOworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBORywgcGFzdGVib2Fy
ZFR5cGVzLmZpcnN0T2JqZWN0KTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKChfX2JyaWRnZSBO
U1N0cmluZyAqKWtVVFR5cGVVUkwsIHBhc3RlYm9hcmRUeXBlcy5sYXN0T2JqZWN0KTsKICAgICAg
ICAgTlNBcnJheSA8TlNJdGVtUHJvdmlkZXIgKj4gKml0ZW1Qcm92aWRlcnMgPSBbW1VJUGFzdGVi
b2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gaXRlbVByb3ZpZGVyc107CiAgICAgICAgIEVYUEVDVF9F
USgxVUwsIGl0ZW1Qcm92aWRlcnMuY291bnQpOwogICAgICAgICBpdGVtUHJvdmlkZXIgPSBpdGVt
UHJvdmlkZXJzLmZpcnN0T2JqZWN0OwogICAgICAgICBFWFBFQ1RfRVEoMlVMLCBbaXRlbVByb3Zp
ZGVyIHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnNdLmNvdW50KTsKLSAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKChOU1N0cmluZyAqKWtVVFR5cGVQTkcsIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJlZFR5
cGVJZGVudGlmaWVyc10uZmlyc3RPYmplY3QpOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoKE5T
U3RyaW5nICopa1VUVHlwZVVSTCwgW2l0ZW1Qcm92aWRlciByZWdpc3RlcmVkVHlwZUlkZW50aWZp
ZXJzXS5sYXN0T2JqZWN0KTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKChfX2JyaWRnZSBOU1N0
cmluZyAqKWtVVFR5cGVQTkcsIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVy
c10uZmlyc3RPYmplY3QpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoKF9fYnJpZGdlIE5TU3Ry
aW5nICopa1VUVHlwZVVSTCwgW2l0ZW1Qcm92aWRlciByZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJz
XS5sYXN0T2JqZWN0KTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKQEAgLTI5MCwxNCArMjkwLDE0IEBAIFRFU1QoQWN0
aW9uU2hlZXRUZXN0cywgQ29weUltYWdlRWxlbWVudFdpdGhIUkVGKQogICAgIFt3ZWJWaWV3IF9k
b0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTpeKCkgewogICAgICAgICBOU0FycmF5IDxOU1N0
cmluZyAqPiAqcGFzdGVib2FyZFR5cGVzID0gW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9h
cmRdIHBhc3RlYm9hcmRUeXBlc107CiAgICAgICAgIEVYUEVDVF9FUSgyVUwsIHBhc3RlYm9hcmRU
eXBlcy5jb3VudCk7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUSgoTlNTdHJpbmcgKilrVVRUeXBl
UE5HLCBwYXN0ZWJvYXJkVHlwZXMuZmlyc3RPYmplY3QpOwotICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoKE5TU3RyaW5nICopa1VUVHlwZVVSTCwgcGFzdGVib2FyZFR5cGVzLmxhc3RPYmplY3QpOwor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBORywg
cGFzdGVib2FyZFR5cGVzLmZpcnN0T2JqZWN0KTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKChf
X2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVUkwsIHBhc3RlYm9hcmRUeXBlcy5sYXN0T2JqZWN0
KTsKICAgICAgICAgTlNBcnJheSA8TlNJdGVtUHJvdmlkZXIgKj4gKml0ZW1Qcm92aWRlcnMgPSBb
W1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gaXRlbVByb3ZpZGVyc107CiAgICAgICAg
IEVYUEVDVF9FUSgxVUwsIGl0ZW1Qcm92aWRlcnMuY291bnQpOwogICAgICAgICBpdGVtUHJvdmlk
ZXIgPSBpdGVtUHJvdmlkZXJzLmZpcnN0T2JqZWN0OwogICAgICAgICBFWFBFQ1RfRVEoMlVMLCBb
aXRlbVByb3ZpZGVyIHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnNdLmNvdW50KTsKLSAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKChOU1N0cmluZyAqKWtVVFR5cGVQTkcsIFtpdGVtUHJvdmlkZXIgcmVn
aXN0ZXJlZFR5cGVJZGVudGlmaWVyc10uZmlyc3RPYmplY3QpOwotICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoKE5TU3RyaW5nICopa1VUVHlwZVVSTCwgW2l0ZW1Qcm92aWRlciByZWdpc3RlcmVkVHlw
ZUlkZW50aWZpZXJzXS5sYXN0T2JqZWN0KTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKChfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVQTkcsIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJlZFR5cGVJ
ZGVudGlmaWVyc10uZmlyc3RPYmplY3QpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoKF9fYnJp
ZGdlIE5TU3RyaW5nICopa1VUVHlwZVVSTCwgW2l0ZW1Qcm92aWRlciByZWdpc3RlcmVkVHlwZUlk
ZW50aWZpZXJzXS5sYXN0T2JqZWN0KTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKQEAgLTMyOSwxMiArMzI5LDEyIEBA
IFRFU1QoQWN0aW9uU2hlZXRUZXN0cywgQ29weUltYWdlRWxlbWVudFdpdGhvdXRIUkVGKQogICAg
IFt3ZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTpeKCkgewogICAgICAgICBO
U0FycmF5IDxOU1N0cmluZyAqPiAqcGFzdGVib2FyZFR5cGVzID0gW1tVSVBhc3RlYm9hcmQgZ2Vu
ZXJhbFBhc3RlYm9hcmRdIHBhc3RlYm9hcmRUeXBlc107CiAgICAgICAgIEVYUEVDVF9FUSgxVUws
IHBhc3RlYm9hcmRUeXBlcy5jb3VudCk7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUSgoTlNTdHJp
bmcgKilrVVRUeXBlUE5HLCBwYXN0ZWJvYXJkVHlwZXMuZmlyc3RPYmplY3QpOworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBORywgcGFzdGVib2Fy
ZFR5cGVzLmZpcnN0T2JqZWN0KTsKICAgICAgICAgTlNBcnJheSA8TlNJdGVtUHJvdmlkZXIgKj4g
Kml0ZW1Qcm92aWRlcnMgPSBbW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gaXRlbVBy
b3ZpZGVyc107CiAgICAgICAgIEVYUEVDVF9FUSgxVUwsIGl0ZW1Qcm92aWRlcnMuY291bnQpOwog
ICAgICAgICBOU0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyID0gaXRlbVByb3ZpZGVycy5maXJz
dE9iamVjdDsKICAgICAgICAgRVhQRUNUX0VRKDFVTCwgaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRU
eXBlSWRlbnRpZmllcnMuY291bnQpOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoKE5TU3RyaW5n
ICopa1VUVHlwZVBORywgaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMuZmly
c3RPYmplY3QpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoKF9fYnJpZGdlIE5TU3RyaW5nICop
a1VUVHlwZVBORywgaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMuZmlyc3RP
YmplY3QpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KaW5kZXggMDBjMTNmMGRjYjZmNjc1OTYyZjhmMWY2
ZjM0YjUxYTczMmQ0OTczMi4uMzg2ZDkzYmRhNTMzMjJmNDkyNGU0NTA3NTk2ZmE2YmE3NzM5ZDU4
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BU
ZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJv
cFRlc3RzSU9TLm1tCkBAIC0xMjIsOSArMTIyLDkgQEAgc3RhdGljIHZvaWQgY2hlY2tSaWNoVGV4
dFR5cGVQcmVjZWRlc1BsYWluVGV4dFR5cGUoRHJhZ0FuZERyb3BTaW11bGF0b3IgKnNpbXVsYXQK
IHsKICAgICAvLyBBdCBsZWFzdCBvbmUgb2YgImNvbS5hcHBsZS5mbGF0LXJ0ZmQiIG9yICJwdWJs
aWMucnRmIiBpcyBleHBlY3RlZCB0byBoYXZlIGhpZ2hlciBwcmVjZWRlbmNlIHRoYW4gInB1Ymxp
Yy51dGY4LXBsYWluLXRleHQiLgogICAgIE5TQXJyYXkgKnJlZ2lzdGVyZWRUeXBlcyA9IFtzaW11
bGF0b3Iuc291cmNlSXRlbVByb3ZpZGVycy5maXJzdE9iamVjdCByZWdpc3RlcmVkVHlwZUlkZW50
aWZpZXJzXTsKLSAgICBhdXRvIGluZGV4T2ZSVEZUeXBlID0gW3JlZ2lzdGVyZWRUeXBlcyBpbmRl
eE9mT2JqZWN0OihOU1N0cmluZyAqKWtVVFR5cGVSVEZdOwotICAgIGF1dG8gaW5kZXhPZkZsYXRS
VEZEVHlwZSA9IFtyZWdpc3RlcmVkVHlwZXMgaW5kZXhPZk9iamVjdDooTlNTdHJpbmcgKilrVVRU
eXBlRmxhdFJURkRdOwotICAgIGF1dG8gaW5kZXhPZlBsYWluVGV4dFR5cGUgPSBbcmVnaXN0ZXJl
ZFR5cGVzIGluZGV4T2ZPYmplY3Q6KE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHRdOwor
ICAgIGF1dG8gaW5kZXhPZlJURlR5cGUgPSBbcmVnaXN0ZXJlZFR5cGVzIGluZGV4T2ZPYmplY3Q6
KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVJURl07CisgICAgYXV0byBpbmRleE9mRmxhdFJU
RkRUeXBlID0gW3JlZ2lzdGVyZWRUeXBlcyBpbmRleE9mT2JqZWN0OihfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtVVFR5cGVGbGF0UlRGRF07CisgICAgYXV0byBpbmRleE9mUGxhaW5UZXh0VHlwZSA9IFty
ZWdpc3RlcmVkVHlwZXMgaW5kZXhPZk9iamVjdDooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBl
VVRGOFBsYWluVGV4dF07CiAgICAgRVhQRUNUX05FKChOU0ludGVnZXIpaW5kZXhPZlBsYWluVGV4
dFR5cGUsIE5TTm90Rm91bmQpOwogICAgIEVYUEVDVF9UUlVFKChpbmRleE9mUlRGVHlwZSAhPSBO
U05vdEZvdW5kICYmIGluZGV4T2ZSVEZUeXBlIDwgaW5kZXhPZlBsYWluVGV4dFR5cGUpIHx8IChp
bmRleE9mRmxhdFJURkRUeXBlICE9IE5TTm90Rm91bmQgJiYgaW5kZXhPZkZsYXRSVEZEVHlwZSA8
IGluZGV4T2ZQbGFpblRleHRUeXBlKSk7CiB9CkBAIC0yNzQsNyArMjc0LDcgQEAgVEVTVChEcmFn
QW5kRHJvcFRlc3RzLCBDYW5TdGFydERyYWdPbkVub3Jtb3VzSW1hZ2UpCiAgICAgW3NpbXVsYXRv
ciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgMTAwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDEwMCld
OwogCiAgICAgTlNBcnJheSAqcmVnaXN0ZXJlZFR5cGVzID0gW1tzaW11bGF0b3Igc291cmNlSXRl
bVByb3ZpZGVyc10uZmlyc3RPYmplY3QgcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVyc107Ci0gICAg
RVhQRUNUX1dLX1NUUkVRKChOU1N0cmluZyAqKWtVVFR5cGVTY2FsYWJsZVZlY3RvckdyYXBoaWNz
LCBbcmVnaXN0ZXJlZFR5cGVzIGZpcnN0T2JqZWN0XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKChf
X2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVTY2FsYWJsZVZlY3RvckdyYXBoaWNzLCBbcmVnaXN0
ZXJlZFR5cGVzIGZpcnN0T2JqZWN0XSk7CiB9CiAKIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgSW1h
Z2VUb1RleHRhcmVhKQpAQCAtMzA2LDcgKzMwNiw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywg
SW1hZ2VJbkxpbmtUb0lucHV0KQogICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBw
bGUuY29tLyIsIFt3ZWJWaWV3IGVkaXRvclZhbHVlXS5VVEY4U3RyaW5nKTsKICAgICBjaGVja1Nl
bGVjdGlvblJlY3RzV2l0aExvZ2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVlKDEwMSwgMjQxLCAyMDU3
LCAyMzIpIF0sIFtzaW11bGF0b3IgZmluYWxTZWxlY3Rpb25SZWN0c10pOwogICAgIGNoZWNrU3Vn
Z2VzdGVkTmFtZUFuZEVzdGltYXRlZFNpemUoc2ltdWxhdG9yLmdldCgpLCBAImljb24ucG5nIiwg
eyAyMTUsIDE3NCB9KTsKLSAgICBjaGVja1R5cGVJZGVudGlmaWVySXNSZWdpc3RlcmVkQXRJbmRl
eChzaW11bGF0b3IuZ2V0KCksIChOU1N0cmluZyAqKWtVVFR5cGVQTkcsIDApOworICAgIGNoZWNr
VHlwZUlkZW50aWZpZXJJc1JlZ2lzdGVyZWRBdEluZGV4KHNpbXVsYXRvci5nZXQoKSwgKF9fYnJp
ZGdlIE5TU3RyaW5nICopa1VUVHlwZVBORywgMCk7CiB9CiAKIFRFU1QoRHJhZ0FuZERyb3BUZXN0
cywgSW1hZ2VJbkxpbmtXaXRob3V0SFJFRlRvSW5wdXQpCkBAIC0zMjAsNyArMzIwLDcgQEAgVEVT
VChEcmFnQW5kRHJvcFRlc3RzLCBJbWFnZUluTGlua1dpdGhvdXRIUkVGVG9JbnB1dCkKIAogICAg
IEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgZWRpdG9yVmFsdWVdKTsKICAgICBjaGVja0Vz
dGltYXRlZFNpemUoc2ltdWxhdG9yLmdldCgpLCB7IDIxNSwgMTc0IH0pOwotICAgIGNoZWNrVHlw
ZUlkZW50aWZpZXJJc1JlZ2lzdGVyZWRBdEluZGV4KHNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5n
ICopa1VUVHlwZVBORywgMCk7CisgICAgY2hlY2tUeXBlSWRlbnRpZmllcklzUmVnaXN0ZXJlZEF0
SW5kZXgoc2ltdWxhdG9yLmdldCgpLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HLCAw
KTsKIH0KIAogVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBJbWFnZURvZXNOb3RVc2VFbGVtZW50U2l6
ZUFzRXN0aW1hdGVkU2l6ZSkKQEAgLTMzMSw3ICszMzEsNyBAQCBURVNUKERyYWdBbmREcm9wVGVz
dHMsIEltYWdlRG9lc05vdFVzZUVsZW1lbnRTaXplQXNFc3RpbWF0ZWRTaXplKQogICAgIGF1dG8g
c2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0
aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAgIFtzaW11bGF0b3IgcnVuRnJvbTogeyAxMDAs
IDEwMCB9IHRvOiB7IDEwMCwgMzAwIH1dOwogCi0gICAgY2hlY2tUeXBlSWRlbnRpZmllcklzUmVn
aXN0ZXJlZEF0SW5kZXgoc2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlR0lGLCAw
KTsKKyAgICBjaGVja1R5cGVJZGVudGlmaWVySXNSZWdpc3RlcmVkQXRJbmRleChzaW11bGF0b3Iu
Z2V0KCksIChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVHSUYsIDApOwogICAgIGNoZWNrU3Vn
Z2VzdGVkTmFtZUFuZEVzdGltYXRlZFNpemUoc2ltdWxhdG9yLmdldCgpLCBAImFwcGxlLmdpZiIs
IHsgNTIsIDY0IH0pOwogICAgIEVYUEVDVF9XS19TVFJFUSgiYXBwbGUuZ2lmIChpbWFnZS9naWYp
IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm91dHB1dC50ZXh0Q29u
dGVudCJdKTsKIH0KQEAgLTQ0Niw3ICs0NDYsNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIFNp
bmdsZVBsYWluVGV4dFdvcmRUeXBlSWRlbnRpZmllcnMpCiAgICAgTlNJdGVtUHJvdmlkZXIgKml0
ZW1Qcm92aWRlciA9IFtzaW11bGF0b3Igc291cmNlSXRlbVByb3ZpZGVyc10uZmlyc3RPYmplY3Q7
CiAgICAgTlNBcnJheSAqcmVnaXN0ZXJlZFR5cGVzID0gW2l0ZW1Qcm92aWRlciByZWdpc3RlcmVk
VHlwZUlkZW50aWZpZXJzXTsKICAgICBFWFBFQ1RfRVEoMVVMLCByZWdpc3RlcmVkVHlwZXMuY291
bnQpOwotICAgIEVYUEVDVF9XS19TVFJFUShbKE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRl
eHQgVVRGOFN0cmluZ10sIFtyZWdpc3RlcmVkVHlwZXMuZmlyc3RPYmplY3QgVVRGOFN0cmluZ10p
OworICAgIEVYUEVDVF9XS19TVFJFUShbKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQ
bGFpblRleHQgVVRGOFN0cmluZ10sIFtyZWdpc3RlcmVkVHlwZXMuZmlyc3RPYmplY3QgVVRGOFN0
cmluZ10pOwogICAgIEVYUEVDVF9FUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAic291cmNlLnZhbHVlIl0ubGVuZ3RoLCAwVUwpOwogICAgIEVYUEVDVF9FUShVSVByZWZl
cnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lLCBpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2Vu
dGF0aW9uU3R5bGUpOwogICAgIEVYUEVDVF9XS19TVFJFUSgicG5ldW1vbm91bHRyYW1pY3Jvc2Nv
cGljc2lsaWNvdm9sY2Fub2Nvbmlvc2lzIiwgW3dlYlZpZXcgZWRpdG9yVmFsdWVdLlVURjhTdHJp
bmcpOwpAQCAtNDY3LDggKzQ2Nyw4IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgU2luZ2xlUGxh
aW5UZXh0VVJMVHlwZUlkZW50aWZpZXJzKQogICAgIE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlk
ZXIgPSBbc2ltdWxhdG9yIHNvdXJjZUl0ZW1Qcm92aWRlcnNdLmZpcnN0T2JqZWN0OwogICAgIE5T
QXJyYXkgKnJlZ2lzdGVyZWRUeXBlcyA9IFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJlZFR5cGVJZGVu
dGlmaWVyc107CiAgICAgRVhQRUNUX0VRKDJVTCwgcmVnaXN0ZXJlZFR5cGVzLmNvdW50KTsKLSAg
ICBFWFBFQ1RfV0tfU1RSRVEoWyhOU1N0cmluZyAqKWtVVFR5cGVVUkwgVVRGOFN0cmluZ10sIFty
ZWdpc3RlcmVkVHlwZXMuZmlyc3RPYmplY3QgVVRGOFN0cmluZ10pOwotICAgIEVYUEVDVF9XS19T
VFJFUShbKE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQgVVRGOFN0cmluZ10sIFtyZWdp
c3RlcmVkVHlwZXMubGFzdE9iamVjdCBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KFsoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVJMIFVURjhTdHJpbmddLCBbcmVnaXN0ZXJl
ZFR5cGVzLmZpcnN0T2JqZWN0IFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoWyhf
X2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IFVURjhTdHJpbmddLCBbcmVn
aXN0ZXJlZFR5cGVzLmxhc3RPYmplY3QgVVRGOFN0cmluZ10pOwogICAgIEVYUEVDVF9FUSgwVUws
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzb3VyY2UudmFsdWUiXS5s
ZW5ndGgpOwogICAgIEVYUEVDVF9FUShVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5l
LCBpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpOwogICAgIEVYUEVDVF9X
S19TVFJFUSgiaHR0cHM6Ly93ZWJraXQub3JnLyIsIFt3ZWJWaWV3IGVkaXRvclZhbHVlXS5VVEY4
U3RyaW5nKTsKQEAgLTQ5OCw3ICs0OTgsNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIExpbmtU
b0lucHV0KQogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmpl
Y3Q6QCJkcmFnb3ZlciJdKTsKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNv
bnRhaW5zT2JqZWN0OkAiZHJvcCJdKTsKICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dp
bmcoQFsgbWFrZUNHUmVjdFZhbHVlKDEwMSwgMjczLCAyMDU3LCAyMzIpIF0sIFtzaW11bGF0b3Ig
ZmluYWxTZWxlY3Rpb25SZWN0c10pOwotICAgIGNoZWNrVHlwZUlkZW50aWZpZXJJc1JlZ2lzdGVy
ZWRBdEluZGV4KHNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VUVHlwZVVSTCwgMCk7Cisg
ICAgY2hlY2tUeXBlSWRlbnRpZmllcklzUmVnaXN0ZXJlZEF0SW5kZXgoc2ltdWxhdG9yLmdldCgp
LCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVJMLCAwKTsKIH0KIAogVEVTVChEcmFnQW5k
RHJvcFRlc3RzLCBCYWNrZ3JvdW5kSW1hZ2VMaW5rVG9JbnB1dCkKQEAgLTUxNiw3ICs1MTYsNyBA
QCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEJhY2tncm91bmRJbWFnZUxpbmtUb0lucHV0KQogICAg
IEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6QCJkcmFnb3Zl
ciJdKTsKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0
OkAiZHJvcCJdKTsKICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dpbmcoQFsgbWFrZUNH
UmVjdFZhbHVlKDEwMSwgMjQxLCAyMDU3LCAyMzIpIF0sIFtzaW11bGF0b3IgZmluYWxTZWxlY3Rp
b25SZWN0c10pOwotICAgIGNoZWNrVHlwZUlkZW50aWZpZXJJc1JlZ2lzdGVyZWRBdEluZGV4KHNp
bXVsYXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VUVHlwZVVSTCwgMCk7CisgICAgY2hlY2tUeXBl
SWRlbnRpZmllcklzUmVnaXN0ZXJlZEF0SW5kZXgoc2ltdWxhdG9yLmdldCgpLCAoX19icmlkZ2Ug
TlNTdHJpbmcgKilrVVRUeXBlVVJMLCAwKTsKIH0KIAogVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBD
YW5QcmV2ZW50U3RhcnQpCkBAIC02MjcsNyArNjI3LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3Rz
LCBFeHRlcm5hbFNvdXJjZUpTT05Ub0ZpbGVJbnB1dCkKIAogICAgIGF1dG8gc2ltdWxhdGVkSlNP
Tkl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwog
ICAgIE5TRGF0YSAqanNvbkRhdGEgPSBbQCJ7IFwiZm9vXCI6IFwiYmFyXCIsICBcImJhclwiOiBc
ImJhelwiIH0iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBb
c2ltdWxhdGVkSlNPTkl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5
cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVKU09OIHdpdGhEYXRhOmpzb25EYXRhXTsK
KyAgICBbc2ltdWxhdGVkSlNPTkl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlv
bkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVKU09OIHdpdGhE
YXRhOmpzb25EYXRhXTsKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmRE
cm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAg
IFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIHNpbXVsYXRlZEpTT05JdGVt
UHJvdmlkZXIuZ2V0KCkgXV07CkBAIC02NDMsNyArNjQzLDcgQEAgVEVTVChEcmFnQW5kRHJvcFRl
c3RzLCBFeHRlcm5hbFNvdXJjZUltYWdlVG9GaWxlSW5wdXQpCiAKICAgICBhdXRvIHNpbXVsYXRl
ZEltYWdlSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgTlNEYXRhICppbWFnZURhdGEgPSBVSUltYWdlSlBFR1JlcHJlc2VudGF0aW9uKHRl
c3RJY29uSW1hZ2UoKSwgMC41KTsKLSAgICBbc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgcmVn
aXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRU
eXBlSlBFRyB3aXRoRGF0YTppbWFnZURhdGFdOworICAgIFtzaW11bGF0ZWRJbWFnZUl0ZW1Qcm92
aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRn
ZSBOU1N0cmluZyAqKWtVVFR5cGVKUEVHIHdpdGhEYXRhOmltYWdlRGF0YV07CiAKICAgICBhdXRv
IHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdp
dGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKICAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRl
bVByb3ZpZGVyczpAWyBzaW11bGF0ZWRJbWFnZUl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKQEAgLTY2
MCw3ICs2NjAsNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNlSFRNTFRv
VXBsb2FkQXJlYSkKIAogICAgIGF1dG8gc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciA9IGFkb3B0
TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAgIE5TRGF0YSAqaHRtbERhdGEg
PSBbQCI8Ym9keSBjb250ZW50ZWRpdGFibGU+PC9ib2R5PiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddOwotICAgIFtzaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyIHJlZ2lz
dGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICopa1VUVHlw
ZUhUTUwgd2l0aERhdGE6aHRtbERhdGFdOworICAgIFtzaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVy
IHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5T
U3RyaW5nICopa1VUVHlwZUhUTUwgd2l0aERhdGE6aHRtbERhdGFdOwogICAgIFtzaW11bGF0ZWRI
VE1MSXRlbVByb3ZpZGVyIHNldFN1Z2dlc3RlZE5hbWU6QCJpbmRleC5odG1sIl07CiAKICAgICBh
dXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5p
dFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKQEAgLTY4MCw3ICs2ODAsNyBAQCBURVNUKERy
YWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNlTW92ZU9wZXJhdGlvbk5vdEFsbG93ZWQpCiAK
ICAgICBhdXRvIHNpbXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJv
dmlkZXIgYWxsb2NdIGluaXRdKTsKICAgICBOU0RhdGEgKmh0bWxEYXRhID0gW0AiPGJvZHkgY29u
dGVudGVkaXRhYmxlPjwvYm9keT4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXTsKLSAgICBbc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNl
bnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhEYXRh
Omh0bWxEYXRhXTsKKyAgICBbc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFS
ZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVIVE1MIHdpdGhEYXRhOmh0bWxEYXRhXTsKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHRO
UyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5n
ZXQoKV0pOwogICAgIFtzaW11bGF0b3Igc2V0U2hvdWxkQWxsb3dNb3ZlT3BlcmF0aW9uOk5PXTsK
QEAgLTY5Niw3ICs2OTYsNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNl
WklQQXJjaGl2ZUFuZFVSTFRvU2luZ2xlRmlsZUlucHV0KQogICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImZpbGUtdXBsb2FkaW5nIl07CiAKICAgICBhdXRvIGFy
Y2hpdmVQcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwot
ICAgIFthcmNoaXZlUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRl
bnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlWmlwQXJjaGl2ZSB3aXRoRGF0YTp0ZXN0WklQQXJj
aGl2ZSgpXTsKKyAgICBbYXJjaGl2ZVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9u
Rm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVppcEFyY2hpdmUg
d2l0aERhdGE6dGVzdFpJUEFyY2hpdmUoKV07CiAKICAgICBhdXRvIHVybFByb3ZpZGVyID0gYWRv
cHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW3VybFByb3ZpZGVyIHJl
Z2lzdGVyT2JqZWN0OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnIl0g
dmlzaWJpbGl0eTpVSUl0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uT3B0aW9uc1Zpc2liaWxpdHlB
bGxdOwpAQCAtNzE1LDcgKzcxNSw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxT
b3VyY2VaSVBBcmNoaXZlVG9VcGxvYWRBcmVhKQogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkVGVzdFBhZ2VOYW1lZDpAImZpbGUtdXBsb2FkaW5nIl07CiAKICAgICBhdXRvIGl0ZW1Qcm92
aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwotICAgIFtpdGVt
UHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNT
dHJpbmcgKilrVVRUeXBlWmlwQXJjaGl2ZSB3aXRoRGF0YTp0ZXN0WklQQXJjaGl2ZSgpXTsKKyAg
ICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZp
ZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVppcEFyY2hpdmUgd2l0aERhdGE6dGVzdFpJ
UEFyY2hpdmUoKV07CiAKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJv
cFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKICAgICBb
c2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkg
XV07CkBAIC03MzIsMTEgKzczMiwxMSBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFs
U291cmNlSW1hZ2VBbmRIVE1MVG9TaW5nbGVGaWxlSW5wdXQpCiAKICAgICBhdXRvIHNpbXVsYXRl
ZEltYWdlSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgTlNEYXRhICppbWFnZURhdGEgPSBVSUltYWdlSlBFR1JlcHJlc2VudGF0aW9uKHRl
c3RJY29uSW1hZ2UoKSwgMC41KTsKLSAgICBbc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgcmVn
aXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRU
eXBlSlBFRyB3aXRoRGF0YTppbWFnZURhdGFdOworICAgIFtzaW11bGF0ZWRJbWFnZUl0ZW1Qcm92
aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRn
ZSBOU1N0cmluZyAqKWtVVFR5cGVKUEVHIHdpdGhEYXRhOmltYWdlRGF0YV07CiAKICAgICBhdXRv
IHNpbXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxs
b2NdIGluaXRdKTsKICAgICBOU0RhdGEgKmh0bWxEYXRhID0gW0AiPGJvZHkgY29udGVudGVkaXRh
YmxlPjwvYm9keT4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAg
ICBbc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZv
clR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhEYXRhOmh0bWxEYXRh
XTsKKyAgICBbc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRh
dGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdp
dGhEYXRhOmh0bWxEYXRhXTsKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdB
bmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwog
ICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIHNpbXVsYXRlZEhUTUxJ
dGVtUHJvdmlkZXIuZ2V0KCksIHNpbXVsYXRlZEltYWdlSXRlbVByb3ZpZGVyLmdldCgpIF1dOwpA
QCAtNzU0LDExICs3NTQsMTEgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJj
ZUltYWdlQW5kSFRNTFRvTXVsdGlwbGVGaWxlSW5wdXQpCiAKICAgICBhdXRvIHNpbXVsYXRlZElt
YWdlSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7
CiAgICAgTlNEYXRhICppbWFnZURhdGEgPSBVSUltYWdlSlBFR1JlcHJlc2VudGF0aW9uKHRlc3RJ
Y29uSW1hZ2UoKSwgMC41KTsKLSAgICBbc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgcmVnaXN0
ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBl
SlBFRyB3aXRoRGF0YTppbWFnZURhdGFdOworICAgIFtzaW11bGF0ZWRJbWFnZUl0ZW1Qcm92aWRl
ciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBO
U1N0cmluZyAqKWtVVFR5cGVKUEVHIHdpdGhEYXRhOmltYWdlRGF0YV07CiAKICAgICBhdXRvIHNp
bXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2Nd
IGluaXRdKTsKICAgICBOU0RhdGEgKmh0bWxEYXRhID0gW0AiPGJvZHkgY29udGVudGVkaXRhYmxl
PjwvYm9keT4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBb
c2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5
cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhEYXRhOmh0bWxEYXRhXTsK
KyAgICBbc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlv
bkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhE
YXRhOmh0bWxEYXRhXTsKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmRE
cm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAg
IFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIHNpbXVsYXRlZEhUTUxJdGVt
UHJvdmlkZXIuZ2V0KCksIHNpbXVsYXRlZEltYWdlSXRlbVByb3ZpZGVyLmdldCgpIF1dOwpAQCAt
Nzc1LDE1ICs3NzUsMTUgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZUlt
YWdlQW5kSFRNTFRvVXBsb2FkQXJlYSkKIAogICAgIGF1dG8gc2ltdWxhdGVkSW1hZ2VJdGVtUHJv
dmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKICAgICBOU0Rh
dGEgKmltYWdlRGF0YSA9IFVJSW1hZ2VKUEVHUmVwcmVzZW50YXRpb24odGVzdEljb25JbWFnZSgp
LCAwLjUpOwotICAgIFtzaW11bGF0ZWRJbWFnZUl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXBy
ZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVKUEVHIHdpdGhE
YXRhOmltYWdlRGF0YV07CisgICAgW3NpbXVsYXRlZEltYWdlSXRlbVByb3ZpZGVyIHJlZ2lzdGVy
RGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICop
a1VUVHlwZUpQRUcgd2l0aERhdGE6aW1hZ2VEYXRhXTsKIAogICAgIGF1dG8gZmlyc3RTaW11bGF0
ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgTlNEYXRhICpmaXJzdEhUTUxEYXRhID0gW0AiPGJvZHkgY29udGVudGVkaXRhYmxl
PjwvYm9keT4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBb
Zmlyc3RTaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9u
Rm9yVHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICopa1VUVHlwZUhUTUwgd2l0aERhdGE6Zmlyc3RI
VE1MRGF0YV07CisgICAgW2ZpcnN0U2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciByZWdpc3RlckRh
dGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtV
VFR5cGVIVE1MIHdpdGhEYXRhOmZpcnN0SFRNTERhdGFdOwogCiAgICAgYXV0byBzZWNvbmRTaW11
bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBp
bml0XSk7CiAgICAgTlNEYXRhICpzZWNvbmRIVE1MRGF0YSA9IFtAIjxodG1sPjxib2R5PmhlbGxv
IHdvcmxkPC9ib2R5PjwvaHRtbD4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXTsKLSAgICBbc2Vjb25kU2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFS
ZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdp
dGhEYXRhOnNlY29uZEhUTUxEYXRhXTsKKyAgICBbc2Vjb25kU2ltdWxhdGVkSFRNTEl0ZW1Qcm92
aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRn
ZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhEYXRhOnNlY29uZEhUTUxEYXRhXTsKIAogICAg
IGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBp
bml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAgIFtzaW11bGF0b3Igc2V0U2hvdWxk
QWxsb3dNb3ZlT3BlcmF0aW9uOk5PXTsKQEAgLTgwMyw3ICs4MDMsNyBAQCBURVNUKERyYWdBbmRE
cm9wVGVzdHMsIEV4dGVybmFsU291cmNlSFRNTFRvQ29udGVudEVkaXRhYmxlKQogICAgIGF1dG8g
c2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0
aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRvcHRO
UyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEYXRhICpodG1sRGF0YSA9
IFtAIjxoMT5UaGlzIGlzIGEgdGVzdDwvaDE+IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ107Ci0gICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlv
bkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhEYXRhOmh0bWxE
YXRhXTsKKyAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlw
ZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUwgd2l0aERhdGE6aHRt
bERhdGFdOwogICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGl0ZW1Q
cm92aWRlci5nZXQoKSBdXTsKICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMzAw
LCA0MDApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CiAKQEAgLTk4NywxMSArOTg3LDExIEBA
IFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VPdmVycmlkZURyb3BGaWxlVXBs
b2FkKQogCiAgICAgYXV0byBzaW11bGF0ZWRJbWFnZUl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tV
SUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAgIE5TRGF0YSAqaW1hZ2VEYXRhID0gVUlJ
bWFnZUpQRUdSZXByZXNlbnRhdGlvbih0ZXN0SWNvbkltYWdlKCksIDAuNSk7Ci0gICAgW3NpbXVs
YXRlZEltYWdlSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlk
ZW50aWZpZXI6KE5TU3RyaW5nICopa1VUVHlwZUpQRUcgd2l0aERhdGE6aW1hZ2VEYXRhXTsKKyAg
ICBbc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25G
b3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSlBFRyB3aXRoRGF0
YTppbWFnZURhdGFdOwogCiAgICAgYXV0byBzaW11bGF0ZWRIVE1MSXRlbVByb3ZpZGVyID0gYWRv
cHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEYXRhICpmaXJzdEhU
TUxEYXRhID0gW0AiPGJvZHkgY29udGVudGVkaXRhYmxlPjwvYm9keT4iIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBbc2ltdWxhdGVkSFRNTEl0ZW1Qcm92aWRl
ciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAq
KWtVVFR5cGVIVE1MIHdpdGhEYXRhOmZpcnN0SFRNTERhdGFdOworICAgIFtzaW11bGF0ZWRIVE1M
SXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6
KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUwgd2l0aERhdGE6Zmlyc3RIVE1MRGF0YV07
CiAgICAgW3NpbXVsYXRlZEhUTUxJdGVtUHJvdmlkZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9u
U3R5bGU6VUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFjaG1lbnRdOwogCiAgICAgYXV0
byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRX
aXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CkBAIC0xMDAwLDggKzEwMDAsOCBAQCBURVNUKERy
YWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNlT3ZlcnJpZGVEcm9wRmlsZVVwbG9hZCkKICAg
ICAgICAgRVhQRUNUX0VRKDJVTCwgc2Vzc2lvbi5pdGVtcy5jb3VudCk7CiAgICAgICAgIFVJRHJh
Z0l0ZW0gKmZpcnN0SXRlbSA9IHNlc3Npb24uaXRlbXNbMF07CiAgICAgICAgIFVJRHJhZ0l0ZW0g
KnNlY29uZEl0ZW0gPSBzZXNzaW9uLml0ZW1zWzFdOwotICAgICAgICBFWFBFQ1RfVFJVRShbZmly
c3RJdGVtLml0ZW1Qcm92aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzIGlzRXF1YWw6QFsg
KE5TU3RyaW5nICopa1VUVHlwZUpQRUcgXV0pOwotICAgICAgICBFWFBFQ1RfVFJVRShbc2Vjb25k
SXRlbS5pdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyBpc0VxdWFsOkBbIChO
U1N0cmluZyAqKWtVVFR5cGVIVE1MIF1dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW2ZpcnN0SXRl
bS5pdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyBpc0VxdWFsOkBbIChfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVKUEVHIF1dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Nl
Y29uZEl0ZW0uaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMgaXNFcXVhbDpA
WyAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRNTCBdXSk7CiAgICAgICAgIHJldHVybiBA
WyBzZWNvbmRJdGVtIF07CiAgICAgfV07CiAgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Q
cm92aWRlcnM6QFsgc2ltdWxhdGVkSW1hZ2VJdGVtUHJvdmlkZXIuZ2V0KCksIHNpbXVsYXRlZEhU
TUxJdGVtUHJvdmlkZXIuZ2V0KCkgXV07CkBAIC0xMDE4LDcgKzEwMTgsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPFRlc3RXS1dlYlZpZXc+IHNldFVwVGVzdFdlYlZpZXdGb3JEYXRhVHJhbnNmZXJJdGVt
cygpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50
cnkiXTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoV0tQcmVmZXJlbmNlc1JlZilbW3dlYlZp
ZXcgY29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAo
X19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVy
ZW5jZXNdOwogICAgIFdLUHJlZmVyZW5jZXNTZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQocHJl
ZmVyZW5jZXMsIHRydWUpOwogICAgIFdLUHJlZmVyZW5jZXNTZXREaXJlY3RvcnlVcGxvYWRFbmFi
bGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKIApAQCAtMTA0OSw3ICsxMDQ5LDcgQEAgVEVTVChEcmFn
QW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZURhdGFUcmFuc2Zlckl0ZW1HZXRGb2xkZXJBc0Vu
dHJ5KQogICAgIHJ1blRlc3RXaXRoVGVtcG9yYXJ5Rm9sZGVyKF4oTlNVUkwgKmZvbGRlclVSTCkg
ewogICAgICAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBh
bGxvY10gaW5pdF0pOwogICAgICAgICBbaXRlbVByb3ZpZGVyIHNldFN1Z2dlc3RlZE5hbWU6QCJz
b21lZGlyZWN0b3J5Il07Ci0gICAgICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJGaWxlUmVwcmVz
ZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlRm9sZGVyIGZpbGVP
cHRpb25zOjAgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0
eUFsbCBsb2FkSGFuZGxlcjpbY2FwdHVyZWRGb2xkZXJVUkwgPSByZXRhaW5QdHIoZm9sZGVyVVJM
KV0gKEZpbGVMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25IYW5kbGVyKSAtPiBOU1Byb2dy
ZXNzICogeworICAgICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRmlsZVJlcHJlc2VudGF0aW9u
Rm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZvbGRlciBmaWxl
T3B0aW9uczowIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxp
dHlBbGwgbG9hZEhhbmRsZXI6W2NhcHR1cmVkRm9sZGVyVVJMID0gcmV0YWluUHRyKGZvbGRlclVS
TCldIChGaWxlTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uSGFuZGxlcikgLT4gTlNQcm9n
cmVzcyAqIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNhcHR1cmVkRm9sZGVyVVJM
LmdldCgpLCBOTywgbmlsKTsKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIH1dOwpA
QCAtMTA3OSw3ICsxMDc5LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJj
ZURhdGFUcmFuc2Zlckl0ZW1HZXRQbGFpblRleHRGaWxlQXNFbnRyeSkKICAgICBydW5UZXN0V2l0
aFRlbXBvcmFyeVRleHRGaWxlKF4oTlNVUkwgKmZpbGVVUkwpIHsKICAgICAgICAgYXV0byBpdGVt
UHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKICAgICAg
ICAgW2l0ZW1Qcm92aWRlciBzZXRTdWdnZXN0ZWROYW1lOkAiZm9vIl07Ci0gICAgICAgIFtpdGVt
UHJvdmlkZXIgcmVnaXN0ZXJGaWxlUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNT
dHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCBmaWxlT3B0aW9uczowIHZpc2liaWxpdHk6TlNJ
dGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6W2NhcHR1
cmVkRmlsZVVSTCA9IHJldGFpblB0cihmaWxlVVJMKV0oRmlsZUxvYWRDb21wbGV0aW9uQmxvY2sg
Y29tcGxldGlvbkhhbmRsZXIpIC0+IE5TUHJvZ3Jlc3MgKiB7CisgICAgICAgIFtpdGVtUHJvdmlk
ZXIgcmVnaXN0ZXJGaWxlUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2Ug
TlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCBmaWxlT3B0aW9uczowIHZpc2liaWxpdHk6
TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6W2Nh
cHR1cmVkRmlsZVVSTCA9IHJldGFpblB0cihmaWxlVVJMKV0oRmlsZUxvYWRDb21wbGV0aW9uQmxv
Y2sgY29tcGxldGlvbkhhbmRsZXIpIC0+IE5TUHJvZ3Jlc3MgKiB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjYXB0dXJlZEZpbGVVUkwuZ2V0KCksIE5PLCBuaWwpOwogICAgICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICAgICAgfV07CkBAIC0xMTA2LDcgKzExMDYsNyBAQCBURVNUKERy
YWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNlT3ZlcnJpZGVEcm9wSW5zZXJ0VVJMKQogICAg
IHsKICAgICAgICAgTlNNdXRhYmxlQXJyYXk8VUlEcmFnSXRlbSAqPiAqYWxsb3dlZEl0ZW1zID0g
W05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICAgICAgZm9yIChVSURyYWdJdGVtICppdGVtIGlu
IHNlc3Npb24uaXRlbXMpIHsKLSAgICAgICAgICAgIGlmIChbaXRlbS5pdGVtUHJvdmlkZXIucmVn
aXN0ZXJlZFR5cGVJZGVudGlmaWVycyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilrVVRUeXBl
VVJMXSkKKyAgICAgICAgICAgIGlmIChbaXRlbS5pdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJ
ZGVudGlmaWVycyBjb250YWluc09iamVjdDooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVJM
XSkKICAgICAgICAgICAgICAgICBbYWxsb3dlZEl0ZW1zIGFkZE9iamVjdDppdGVtXTsKICAgICAg
ICAgfQogICAgICAgICBFWFBFQ1RfRVEoMVVMLCBhbGxvd2VkSXRlbXMuY291bnQpOwpAQCAtMTEy
OSw3ICsxMTI5LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBPdmVycmlkZURyb3ApCiAgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CiAKICAg
ICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBh
bGxvY10gaW5pdF0pOwotICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVw
cmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlSFRNTCB3aXRo
RGF0YTpbQCI8Ym9keT48L2JvZHk+IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ11dOworICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50
YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlSFRNTCB3
aXRoRGF0YTpbQCI8Ym9keT48L2JvZHk+IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ11dOwogCiAgICAgX19ibG9jayBib29sIGZpbmlzaGVkTG9hZGluZ0RhdGEgPSBmYWxz
ZTsKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBh
bGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKQEAgLTExNDEsNyArMTE0MSw3
IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgT3ZlcnJpZGVEcm9wKQogICAgIH1dOwogICAgIFtz
aW11bGF0b3Igc2V0RHJvcENvbXBsZXRpb25CbG9jazpeKEJPT0wgaGFuZGxlZCwgTlNBcnJheSAq
aXRlbVByb3ZpZGVycykgewogICAgICAgICBFWFBFQ1RfRkFMU0UoaGFuZGxlZCk7Ci0gICAgICAg
IFtpdGVtUHJvdmlkZXJzLmZpcnN0T2JqZWN0IGxvYWREYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBl
SWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlSFRNTCBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
RGF0YSAqZGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgW2l0ZW1Qcm92aWRlcnMuZmly
c3RPYmplY3QgbG9hZERhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRn
ZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpkYXRh
LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICAgICAgTlNTdHJpbmcgKnRleHQgPSBbW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddIGF1dG9yZWxlYXNlXTsKICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiPGJvZHk+PC9i
b2R5PiIsIHRleHQuVVRGOFN0cmluZyk7CiAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJv
cik7CkBAIC0xMTYyLDcgKzExNjIsNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEluamVjdGVk
QnVuZGxlT3ZlcnJpZGVQZXJmb3JtVHdvU3RlcERyb3ApCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpIl07
CiAKICAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92
aWRlciBhbGxvY10gaW5pdF0pOwotICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJE
YXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlVVRG
OFBsYWluVGV4dCBvcHRpb25zOm5pbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKFVJSXRlbVBy
b3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQorICAgIFtzaW11
bGF0ZWRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRp
ZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCBvcHRpb25zOm5p
bCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKFVJSXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0
aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQogICAgIHsKICAgICAgICAgY29tcGxldGlvbkJsb2Nr
KFtAIkhlbGxvIHdvcmxkIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10s
IG5pbCk7CiAgICAgICAgIHJldHVybiBbTlNQcm9ncmVzcyBkaXNjcmV0ZVByb2dyZXNzV2l0aFRv
dGFsVW5pdENvdW50OjEwMF07CkBAIC0xMTg1LDcgKzExODUsNyBAQCBURVNUKERyYWdBbmREcm9w
VGVzdHMsIEluamVjdGVkQnVuZGxlQWxsb3dQZXJmb3JtVHdvU3RlcERyb3ApCiAgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLnJlbW92ZUFs
bFJhbmdlcygpIl07CiAKICAgICBhdXRvIHNpbXVsYXRlZEl0ZW1Qcm92aWRlciA9IGFkb3B0TlMo
W1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwotICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlk
ZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcg
KilrVVRUeXBlVVRGOFBsYWluVGV4dCBvcHRpb25zOm5pbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVz
cyAqKFVJSXRlbVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2Nr
KQorICAgIFtzaW11bGF0ZWRJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25G
b3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4
dCBvcHRpb25zOm5pbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKFVJSXRlbVByb3ZpZGVyRGF0
YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQogICAgIHsKICAgICAgICAgY29t
cGxldGlvbkJsb2NrKFtAIkhlbGxvIHdvcmxkIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ10sIG5pbCk7CiAgICAgICAgIHJldHVybiBbTlNQcm9ncmVzcyBkaXNjcmV0ZVBy
b2dyZXNzV2l0aFRvdGFsVW5pdENvdW50OjEwMF07CkBAIC0xNDA2LDE0ICsxNDA2LDE0IEBAIFRF
U1QoRHJhZ0FuZERyb3BUZXN0cywgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZExvYWRpbmcpCiAK
ICAgICBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQgc2hhcmVkSW5zdGFuY2VdOwogICAgIGF1dG8gZmFzdEl0ZW0gPSBhZG9w
dE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbZmFzdEl0ZW0gcmVnaXN0
ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBl
VVRGOFBsYWluVGV4dCBvcHRpb25zOm5pbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKFVJSXRl
bVByb3ZpZGVyRGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQorICAgIFtm
YXN0SXRlbSByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IG9wdGlvbnM6bmlsIGxvYWRIYW5k
bGVyOl5OU1Byb2dyZXNzICooVUlJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25CbG9jayBj
b21wbGV0aW9uQmxvY2spCiAgICAgewogICAgICAgICBjb21wbGV0aW9uQmxvY2soW2Zhc3RTdHJp
bmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBuaWwpOwogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIH1dOwogCiAgICAgYXV0byBzbG93SXRlbSA9IGFkb3B0TlMoW1tV
SUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwotICAgIFtzbG93SXRlbSByZWdpc3RlckRhdGFS
ZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxh
aW5UZXh0IG9wdGlvbnM6bmlsIGxvYWRIYW5kbGVyOl5OU1Byb2dyZXNzICooVUlJdGVtUHJvdmlk
ZXJEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uQmxvY2spCisgICAgW3Nsb3dJdGVt
IHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5T
U3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQgb3B0aW9uczpuaWwgbG9hZEhhbmRsZXI6Xk5T
UHJvZ3Jlc3MgKihVSUl0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRp
b25CbG9jaykKICAgICB7CiAgICAgICAgIHNsZWVwKDJfcyk7CiAgICAgICAgIGNvbXBsZXRpb25C
bG9jayhbc2xvd1N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10s
IG5pbCk7CkBAIC0xNTIzLDE0ICsxNTIzLDE0IEBAIHN0YXRpYyBOU0RhdGEgKnRlc3RJY29uSW1h
Z2VEYXRhKCkKIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRGF0YVRyYW5zZmVyR2V0RGF0YVdoZW5E
cm9wcGluZ0ltYWdlQW5kTWFya3VwKQogewogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1
MDApXSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgo
V0tQcmVmZXJlbmNlc1JlZilbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcmVmZXJlbmNlcywgdHJ1
ZSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgoX19i
cmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcmVmZXJlbmNl
cywgdHJ1ZSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAi
RGF0YVRyYW5zZmVyIl07CiAKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5k
RHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKICAg
ICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5p
dF0pOwotICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBl
SWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlUE5HIHdpdGhEYXRhOnRlc3RJY29uSW1hZ2VE
YXRhKCldOworICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JU
eXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HIHdpdGhEYXRhOnRl
c3RJY29uSW1hZ2VEYXRhKCldOwogICAgIE5TU3RyaW5nICptYXJrdXBTdHJpbmcgPSBAIjxzY3Jp
cHQ+YmFyKCk8L3NjcmlwdD48c3Ryb25nIG9ubW91c2Vkb3duPWphdmFzY3JpcHQ6dm9pZCgwKT5I
RUxMTyBXT1JMRDwvc3Ryb25nPiI7Ci0gICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXBy
ZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVIVE1MIHdpdGhE
YXRhOlttYXJrdXBTdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
XTsKKyAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlk
ZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUhUTUwgd2l0aERhdGE6W21hcmt1
cFN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFtp
dGVtUHJvdmlkZXIgc2V0U3VnZ2VzdGVkTmFtZTpAImljb24iXTsKICAgICBbc2ltdWxhdG9yIHNl
dEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkgXV07CiAgICAgW3Np
bXVsYXRvciBydW5Gcm9tOkNHUG9pbnRaZXJvIHRvOkNHUG9pbnRNYWtlKDUwLCAxMDApXTsKQEAg
LTE2MTUsNyArMTYxNSw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRGF0YVRyYW5zZmVyR2V0
RGF0YVdoZW5Ecm9wcGluZ0ltYWdlV2l0aEZpbGVVUkwpCiAKICAgICBhdXRvIGl0ZW1Qcm92aWRl
ciA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAgIE5TVVJMICpp
Y29uVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdp
dGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il07Ci0gICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckZpbGVSZXByZXNlbnRhdGlvbkZvclR5cGVJ
ZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVQTkcgZmlsZU9wdGlvbnM6MCB2aXNpYmlsaXR5
Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOltw
cm90ZWN0ZWRJY29uVVJMID0gcmV0YWluUHRyKGljb25VUkwpXSAoRmlsZUxvYWRDb21wbGV0aW9u
QmxvY2sgY29tcGxldGlvbkhhbmRsZXIpIC0+IE5TUHJvZ3Jlc3MgKiB7CisgICAgW2l0ZW1Qcm92
aWRlciByZWdpc3RlckZpbGVSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRn
ZSBOU1N0cmluZyAqKWtVVFR5cGVQTkcgZmlsZU9wdGlvbnM6MCB2aXNpYmlsaXR5Ok5TSXRlbVBy
b3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOltwcm90ZWN0ZWRJ
Y29uVVJMID0gcmV0YWluUHRyKGljb25VUkwpXSAoRmlsZUxvYWRDb21wbGV0aW9uQmxvY2sgY29t
cGxldGlvbkhhbmRsZXIpIC0+IE5TUHJvZ3Jlc3MgKiB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHByb3RlY3RlZEljb25VUkwuZ2V0KCksIE5PLCBuaWwpOwogICAgICAgICByZXR1cm4gbmls
OwogICAgIH1dOwpAQCAtMTYzOCw3ICsxNjM4LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBE
YXRhVHJhbnNmZXJHZXREYXRhV2hlbkRyb3BwaW5nSW1hZ2VXaXRoSFRUUFVSTCkKICAgICBhdXRv
IHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdp
dGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKIAogICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRv
cHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW2l0ZW1Qcm92aWRlciBy
ZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtV
VFR5cGVKUEVHIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxp
dHlBbGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihEYXRhTG9hZENvbXBsZXRpb25CbG9jayBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2Vu
dGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUpQRUcg
dmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2Fk
SGFuZGxlcjpeTlNQcm9ncmVzcyAqKERhdGFMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25I
YW5kbGVyKQogICAgIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoVUlJbWFnZUpQRUdSZXBy
ZXNlbnRhdGlvbih0ZXN0SWNvbkltYWdlKCksIDAuNSksIG5pbCk7CiAgICAgICAgIHJldHVybiBu
aWw7CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIERhdGFUcmFu
c2ZlckdldERhdGFXaGVuRHJvcHBpbmdSZXNwZWN0c1ByZXNlbnRhdGlvblN0eWxlKQogCiAgICAg
cnVuVGVzdFdpdGhUZW1wb3JhcnlUZXh0RmlsZSheKE5TVVJMICpmaWxlVVJMKSB7CiAgICAgICAg
IGF1dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0
XSk7Ci0gICAgICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJGaWxlUmVwcmVzZW50YXRpb25Gb3JU
eXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCBmaWxlT3B0aW9u
czowIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwg
bG9hZEhhbmRsZXI6W3Byb3RlY3RlZEZpbGVVUkwgPSByZXRhaW5QdHIoZmlsZVVSTCldIChGaWxl
TG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uSGFuZGxlcikgLT4gTlNQcm9ncmVzcyAqIHsK
KyAgICAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckZpbGVSZXByZXNlbnRhdGlvbkZvclR5cGVJ
ZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IGZpbGVP
cHRpb25zOjAgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0
eUFsbCBsb2FkSGFuZGxlcjpbcHJvdGVjdGVkRmlsZVVSTCA9IHJldGFpblB0cihmaWxlVVJMKV0g
KEZpbGVMb2FkQ29tcGxldGlvbkJsb2NrIGNvbXBsZXRpb25IYW5kbGVyKSAtPiBOU1Byb2dyZXNz
ICogewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocHJvdGVjdGVkRmlsZVVSTC5nZXQo
KSwgTk8sIG5pbCk7CiAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICB9XTsKQEAgLTE3
NTksNyArMTc1OSw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRGF0YVRyYW5zZmVyR2V0RGF0
YUNhbm5vdFJlYWRQcml2YXRlQXJiaXRyYXJ5VHlwZXMpCiAgICAgYXV0byBzaW11bGF0b3IgPSBh
ZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJW
aWV3LmdldCgpXSk7CiAKICAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Q
cm92aWRlciBhbGxvY10gaW5pdF0pOwotICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVw
cmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlTVAzIHZpc2li
aWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRs
ZXI6Xk5TUHJvZ3Jlc3MgKihEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlk
ZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZU1QMyB2aXNpYmlsaXR5Ok5TSXRl
bVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOl5OU1Byb2dy
ZXNzICooRGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbQCJ0aGlzIGlzIGEgdGVzdCIgZGF0YVVzaW5nRW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBuaWwpOwogICAgICAgICByZXR1cm4gbmlsOwpA
QCAtMTc5Myw3ICsxNzkzLDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNmZXJT
ZXREYXRhVmFsaWRVUkwpCiAgICAgewogICAgICAgICBFWFBFQ1RfRVEoMVVMLCBzZXNzaW9uLml0
ZW1zLmNvdW50KTsKICAgICAgICAgYXV0byAqaXRlbSA9IHNlc3Npb24uaXRlbXNbMF0uaXRlbVBy
b3ZpZGVyOwotICAgICAgICBFWFBFQ1RfVFJVRShbaXRlbS5yZWdpc3RlcmVkVHlwZUlkZW50aWZp
ZXJzIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKWtVVFR5cGVVUkxdKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoW2l0ZW0ucmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyBjb250YWluc09iamVjdDoo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVJMXSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtp
dGVtIGNhbkxvYWRPYmplY3RPZkNsYXNzOiBbTlNVUkwgY2xhc3NdXSk7CiAgICAgICAgIFtpdGVt
IGxvYWRPYmplY3RPZkNsYXNzOltOU1VSTCBjbGFzc10gY29tcGxldGlvbkhhbmRsZXI6XihpZDxO
U0l0ZW1Qcm92aWRlclJlYWRpbmc+IHVybCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgICAg
IEVYUEVDVF9UUlVFKFt1cmwgaXNLaW5kT2ZDbGFzczogW05TVVJMIGNsYXNzXV0pOwpAQCAtMTgz
MCw3ICsxODMwLDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNmZXJTZXREYXRh
VW5lc2NhcGVkVVJMKQogICAgIHsKICAgICAgICAgRVhQRUNUX0VRKDFVTCwgc2Vzc2lvbi5pdGVt
cy5jb3VudCk7CiAgICAgICAgIGF1dG8gKml0ZW0gPSBzZXNzaW9uLml0ZW1zWzBdLml0ZW1Qcm92
aWRlcjsKLSAgICAgICAgRVhQRUNUX1RSVUUoW2l0ZW0ucmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVy
cyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilrVVRUeXBlVVJMXSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKFtpdGVtLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMgY29udGFpbnNPYmplY3Q6KF9f
YnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVSTF0pOwogICAgICAgICBFWFBFQ1RfVFJVRShbaXRl
bSBjYW5Mb2FkT2JqZWN0T2ZDbGFzczogW05TVVJMIGNsYXNzXV0pOwogICAgICAgICBbaXRlbSBs
b2FkT2JqZWN0T2ZDbGFzczpbTlNVUkwgY2xhc3NdIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQ8TlNJ
dGVtUHJvdmlkZXJSZWFkaW5nPiB1cmwsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShbdXJsIGlzS2luZE9mQ2xhc3M6IFtOU1VSTCBjbGFzc11dKTsKQEAgLTE4NjQs
NyArMTg2NCw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRGF0YVRyYW5zZmVyU2V0RGF0YUlu
dmFsaWRVUkwpCiAKICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoNTAsIDIyNSkg
dG86Q0dQb2ludE1ha2UoNTAsIDM3NSldOwogICAgIE5TQXJyYXkgKnJlZ2lzdGVyZWRUeXBlcyA9
IFtzaW11bGF0b3IuZ2V0KCkuc291cmNlSXRlbVByb3ZpZGVycy5maXJzdE9iamVjdCByZWdpc3Rl
cmVkVHlwZUlkZW50aWZpZXJzXTsKLSAgICBFWFBFQ1RfRkFMU0UoW3JlZ2lzdGVyZWRUeXBlcyBj
b250YWluc09iamVjdDooTlNTdHJpbmcgKilrVVRUeXBlVVJMXSk7CisgICAgRVhQRUNUX0ZBTFNF
KFtyZWdpc3RlcmVkVHlwZXMgY29udGFpbnNPYmplY3Q6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VU
VHlwZVVSTF0pOwogICAgIGNoZWNrSlNPTldpdGhMb2dnaW5nKFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJvdXRwdXQudmFsdWUiXSwgQHsKICAgICAgICAgQCJkcmFnb3Zl
ciI6IEB7CiAgICAgICAgICAgICBAInRleHQvdXJpLWxpc3QiOiBAIiIsCkBAIC0xODkxLDggKzE4
OTEsOCBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIERhdGFUcmFuc2ZlclNhbml0aXplSFRNTCkK
ICAgICB7CiAgICAgICAgIEVYUEVDVF9FUSgxVUwsIHNlc3Npb24uaXRlbXMuY291bnQpOwogICAg
ICAgICBhdXRvICppdGVtID0gc2Vzc2lvbi5pdGVtc1swXS5pdGVtUHJvdmlkZXI7Ci0gICAgICAg
IEVYUEVDVF9UUlVFKFtpdGVtLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMgY29udGFpbnNPYmpl
Y3Q6KE5TU3RyaW5nICopa1VUVHlwZUhUTUxdKTsKLSAgICAgICAgW2l0ZW0gbG9hZERhdGFSZXBy
ZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVIVE1MIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNEYXRhICpkYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBF
WFBFQ1RfVFJVRShbaXRlbS5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzIGNvbnRhaW5zT2JqZWN0
OihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVIVE1MXSk7CisgICAgICAgIFtpdGVtIGxvYWRE
YXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooX19icmlkZ2UgTlNTdHJpbmcgKilr
VVRUeXBlSFRNTCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqZGF0YSwgTlNFcnJvciAqZXJy
b3IpIHsKICAgICAgICAgICAgIE5TU3RyaW5nICptYXJrdXAgPSBbW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XSBhdXRvcmVsZWFzZV07CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbbWFya3VwIGNvbnRhaW5z
U3RyaW5nOkAiaGVsbG8iXSk7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbbWFya3VwIGNvbnRh
aW5zU3RyaW5nOkAiLCB3b3JsZCJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL1VJUGFzdGVib2FyZFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9pb3MvVUlQYXN0ZWJvYXJkVGVzdHMubW0KaW5kZXggMWMxOWEzNzViOTEzNDliZWQ2Zjk4OGU4
Y2I5OGU5NmI2NmI2N2JiMi4uZmNmNzUxODg1ZjM5ZmU5YzI5ZjJiMGNmMTgwMmYyMmI2OTJlOTRl
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvVUlQYXN0ZWJvYXJk
VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvVUlQYXN0ZWJvYXJk
VGVzdHMubW0KQEAgLTE3NCw3ICsxNzQsNyBAQCBURVNUKFVJUGFzdGVib2FyZFRlc3RzLCBEYXRh
VHJhbnNmZXJHZXREYXRhV2hlblBhc3RpbmdQbGF0Zm9ybVJlcHJlc2VudGF0aW9ucykKICAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IHRlc3RQbGFpblRleHRTdHJpbmcgPSBAIldlYktpdCI7CiAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiB0ZXN0TWFya3VwU3RyaW5nID0gQCI8YSBocmVmPVwiaHR0cHM6
Ly93d3cud2Via2l0Lm9yZy9cIj5UaGUgV2ViS2l0IFByb2plY3Q8L2E+IjsKICAgICBhdXRvIGl0
ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwotICAg
IFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmll
cjooTlNTdHJpbmcgKilrVVRUeXBlSFRNTCB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVz
ZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOl5OU1Byb2dyZXNzICooRGF0YUxvYWRD
b21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkhhbmRsZXIpCisgICAgW2l0ZW1Qcm92aWRlciByZWdp
c3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtVVFR5cGVIVE1MIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZp
c2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihEYXRhTG9hZENvbXBsZXRpb25C
bG9jayBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFt0ZXN0TWFya3VwU3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XSwgbmlsKTsKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTE5OSwxMSArMTk5LDExIEBAIFRFU1Qo
VUlQYXN0ZWJvYXJkVGVzdHMsIERhdGFUcmFuc2ZlckdldERhdGFXaGVuUGFzdGluZ0ltYWdlQW5k
VGV4dCkKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQYXN0ZWJvYXJkVGVzdHMo
QCJEYXRhVHJhbnNmZXIiKTsKICAgICBhdXRvIGNvcGllZFRleHQgPSByZXRhaW5QdHIoQCJBcHBs
ZSBJbmMuIik7CiAgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlk
ZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2Vu
dGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICopa1VUVHlwZVBORyB2aXNpYmlsaXR5
Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOltd
IChEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uSGFuZGxlcikgLT4gTlNQcm9ncmVz
cyAqIHsKKyAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlw
ZUlkZW50aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBORyB2aXNpYmlsaXR5Ok5T
SXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOltdIChE
YXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uSGFuZGxlcikgLT4gTlNQcm9ncmVzcyAq
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZV
Ukw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhFeHRl
bnNpb246QCJwbmciIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dLCBu
aWwpOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH1dOwotICAgIFtpdGVtUHJvdmlkZXIgcmVn
aXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRU
eXBlVVRGOFBsYWluVGV4dCB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25W
aXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOltjb3BpZWRUZXh0XSAoRGF0YUxvYWRDb21wbGV0aW9u
QmxvY2sgY29tcGxldGlvbkhhbmRsZXIpIC0+IE5TUHJvZ3Jlc3MgKiB7CisgICAgW2l0ZW1Qcm92
aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihfX2JyaWRn
ZSBOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlk
ZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6W2NvcGllZFRleHRdIChE
YXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uSGFuZGxlcikgLT4gTlNQcm9ncmVzcyAq
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW2NvcGllZFRleHQgZGF0YVVzaW5nRW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBuaWwpOwogICAgICAgICByZXR1cm4gbmlsOwogICAg
IH1dOwpAQCAtMjM4LDcgKzIzOCw3IEBAIFRFU1QoVUlQYXN0ZWJvYXJkVGVzdHMsIERhdGFUcmFu
c2ZlclNldERhdGFDYW5ub3RXcml0ZVBsYXRmb3JtVHlwZXMpCiAgICAgfSk7CiAKICAgICAvLyBN
b3N0IGltcG9ydGFudGx5LCB0aGUgc3lzdGVtIHBhc3RlYm9hcmQgc2hvdWxkIG5vdCBjb250YWlu
IHRoZSBQREYgVVRJLgotICAgIE5TRGF0YSAqcGRmRGF0YSA9IFtbVUlQYXN0ZWJvYXJkIGdlbmVy
YWxQYXN0ZWJvYXJkXSBkYXRhRm9yUGFzdGVib2FyZFR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVBE
Rl07CisgICAgTlNEYXRhICpwZGZEYXRhID0gW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9h
cmRdIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUERG
XTsKICAgICBFWFBFQ1RfRVEoMFVMLCBwZGZEYXRhLmxlbmd0aCk7CiAKICAgICAvLyBIb3dldmVy
LCB0aGUgc3lzdGVtIHBhc3RlYm9hcmQgc2hvdWxkIGNvbnRhaW4gYSBwbGFpbiB0ZXh0IHN0cmlu
Zy4KQEAgLTI0OSw3ICsyNDksNyBAQCBURVNUKFVJUGFzdGVib2FyZFRlc3RzLCBEYXRhVHJhbnNm
ZXJHZXREYXRhQ2Fubm90UmVhZEFyYml0cmFyeVBsYXRmb3JtVHlwZXMpCiB7CiAgICAgYXV0byB3
ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yUGFzdGVib2FyZFRlc3RzKEAiZHVtcC1kYXRhdHJhbnNm
ZXItdHlwZXMiKTsKICAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92
aWRlciBhbGxvY10gaW5pdF0pOwotICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVz
ZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlTVAzIHZpc2liaWxp
dHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6
Xk5TUHJvZ3Jlc3MgKihEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50
aWZpZXI6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZU1QMyB2aXNpYmlsaXR5Ok5TSXRlbVBy
b3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOl5OU1Byb2dyZXNz
ICooRGF0YUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihbQCJ0aGlzIGlzIGEgdGVzdCIgZGF0YVVzaW5nRW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBuaWwpOwogICAgICAgICByZXR1cm4gbmlsOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvUGxhdGZvcm1VdGlsaXRpZXNNYWMubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVV0aWxpdGllc01hYy5tbQppbmRleCBh
MGM0MmU3ODliNDQwY2Q4MTNiNjdmZDIzNmU5YTg5YTZlZjI5MzAwLi43OWE0N2NlNjU0OWE0OTUw
MjkzMmZkMjdhMDAyY2M5MjYwMTNkZmJkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L21hYy9QbGF0Zm9ybVV0aWxpdGllc01hYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21h
Yy9QbGF0Zm9ybVV0aWxpdGllc01hYy5tbQpAQCAtNDAsMjUgKzQwLDI1IEBAIG5hbWVzcGFjZSBV
dGlsIHsKIFdLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpCiB7CiAgICAgTlNT
dHJpbmcgKm5zU3RyaW5nID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlUGF0aF0gc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5qZWN0ZWRCdW5kbGVUZXN0V2ViS2l0QVBJ
LmJ1bmRsZSJdOwotICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJp
bmdSZWYpbnNTdHJpbmcpOworICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpbnNTdHJpbmcpOwogfQogCiBXS1VSTFJlZiBjcmVhdGVVUkxG
b3JSZXNvdXJjZShjb25zdCBjaGFyKiByZXNvdXJjZSwgY29uc3QgY2hhciogZXh0ZW5zaW9uKQog
ewogICAgIE5TVVJMICpuc1VSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOnJlc291cmNlXSB3aXRoRXh0ZW5zaW9u
OltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpleHRlbnNpb25dIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Ci0gICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aENG
VVJMKChDRlVSTFJlZiluc1VSTCk7CisgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aENGVVJMKChf
X2JyaWRnZSBDRlVSTFJlZiluc1VSTCk7CiB9CiAKIFdLVVJMUmVmIFVSTEZvck5vbkV4aXN0ZW50
UmVzb3VyY2UoKQogewogICAgIE5TVVJMICpuc1VSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
ZmlsZTovLy9kb2VzLW5vdC1leGlzdC5odG1sIl07Ci0gICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0
aENGVVJMKChDRlVSTFJlZiluc1VSTCk7CisgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aENGVVJM
KChfX2JyaWRnZSBDRlVSTFJlZiluc1VSTCk7CiB9CiAKIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBNSU1FVHlwZUZvcldLVVJMUmVzcG9uc2UoV0tVUkxSZXNwb25zZVJlZiB3a1Jlc3BvbnNlKQog
ewogICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoV0tVUkxS
ZXNwb25zZUNvcHlOU1VSTFJlc3BvbnNlKHdrUmVzcG9uc2UpKTsKLSAgICByZXR1cm4gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpW3Jlc3BvbnNlLmdldCgp
IE1JTUVUeXBlXSkpOworICAgIHJldHVybiBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aENGU3Ry
aW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilbcmVzcG9uc2UuZ2V0KCkgTUlNRVR5cGVdKSk7CiB9
CiAKIGJvb2wgaXNLZXlEb3duKFdLTmF0aXZlRXZlbnRQdHIgZXZlbnQpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL21hYy9XZWJLaXRBZ25vc3RpY1Rlc3QubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL21hYy9XZWJLaXRBZ25vc3RpY1Rlc3QubW0KaW5kZXggMDM4Y2VmMGE4YmM2MmQ0
M2ExNTA3YmEyY2EzODBmZTI5YjM1YTNmMy4uMzBhMWYyY2Y3ZmEyOTk2ODQwOWJhYjc5NTE3N2M3
ZjgyYmUwYTk4MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvV2ViS2l0QWdu
b3N0aWNUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1dlYktpdEFnbm9zdGlj
VGVzdC5tbQpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgV2ViS2l0QWdub3N0aWNUZXN0Ojpsb2Fk
VVJMKFdlYlZpZXcgKndlYlZpZXcsIE5TVVJMICp1cmwpCiB2b2lkIFdlYktpdEFnbm9zdGljVGVz
dDo6bG9hZFVSTChXS1ZpZXcgKnZpZXcsIE5TVVJMICp1cmwpCiB7CiAgICAgRVhQRUNUX0ZBTFNF
KGRpZEZpbmlzaExvYWQpOwotICAgIFdLUGFnZUxvYWRVUkwoW3ZpZXcgcGFnZVJlZl0sIGFkb3B0
V0soV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoKENGVVJMUmVmKXVybCkpLmdldCgpKTsKKyAgICBXS1Bh
Z2VMb2FkVVJMKFt2aWV3IHBhZ2VSZWZdLCBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aENGVVJMKChf
X2JyaWRnZSBDRlVSTFJlZil1cmwpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViS2l0QWdub3N0aWNU
ZXN0Ojpnb0JhY2soV2ViVmlldyAqd2ViVmlldykK
</data>

          </attachment>
      

    </bug>

</bugzilla>