<?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>209260</bug_id>
          
          <creation_ts>2020-03-18 17:25:51 -0700</creation_ts>
          <short_desc>Add SPI to move localStorage to a different domain</short_desc>
          <delta_ts>2020-05-01 16:38:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1631440</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-18 17:25:51 -0700</bug_when>
    <thetext>Add SPI to move localStorage to a different domain</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631441</commentid>
    <comment_count>1</comment_count>
      <attachid>393924</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-18 17:27:11 -0700</bug_when>
    <thetext>Created attachment 393924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631442</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-18 17:27:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/60285683&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632952</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-23 11:40:53 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/258862/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633378</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-24 10:37:55 -0700</bug_when>
    <thetext>Reverted in https://trac.webkit.org/changeset/258914/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648055</commentid>
    <comment_count>5</comment_count>
      <attachid>398238</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-01 14:19:36 -0700</bug_when>
    <thetext>Created attachment 398238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648058</commentid>
    <comment_count>6</comment_count>
      <attachid>398238</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-01 14:23:23 -0700</bug_when>
    <thetext>Comment on attachment 398238
Patch

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

Turns out this is better than alternatives.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:83
&gt; +- (void)_renameOrigin:(NSURL *)oldName to:(NSURL *)newName forDataOfTypes:(NSSet&lt;NSString *&gt; *)dataTypes completionHandler:(void (^)(void))completionHandler;

I changed these from NSStrings to NSURLs and _renameDomain to _renameOrigin

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2415
&gt; +            networkProcess-&gt;addSession(*this);

I also add the session if it hasn&apos;t been added yet so the use case works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648100</commentid>
    <comment_count>7</comment_count>
      <attachid>398247</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-01 15:17:54 -0700</bug_when>
    <thetext>Created attachment 398247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648142</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-01 16:38:28 -0700</bug_when>
    <thetext>Committed r261038: &lt;https://trac.webkit.org/changeset/261038&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398247.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393924</attachid>
            <date>2020-03-18 17:27:11 -0700</date>
            <delta_ts>2020-05-01 14:19:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209260-20200318172710.patch</filename>
            <type>text/plain</type>
            <size>21561</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTg2NTMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDIwLTAzLTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBt
b3ZlIGxvY2FsU3RvcmFnZSB0byBhIGRpZmZlcmVudCBkb21haW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2MAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjAyODU2ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ292ZXJlZCBieSBhbiBBUEkgdGVzdC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnJlbmFtZURvbWFpbkluV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFn
ZU5hbWVzcGFjZTo6cmVuYW1lRG9tYWluKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YTo6Y2xvc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWEuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnJlbmFtZURvbWFpbik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6cmVuYW1lRG9tYWluKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVuYW1lRG9tYWluOnRvOmZvckRhdGFPZlR5cGVzOmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZW5hbWVEb21haW5JbldlYnNpdGVEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpyZW5hbWVEb21haW5JbldlYnNpdGVEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDIwLTAzLTE4ICBNZWdhbiBHYXJkbmVyICA8
bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVubmVlZGVkIGFuZCBp
bmNvcnJlY3QgcmVzcG9uZHNUb1NlbGVjdG9yIGNoZWNrcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyNTg1NjQp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQzNyw2ICsyNDM3LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
c2V0UXVvdGEoUEFMOjpTZXMKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZW5hbWVEb21haW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBvbGROYW1lLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gYWdncmVnYXRvciA9IENhbGxi
YWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAg
IGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpKSB7
CisgICAgICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKQor
ICAgICAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+cmVuYW1lRG9tYWluKHNlc3Npb25JRCwg
b2xkTmFtZSwgbmV3TmFtZSwgW2FnZ3JlZ2F0b3IgPSBhZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKKyAgICB9Cit9CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpmb3JFYWNoU1dTZXJ2ZXIoY29uc3QgRnVuY3Rpb248dm9pZChTV1NlcnZlciYpPiYg
Y2FsbGJhY2spCiB7CkBAIC0yNjIzLDEyICsyNjMzLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmdldExvY2FsU3RvcmFnZU9yaWcKIHsKICAgICBpZiAoIW1fc3RvcmFnZU1hbmFnZXJTZXQtPmNv
bnRhaW5zKHNlc3Npb25JRCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgZ2V0IGxvY2Fs
IHN0b3JhZ2UgaW5mb3JtYXRpb24gZm9yIGFuIHVua25vd24gc2Vzc2lvbiIpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9z
dG9yYWdlTWFuYWdlclNldC0+Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhzZXNzaW9uSUQs
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYg
ZGV0YWlscykgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZGV0
YWlscykpOwotICAgIH0pOworICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldExvY2FsU3RvcmFn
ZU9yaWdpbkRldGFpbHMoc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZp
c2lvbiAyNTg1NjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZSgpOwogCiAgICAgdm9pZCBy
ZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgcmVuYW1lRG9tYWluSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgV2ViQ29yZTo6U1dTZXJ2ZXIqIHN3U2VydmVyRm9yU2Vzc2lvbklmRXhpc3RzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4gbV9zd1NlcnZlcnMuZ2V0KHNlc3Npb25JRCk7IH0K
QEAgLTUyOCw3ICs1MjksNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQs
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiBtX25ldHdv
cmtTdG9yYWdlU2Vzc2lvbnM7CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb247CiAK
LSAgICBSZWZQdHI8U3RvcmFnZU1hbmFnZXJTZXQ+IG1fc3RvcmFnZU1hbmFnZXJTZXQ7CisgICAg
UmVmPFN0b3JhZ2VNYW5hZ2VyU2V0PiBtX3N0b3JhZ2VNYW5hZ2VyU2V0OwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29h
KGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDI1ODU2NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIEZldGNoV2Vi
c2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVE
YXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBE
ZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJL
aXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdp
bnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IG9yaWdpbnMsIFZlY3RvcjxTdHJpbmc+IGNvb2tpZUhvc3ROYW1lcywgVmVjdG9yPFN0cmlu
Zz4gSFNUU0NhY2hlSG9zdE5hbWVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFJlbmFtZURv
bWFpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgb2xkTmFt
ZSwgU3RyaW5nIG5ld05hbWUsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vi
c2l0ZURhdGFUeXBlcykgLT4gKCkgQXN5bmMKIAogICAgIERvd25sb2FkUmVxdWVzdChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQogICAg
IFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9h
ZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0
aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VOYW1lc3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwCShyZXZpc2lvbiAyNTg1
NjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMzQgQEAgdm9pZCBM
b2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmNsZWFyQWxsU3RvcgogICAgICAgICBzdG9yYWdlQXJlYS0+
Y2xlYXIoKTsKIH0KIAordm9pZCBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OnJlbmFtZURvbWFpbihj
b25zdCBTdHJpbmcmIG9sZE5hbWUsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyKiB0cmFja2VyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOworCisgICAgc3RydWN0IE1vdmVSZWNvcmQgeworICAgICAgICBTZWN1cml0eU9yaWdpbkRh
dGEgZnJvbU9yaWdpbjsKKyAgICAgICAgU2VjdXJpdHlPcmlnaW5EYXRhIHRvT3JpZ2luOworICAg
IH07CisKKyAgICBWZWN0b3I8TW92ZVJlY29yZD4gbW92ZVJlY29yZHM7CisgICAgZm9yIChjb25z
dCBhdXRvJiBwYWlyIDogbV9zdG9yYWdlQXJlYU1hcCkgeworICAgICAgICBjb25zdCBhdXRvJiBm
cm9tT3JpZ2luID0gcGFpci5rZXk7CisgICAgICAgIGlmIChmcm9tT3JpZ2luLmhvc3QgPT0gb2xk
TmFtZSkgeworICAgICAgICAgICAgcGFpci52YWx1ZS0+c3luY1RvRGF0YWJhc2UoKTsKKyAgICAg
ICAgICAgIHBhaXIudmFsdWUtPmNsb3NlKCk7CisgICAgICAgICAgICBTZWN1cml0eU9yaWdpbkRh
dGEgdG9PcmlnaW4gPSBmcm9tT3JpZ2luOworICAgICAgICAgICAgdG9PcmlnaW4uaG9zdCA9IG5l
d05hbWU7CisgICAgICAgICAgICBtb3ZlUmVjb3Jkcy5hcHBlbmQoeyBmcm9tT3JpZ2luLCB0b09y
aWdpbiB9KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3Jk
IDogbW92ZVJlY29yZHMpIHsKKyAgICAgICAgaWYgKHRyYWNrZXIpCisgICAgICAgICAgICBGaWxl
U3lzdGVtOjptb3ZlRmlsZSh0cmFja2VyLT5kYXRhYmFzZVBhdGgocmVjb3JkLmZyb21PcmlnaW4p
LCB0cmFja2VyLT5kYXRhYmFzZVBhdGgocmVjb3JkLnRvT3JpZ2luKSk7CisgICAgICAgIG1fc3Rv
cmFnZUFyZWFNYXAudGFrZShyZWNvcmQuZnJvbU9yaWdpbiktPmNsZWFyKCk7CisgICAgfQorfQor
CiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmVwaGVt
ZXJhbE9yaWdpbnMoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZU5hbWVzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaAkocmV2aXNpb24gMjU4NTY0KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVz
cGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmKTsKICAgICB2b2lkIGNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7CisgICAgdm9p
ZCByZW5hbWVEb21haW4oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyKik7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiBlcGhlbWVyYWxPcmlnaW5zKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAkocmV2
aXNpb24gMjU4NTY0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDQgKzIxMCwxMiBAQCB2b2lk
IFN0b3JhZ2VBcmVhOjpzeW5jVG9EYXRhYmFzZSgpCiAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFz
ZS0+dXBkYXRlRGF0YWJhc2UoKTsKIH0KIAordm9pZCBTdG9yYWdlQXJlYTo6Y2xvc2UoKQorewor
ICAgIGlmICghbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZS0+Y2xvc2UoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWEuaAkocmV2aXNpb24gMjU4NTY0KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgb3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRl
bXNJZk5lZWRlZCgpIGNvbnN0OwogCiAgICAgdm9pZCBzeW5jVG9EYXRhYmFzZSgpOworICAgIHZv
aWQgY2xvc2UoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRXZlbnRzKElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJbXBsSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjU4NTY0KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU1LDYgKzE1NSwxMyBAQCBWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpP
cmlnCiAgICAgcmV0dXJuIHsgfTsKIH0KIAordm9pZCBTdG9yYWdlTWFuYWdlcjo6cmVuYW1lRG9t
YWluKGNvbnN0IFN0cmluZyYgb2xkTmFtZSwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQoreworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdl
TmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICBs
b2NhbFN0b3JhZ2VOYW1lc3BhY2UtPnJlbmFtZURvbWFpbihvbGROYW1lLCBuZXdOYW1lLCBtX2xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5nZXQoKSk7Cit9CisKIHZvaWQgU3RvcmFnZU1hbmFn
ZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKFdhbGxUaW1lIHRpbWUp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIu
aAkocmV2aXNpb24gMjU4NTY0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2Uo
V2FsbFRpbWUpOwogICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKTsKICAgICBWZWN0b3I8
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiBnZXRMb2NhbFN0b3Jh
Z2VPcmlnaW5EZXRhaWxzQ3Jvc3NUaHJlYWRDb3B5KCkgY29uc3Q7CisgICAgdm9pZCByZW5hbWVE
b21haW4oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIGNsZWFyU3Rv
cmFnZU5hbWVzcGFjZXMoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCShyZXZp
c2lvbiAyNTg1NjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXJTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsNiArMjkzLDE4IEBA
IHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmdldExvY2FsU3RvcmFnZU8KICAgICB9KTsKIH0KIAor
dm9pZCBTdG9yYWdlTWFuYWdlclNldDo6cmVuYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBvbGROYW1lLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2Vzc2lvbklELCBvbGROYW1lID0gb2xkTmFtZS5p
c29sYXRlZENvcHkoKSwgbmV3TmFtZSA9IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAg
ICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25J
RCk7CisgICAgICAgIEFTU0VSVChzdG9yYWdlTWFuYWdlcik7CisgICAgICAgIHN0b3JhZ2VNYW5h
Z2VyLT5yZW5hbWVEb21haW4ob2xkTmFtZSwgbmV3TmFtZSk7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisK
IHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0b3JhZ2VO
YW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRh
JiYgb3JpZ2luRGF0YSwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyU2V0LmgJKHJldmlzaW9uIDI1ODU2NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZU1vZGlm
aWVkU2luY2UoUEFMOjpTZXNzaW9uSUQsIFdhbGxUaW1lLCBEZWxldGVDYWxsYmFjayYmKTsKICAg
ICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRGVsZXRlQ2FsbGJhY2smJik7
CiAgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklELCBH
ZXRPcmlnaW5EZXRhaWxzQ2FsbGJhY2smJik7CisgICAgdm9pZCByZW5hbWVEb21haW4oUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiByZXBseUVuY29kZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyNTg1NjQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01OTUsNiArNTk1LDE3IEBAIC0gKGJvb2wpX2hhc1JlZ2lzdGVy
ZWRTZXJ2aWNlV29ya2VyCiAjZW5kaWYKIH0KIAorLSAodm9pZClfcmVuYW1lRG9tYWluOihOU1N0
cmluZyAqKWRvbWFpbk5hbWUgdG86KE5TU3RyaW5nICopbmV3RG9tYWluTmFtZSBmb3JEYXRhT2ZU
eXBlczooTlNTZXQ8TlNTdHJpbmcgKj4gKilkYXRhVHlwZXMgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCFkYXRhVHlwZXMuY291
bnQpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIGlmIChkYXRhVHlw
ZXMuY291bnQgPiAxIHx8ICFbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0OldLV2Vic2l0ZURhdGFU
eXBlTG9jYWxTdG9yYWdlXSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIl9yZW5hbWVEb21haW4gY2FuIG9ubHkgYmUgY2FsbGVk
IHdpdGggV0tXZWJzaXRlRGF0YVR5cGVMb2NhbFN0b3JhZ2UgcmlnaHQgbm93LiJdOworICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT5yZW5hbWVEb21haW5JbldlYnNpdGVEYXRhKGRvbWFpbk5hbWUsIG5l
d0RvbWFpbk5hbWUsIFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwogLSAoaWQgPF9XS1dlYnNpdGVE
YXRhU3RvcmVEZWxlZ2F0ZT4pX2RlbGVnYXRlCiB7CiAgICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQo
KS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAkocmV2aXNpb24gMjU4NTY0
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQCB0eXBlZGVmIE5TX09Q
VElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0CiAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIC0gKHZvaWQpX2FwcEJvdW5kRG9tYWlu
czoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2
b2lkKV9yZW5hbWVEb21haW46KE5TU3RyaW5nICopZG9tYWluTmFtZSB0bzooTlNTdHJpbmcgKilu
ZXdEb21haW5OYW1lIGZvckRhdGFPZlR5cGVzOihOU1NldDxOU1N0cmluZyAqPiAqKWRhdGFUeXBl
cyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CisK
IEBwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgd2VhaykgaWQgPF9XS1dlYnNpdGVEYXRh
U3RvcmVEZWxlZ2F0ZT4gX2RlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBp
b3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqX2NvbmZpZ3VyYXRpb247CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAkocmV2aXNpb24gMjU4NTY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDYgKzI0
NCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVECiAgICAgc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhz
ZXNzaW9uSUQsIGRhdGFUeXBlcywgb3JpZ2lucywgY29va2llSG9zdE5hbWVzLCBIU1RTQ2FjaGVI
b3N0TmFtZXMsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZW5hbWVEb21haW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBvbGROYW1lLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlJlbmFtZURvbWFpbkluV2Vic2l0ZURhdGEoc2Vzc2lvbklELCBvbGROYW1lLCBu
ZXdOYW1lLCBkYXRhVHlwZXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKIHsKICAgICBj
bGVhckNhbGxiYWNrU3RhdGVzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjU4NTY0KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZXRj
aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYnNpdGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9p
ZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+JiBvcmlnaW5zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgSFNUU0NhY2hlSG9zdE5hbWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVuYW1lRG9tYWluSW5XZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGdl
dExvY2FsU3RvcmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+
JiYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjU4NTY0KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyOTYsNCArMjI5NiwxMyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dEluQXBwQnJvd3NlclByCiAgICAgfQogfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbmFt
ZURvbWFpbkluV2Vic2l0ZURhdGEoU3RyaW5nJiYgb2xkTmFtZSwgU3RyaW5nJiYgbmV3TmFtZSwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAg
ICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vz
cygpKQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnJlbmFtZURvbWFpbkluV2Vic2l0ZURh
dGEobV9zZXNzaW9uSUQsIG9sZE5hbWUsIG5ld05hbWUsIGRhdGFUeXBlcywgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQor
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyNTg1NjQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1NCw2ICsyNTQsOCBAQCBwdWJsaWM6CiAKICAgICBBUEk6OkhUVFBDb29raWVTdG9yZSYg
Y29va2llU3RvcmUoKTsKIAorICAgIHZvaWQgcmVuYW1lRG9tYWluSW5XZWJzaXRlRGF0YShTdHJp
bmcmJiwgU3RyaW5nJiYsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICBX
ZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXImIGRldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyOyB9CiAjZW5kaWYKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODY3MCkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTAzLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgQWRkIFNQSSB0byBtb3ZlIGxvY2FsU3RvcmFnZSB0byBhIGRpZmZlcmVudCBkb21haW4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAyODU2ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAy
MDIwLTAzLTE4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04gKHIyNTcyMTQpOiBUYXJnZXRlZCBwcmV2aWV3IGFuaW1hdGVzIHRvIHRo
ZSB3cm9uZyBwbGFjZSB3aGVuIGRyb3BwaW5nIGluIGVkaXRhYmxlIGNvbnRlbnQKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCShyZXZpc2lvbiAyNTg1NjQpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVD
dXN0b21QYXRocy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTE3LDYgKzUxNywzMyBAQCBURVNUKFdl
YktpdCwgV2Vic2l0ZURhdGFTdG9yZUlmRXhpc3RzKQogICAgIEVYUEVDVF9UUlVFKGRhdGFTdG9y
ZS5fY29uZmlndXJhdGlvbi5wZXJzaXN0ZW50KTsKIH0KIAorVEVTVChXZWJLaXQsIFdlYnNpdGVE
YXRhU3RvcmVSZW5hbWVEb21haW4pCit7CisgICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8c2NyaXB0PmxvY2FsU3RvcmFnZS5zZXRJdGVt
KCd0ZXN0a2V5JywgJ3Rlc3R2YWx1ZScpPC9zY3JpcHQ+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iXV07CisgICAgCisgICAgX19ibG9jayBib29s
IGRvbmUgPSBmYWxzZTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IHdlYlZp
ZXcuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlOworICAgIE5TU2V0ICpsb2NhbFN0b3Jh
Z2VTZXQgPSBbTlNTZXQgc2V0V2l0aE9iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFn
ZV07CisgICAgW2RhdGFTdG9yZSBfcmVuYW1lRG9tYWluOkAiZXhhbXBsZS5jb20iIHRvOkAid2Vi
a2l0Lm9yZyIgZm9yRGF0YU9mVHlwZXM6bG9jYWxTdG9yYWdlU2V0IGNvbXBsZXRpb25IYW5kbGVy
Ol57CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmc6QCJoZWxsbyIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0
Lm9yZy8iXV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVzdGtleScpIl0sICJ0ZXN0dmFs
dWUiKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJoZWxsbyIg
YmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5jb20vIl1dOwor
ICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
bG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rlc3RrZXknKSJdIGlzS2luZE9mQ2xhc3M6W05TTnVsbCBj
bGFzc11dKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJl
Y29yZHNPZlR5cGVzOmxvY2FsU3RvcmFnZVNldCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8
V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICBbZGF0YVN0b3JlIHJl
bW92ZURhdGFPZlR5cGVzOmxvY2FsU3RvcmFnZVNldCBmb3JEYXRhUmVjb3JkczpyZWNvcmRzIGNv
bXBsZXRpb25IYW5kbGVyOl57CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKwogVEVT
VChXZWJLaXQsIE5ldHdvcmtDYWNoZURpcmVjdG9yeSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398238</attachid>
            <date>2020-05-01 14:19:36 -0700</date>
            <delta_ts>2020-05-01 15:17:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209260-20200501141935.patch</filename>
            <type>text/plain</type>
            <size>21218</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjA5NzEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDIwLTA0LTMwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBt
b3ZlIGxvY2FsU3RvcmFnZSB0byBhIGRpZmZlcmVudCBkb21haW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2MAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjAyODU2ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisg
ICAgICAgIENvdmVyZWQgYnkgYW4gQVBJIHRlc3QuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpy
ZW5hbWVEb21haW5JbldlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VO
YW1lc3BhY2U6OnJlbmFtZURvbWFpbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWE6
OmNsb3NlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpyZW5hbWVEb21haW4pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OnJlbmFtZURvbWFpbik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX3JlbmFtZURvbWFpbjp0bzpmb3JEYXRhT2ZUeXBlczpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
cmVuYW1lRG9tYWluSW5XZWJzaXRlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
cmVuYW1lRG9tYWluSW5XZWJzaXRlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwogMjAyMC0wNC0zMCAgSmlld2VuIFRhbiAgPGppZXdl
bl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gT3B0aW1pemUgTG9jYWxBdXRo
ZW50aWNhdG9yCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NjAsNiArMjQ2
MCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFF1b3RhKFBBTDo6U2VzCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2lu
SW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgb2xkTmFt
ZSwgY29uc3QgVVJMJiBuZXdOYW1lLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlw
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBhdXRvIGFnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6TG9jYWxTdG9yYWdlKSkgeworICAgICAgICBpZiAobV9zdG9yYWdlTWFuYWdlclNl
dC0+Y29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQt
PnJlbmFtZU9yaWdpbihzZXNzaW9uSUQsIG9sZE5hbWUsIG5ld05hbWUsIFthZ2dyZWdhdG9yID0g
YWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQorCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Zm9yRWFjaFNXU2VydmVyKGNvbnN0IEZ1
bmN0aW9uPHZvaWQoU1dTZXJ2ZXImKT4mIGNhbGxiYWNrKQogewpAQCAtMjY0NywxMiArMjY1Nywx
MSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRMb2NhbFN0b3JhZ2VPcmlnCiB7CiAgICAgaWYg
KCFtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKSB7CiAgICAgICAgIExP
R19FUlJPUigiQ2Fubm90IGdldCBsb2NhbCBzdG9yYWdlIGluZm9ybWF0aW9uIGZvciBhbiB1bmtu
b3duIHNlc3Npb24iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldExvY2FsU3RvcmFn
ZU9yaWdpbkRldGFpbHMoc2Vzc2lvbklELCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRldGFpbHMpIG11dGFibGUgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRldGFpbHMpKTsKLSAgICB9KTsKKyAgICBtX3N0b3JhZ2VN
YW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKHNlc3Npb25JRCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0
aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNiAr
MjkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2Nh
bFN0b3JhZ2UoKTsKIAogICAgIHZvaWQgcmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlbmFtZU9yaWdpbkluV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIFdlYkNvcmU6OlNXU2VydmVyKiBzd1NlcnZlckZvclNlc3Np
b25JZkV4aXN0cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIHsgcmV0dXJuIG1fc3dTZXJ2ZXJz
LmdldChzZXNzaW9uSUQpOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MDkzNSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIEZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRh
VHlwZXMsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0
aW9ucywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRGVsZXRlV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlw
ZT4gd2Vic2l0ZURhdGFUeXBlcywgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4g
b3JpZ2lucywgVmVjdG9yPFN0cmluZz4gY29va2llSG9zdE5hbWVzLCBWZWN0b3I8U3RyaW5nPiBI
U1RTQ2FjaGVIb3N0TmFtZXMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gcmVn
aXN0cmFibGVEb21haW5zLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSZW5h
bWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIG9sZERv
bWFpbiwgVVJMIG5ld0RvbWFpbiwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3
ZWJzaXRlRGF0YVR5cGVzKSAtPiAoKSBBc3luYwogCiAgICAgRG93bmxvYWRSZXF1ZXN0KFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwg
U3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQogICAgIFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJl
ZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UuY3BwCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzAsNiArNzAsMTUgQEAgdm9pZCBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmNsZWFy
QWxsU3RvcgogICAgICAgICBzdG9yYWdlQXJlYS0+Y2xlYXIoKTsKIH0KIAordm9pZCBMb2NhbFN0
b3JhZ2VOYW1lc3BhY2U6OmZsdXNoQW5kQ2xvc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW4pCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgaWYgKGF1dG8q
IHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYU1hcC5nZXQob3JpZ2luKSkgeworICAgICAgICBz
dG9yYWdlQXJlYS0+c3luY1RvRGF0YWJhc2UoKTsKKyAgICAgICAgc3RvcmFnZUFyZWEtPmNsb3Nl
KCk7CisgICAgfQorfQorCiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBMb2NhbFN0b3JhZ2VO
YW1lc3BhY2U6OmVwaGVtZXJhbE9yaWdpbnMoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaAkocmV2aXNp
b24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xv
Y2FsU3RvcmFnZU5hbWVzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKICAgICB2b2lkIGNsZWFyQWxsU3RvcmFnZUFy
ZWFzKCk7CisgICAgdm9pZCBmbHVzaEFuZENsb3NlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYpOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZXBo
ZW1lcmFsT3JpZ2lucygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAJKHJldmlzaW9uIDI2
MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw0ICsyMTAsMTIgQEAgdm9pZCBTdG9yYWdl
QXJlYTo6c3luY1RvRGF0YWJhc2UoKQogICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2UtPnVwZGF0
ZURhdGFiYXNlKCk7CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWE6OmNsb3NlKCkKK3sKKyAgICBpZiAo
IW1fbG9jYWxTdG9yYWdlRGF0YWJhc2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbG9jYWxT
dG9yYWdlRGF0YWJhc2UtPmNsb3NlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhLmgJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVk
ZWQoKSBjb25zdDsKIAogICAgIHZvaWQgc3luY1RvRGF0YWJhc2UoKTsKKyAgICB2b2lkIGNsb3Nl
KCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5l
d1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2
ICsxNTUsMjQgQEAgVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZwogICAg
IHJldHVybiB7IH07CiB9CiAKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OnJlbmFtZU9yaWdpbihjb25z
dCBVUkwmIG9sZFVSTCwgY29uc3QgVVJMJiBuZXdVUkwpCit7CisgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgYXV0byBvbGRPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21VUkwob2xkVVJMKTsKKyAgICBhdXRvIG5ld09yaWdpbiA9IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChuZXdVUkwpOworICAgIGZvciAoYXV0byYgbG9jYWxT
dG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAg
ICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmZsdXNoQW5kQ2xvc2Uob2xkT3JpZ2luKTsKKwor
ICAgIGlmIChhdXRvKiB0cmFja2VyID0gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuZ2V0
KCkpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8Y29uc3QgY2hhciAqLCAzPiBz
dWZmaXhlcyB7ICIiLCAiLXNobSIsICItd2FsIiB9OworICAgICAgICBmb3IgKGNvbnN0IGF1dG8q
IHN1ZmZpeCA6IHN1ZmZpeGVzKQorICAgICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUobWFr
ZVN0cmluZyh0cmFja2VyLT5kYXRhYmFzZVBhdGgob2xkT3JpZ2luKSwgc3VmZml4KSwgbWFrZVN0
cmluZyh0cmFja2VyLT5kYXRhYmFzZVBhdGgobmV3T3JpZ2luKSwgc3VmZml4KSk7CisgICAgfQor
CisgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5h
bWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJT
dG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvbGRPcmlnaW4pOworfQorCiB2b2lkIFN0b3JhZ2VN
YW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5zTW9kaWZpZWRTaW5jZShXYWxsVGltZSB0
aW1lKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLmgJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNp
bmNlKFdhbGxUaW1lKTsKICAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmln
aW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jik7CiAgICAgVmVj
dG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4gZ2V0TG9jYWxT
dG9yYWdlT3JpZ2luRGV0YWlsc0Nyb3NzVGhyZWFkQ29weSgpIGNvbnN0OworICAgIHZvaWQgcmVu
YW1lT3JpZ2luKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCBjbGVhclN0b3Jh
Z2VOYW1lc3BhY2VzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcAkocmV2aXNp
b24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDYgKzI5MywxOCBAQCB2
b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPCiAgICAgfSk7CiB9CiAKK3Zv
aWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnJlbmFtZU9yaWdpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgb2xkTmFtZSwgY29uc3QgVVJMJiBuZXdOYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgb2xkTmFtZSA9IG9sZE5hbWUuaXNvbGF0ZWRD
b3B5KCksIG5ld05hbWUgPSBuZXdOYW1lLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRv
KiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOworICAg
ICAgICBBU1NFUlQoc3RvcmFnZU1hbmFnZXIpOworICAgICAgICBzdG9yYWdlTWFuYWdlci0+cmVu
YW1lT3JpZ2luKG9sZE5hbWUsIG5ld05hbWUpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCiB2b2lkIFN0
b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdp
bkRhdGEsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
clNldC5oCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiAr
NjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VNb2RpZmllZFNpbmNl
KFBBTDo6U2Vzc2lvbklELCBXYWxsVGltZSwgRGVsZXRlQ2FsbGJhY2smJik7CiAgICAgdm9pZCBk
ZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIERlbGV0ZUNhbGxiYWNrJiYpOwogICAgIHZv
aWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgR2V0T3JpZ2lu
RGV0YWlsc0NhbGxiYWNrJiYpOworICAgIHZvaWQgcmVuYW1lT3JpZ2luKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVy
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbQkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTg4LDYgKzU4OCwxOCBAQCAtIChib29sKV9oYXNSZWdpc3RlcmVkU2VydmljZVdvcmtl
cgogI2VuZGlmCiB9CiAKKy0gKHZvaWQpX3JlbmFtZU9yaWdpbjooTlNVUkwgKilvbGROYW1lIHRv
OihOU1VSTCAqKW5ld05hbWUgZm9yRGF0YU9mVHlwZXM6KE5TU2V0PE5TU3RyaW5nICo+ICopZGF0
YVR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cgoreworICAgIGlmICghZGF0YVR5cGVzLmNvdW50KQorICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoKTsKKworICAgIGlmIChkYXRhVHlwZXMuY291bnQgPiAxIHx8ICFbZGF0YVR5cGVz
IGNvbnRhaW5zT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlTG9jYWxTdG9yYWdlXSkKKyAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIl9y
ZW5hbWVPcmlnaW4gY2FuIG9ubHkgYmUgY2FsbGVkIHdpdGggV0tXZWJzaXRlRGF0YVR5cGVMb2Nh
bFN0b3JhZ2UgcmlnaHQgbm93LiJdOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5yZW5hbWVPcmln
aW5JbldlYnNpdGVEYXRhKG9sZE5hbWUsIG5ld05hbWUsIFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5
cGVzKGRhdGFUeXBlcyksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30K
KwogLSAoaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4pX2RlbGVnYXRlCiB7CiAgICAg
cmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiAr
ODAsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0CiAtICh2b2lk
KV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOih2b2lkICheKSh2b2lkKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIC0g
KHZvaWQpX2FwcEJvdW5kRG9tYWluczoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCistICh2b2lkKV9yZW5hbWVPcmlnaW46KE5TVVJMICopb2xkTmFtZSB0
bzooTlNVUkwgKiluZXdOYW1lIGZvckRhdGFPZlR5cGVzOihOU1NldDxOU1N0cmluZyAqPiAqKWRh
dGFUeXBlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXI7CisKIEBwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgd2VhaykgaWQgPF9XS1dlYnNp
dGVEYXRhU3RvcmVEZWxlZ2F0ZT4gX2RlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTUpLCBpb3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqX2NvbmZpZ3VyYXRpb247CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3
LDYgKzIxNywxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVECiAg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3Jp
Z2lucyhzZXNzaW9uSUQsIGRhdGFUeXBlcywgb3JpZ2lucywgY29va2llSG9zdE5hbWVzLCBIU1RT
Q2FjaGVIb3N0TmFtZXMsIHJlZ2lzdHJhYmxlRG9tYWlucywgY2FsbGJhY2tJRCksIDApOwogfQog
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIG9sZE5hbWUsIGNvbnN0IFVSTCYgbmV3
TmFtZSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShz
ZXNzaW9uSUQsIG9sZE5hbWUsIG5ld05hbWUsIGRhdGFUeXBlcyksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vz
c0NyYXNoZWQoKQogewogICAgIGNsZWFyQ2FsbGJhY2tTdGF0ZXMoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBjb29raWVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBIU1RTQ2FjaGVIb3N0
TmFtZXMsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGdldExvY2FsU3Rv
cmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0MDcsNCArMjQwNywxNSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmNsZWFyQXBwQm91
bmRTZXNzCiAgICAgfQogfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbmFtZU9yaWdpbklu
V2Vic2l0ZURhdGEoVVJMJiYgb2xkTmFtZSwgVVJMJiYgbmV3TmFtZSwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0Fn
Z3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkgewor
ICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1By
b2Nlc3MoKSkgeworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmFkZFNlc3Npb24oKnRoaXMp
OworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEo
bV9zZXNzaW9uSUQsIG9sZE5hbWUsIG5ld05hbWUsIGRhdGFUeXBlcywgW2NhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCw4IEBAIHB1YmxpYzoKIAogICAgIEFQSTo6SFRUUENvb2tp
ZVN0b3JlJiBjb29raWVTdG9yZSgpOwogCisgICAgdm9pZCByZW5hbWVPcmlnaW5JbldlYnNpdGVE
YXRhKFVSTCYmLCBVUkwmJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAg
IFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciYgZGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCkgeyByZXR1cm4gbV9kZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI7IH0KICNlbmRpZgpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYwOTU5
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjAtMDQtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBBZGQgU1BJIHRvIG1vdmUgbG9jYWxTdG9yYWdlIHRvIGEgZGlmZmVyZW50IGRvbWFp
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjYw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDI4NTY4Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAy
MDIwLTA0LTMwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTiAocjE3Njg2MiwgcjIxMDQ4Myk6IExlYWtzIG9mIEJyb3dzZXJXaW5kb3dDb250
cm9sbGVyIGluIE1pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dl
YnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQkocmV2aXNpb24gMjYwOTM1KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0
aHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUxNyw2ICs1MTcsMzUgQEAgVEVTVChXZWJLaXQsIFdl
YnNpdGVEYXRhU3RvcmVJZkV4aXN0cykKICAgICBFWFBFQ1RfVFJVRShkYXRhU3RvcmUuX2NvbmZp
Z3VyYXRpb24ucGVyc2lzdGVudCk7CiB9CiAKK1RFU1QoV2ViS2l0LCBXZWJzaXRlRGF0YVN0b3Jl
UmVuYW1lT3JpZ2luKQoreworICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOkAiPHNjcmlwdD5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGVzdGtl
eScsICd0ZXN0dmFsdWUnKTwvc2NyaXB0PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHBzOi8vZXhhbXBsZS5jb20vIl1dOworICAgIAorICAgIF9fYmxvY2sgYm9vbCBkb25lID0g
ZmFsc2U7CisgICAgTlNVUkwgKmV4YW1wbGVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHBzOi8vZXhhbXBsZS5jb20vIl07CisgICAgTlNVUkwgKndlYktpdFVSTCA9IFtOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdOworICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZSAqZGF0YVN0b3JlID0gd2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmU7Cisg
ICAgTlNTZXQgKmxvY2FsU3RvcmFnZVNldCA9IFtOU1NldCBzZXRXaXRoT2JqZWN0OldLV2Vic2l0
ZURhdGFUeXBlTG9jYWxTdG9yYWdlXTsKKyAgICBbZGF0YVN0b3JlIF9yZW5hbWVPcmlnaW46ZXhh
bXBsZVVSTCB0bzp3ZWJLaXRVUkwgZm9yRGF0YU9mVHlwZXM6bG9jYWxTdG9yYWdlU2V0IGNvbXBs
ZXRpb25IYW5kbGVyOl57CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmc6QCJoZWxsbyIgYmFzZVVSTDp3ZWJLaXRVUkxdOworICAgIEVYUEVDVF9X
S19TVFJFUShbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAibG9jYWxTdG9y
YWdlLmdldEl0ZW0oJ3Rlc3RrZXknKSJdLCAidGVzdHZhbHVlIik7CisgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiaGVsbG8iIGJhc2VVUkw6ZXhhbXBsZVVSTF07Cisg
ICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJs
b2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVzdGtleScpIl0gaXNLaW5kT2ZDbGFzczpbTlNOdWxsIGNs
YXNzXV0pOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVj
b3Jkc09mVHlwZXM6bG9jYWxTdG9yYWdlU2V0IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxX
S1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgIFtkYXRhU3RvcmUgcmVt
b3ZlRGF0YU9mVHlwZXM6bG9jYWxTdG9yYWdlU2V0IGZvckRhdGFSZWNvcmRzOnJlY29yZHMgY29t
cGxldGlvbkhhbmRsZXI6XnsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCiBURVNU
KFdlYktpdCwgTmV0d29ya0NhY2hlRGlyZWN0b3J5KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398247</attachid>
            <date>2020-05-01 15:17:54 -0700</date>
            <delta_ts>2020-05-01 16:38:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209260-20200501151753.patch</filename>
            <type>text/plain</type>
            <size>21405</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjA5NzEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDIwLTA1LTAxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBt
b3ZlIGxvY2FsU3RvcmFnZSB0byBhIGRpZmZlcmVudCBkb21haW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2MAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjAyODU2ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisg
ICAgICAgIENvdmVyZWQgYnkgYW4gQVBJIHRlc3QuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpy
ZW5hbWVEb21haW5JbldlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VO
YW1lc3BhY2U6OnJlbmFtZURvbWFpbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWE6
OmNsb3NlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpyZW5hbWVEb21haW4pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OnJlbmFtZURvbWFpbik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX3JlbmFtZURvbWFpbjp0bzpmb3JEYXRhT2ZUeXBlczpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
cmVuYW1lRG9tYWluSW5XZWJzaXRlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
cmVuYW1lRG9tYWluSW5XZWJzaXRlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwogMjAyMC0wNC0zMCAgSmlld2VuIFRhbiAgPGppZXdl
bl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gT3B0aW1pemUgTG9jYWxBdXRo
ZW50aWNhdG9yCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NjAsNiArMjQ2
MCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFF1b3RhKFBBTDo6U2VzCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2lu
SW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgb2xkTmFt
ZSwgY29uc3QgVVJMJiBuZXdOYW1lLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlw
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBhdXRvIGFnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6TG9jYWxTdG9yYWdlKSkgeworICAgICAgICBpZiAobV9zdG9yYWdlTWFuYWdlclNl
dC0+Y29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQt
PnJlbmFtZU9yaWdpbihzZXNzaW9uSUQsIG9sZE5hbWUsIG5ld05hbWUsIFthZ2dyZWdhdG9yID0g
YWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQorCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Zm9yRWFjaFNXU2VydmVyKGNvbnN0IEZ1
bmN0aW9uPHZvaWQoU1dTZXJ2ZXImKT4mIGNhbGxiYWNrKQogewpAQCAtMjY0NywxMiArMjY1Nywx
MSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRMb2NhbFN0b3JhZ2VPcmlnCiB7CiAgICAgaWYg
KCFtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5jb250YWlucyhzZXNzaW9uSUQpKSB7CiAgICAgICAgIExP
R19FUlJPUigiQ2Fubm90IGdldCBsb2NhbCBzdG9yYWdlIGluZm9ybWF0aW9uIGZvciBhbiB1bmtu
b3duIHNlc3Npb24iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmdldExvY2FsU3RvcmFn
ZU9yaWdpbkRldGFpbHMoc2Vzc2lvbklELCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRldGFpbHMpIG11dGFibGUgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRldGFpbHMpKTsKLSAgICB9KTsKKyAgICBtX3N0b3JhZ2VN
YW5hZ2VyU2V0LT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKHNlc3Npb25JRCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0
aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNiAr
MjkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2Nh
bFN0b3JhZ2UoKTsKIAogICAgIHZvaWQgcmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlbmFtZU9yaWdpbkluV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIFdlYkNvcmU6OlNXU2VydmVyKiBzd1NlcnZlckZvclNlc3Np
b25JZkV4aXN0cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIHsgcmV0dXJuIG1fc3dTZXJ2ZXJz
LmdldChzZXNzaW9uSUQpOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MDkzNSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIEZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRh
VHlwZXMsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0
aW9ucywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRGVsZXRlV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlw
ZT4gd2Vic2l0ZURhdGFUeXBlcywgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4g
b3JpZ2lucywgVmVjdG9yPFN0cmluZz4gY29va2llSG9zdE5hbWVzLCBWZWN0b3I8U3RyaW5nPiBI
U1RTQ2FjaGVIb3N0TmFtZXMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gcmVn
aXN0cmFibGVEb21haW5zLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSZW5h
bWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIG9sZERv
bWFpbiwgVVJMIG5ld0RvbWFpbiwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3
ZWJzaXRlRGF0YVR5cGVzKSAtPiAoKSBBc3luYwogCiAgICAgRG93bmxvYWRSZXF1ZXN0KFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwg
U3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQogICAgIFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJl
ZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UuY3BwCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzAsNiArNzAsMTUgQEAgdm9pZCBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmNsZWFy
QWxsU3RvcgogICAgICAgICBzdG9yYWdlQXJlYS0+Y2xlYXIoKTsKIH0KIAordm9pZCBMb2NhbFN0
b3JhZ2VOYW1lc3BhY2U6OmZsdXNoQW5kQ2xvc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW4pCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgaWYgKGF1dG8q
IHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYU1hcC5nZXQob3JpZ2luKSkgeworICAgICAgICBz
dG9yYWdlQXJlYS0+c3luY1RvRGF0YWJhc2UoKTsKKyAgICAgICAgc3RvcmFnZUFyZWEtPmNsb3Nl
KCk7CisgICAgfQorfQorCiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBMb2NhbFN0b3JhZ2VO
YW1lc3BhY2U6OmVwaGVtZXJhbE9yaWdpbnMoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaAkocmV2aXNp
b24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xv
Y2FsU3RvcmFnZU5hbWVzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsKICAgICB2b2lkIGNsZWFyQWxsU3RvcmFnZUFy
ZWFzKCk7CisgICAgdm9pZCBmbHVzaEFuZENsb3NlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYpOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZXBo
ZW1lcmFsT3JpZ2lucygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAJKHJldmlzaW9uIDI2
MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw0ICsyMTAsMTIgQEAgdm9pZCBTdG9yYWdl
QXJlYTo6c3luY1RvRGF0YWJhc2UoKQogICAgIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2UtPnVwZGF0
ZURhdGFiYXNlKCk7CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWE6OmNsb3NlKCkKK3sKKyAgICBpZiAo
IW1fbG9jYWxTdG9yYWdlRGF0YWJhc2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbG9jYWxT
dG9yYWdlRGF0YWJhc2UtPmNsb3NlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhLmgJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVk
ZWQoKSBjb25zdDsKIAogICAgIHZvaWQgc3luY1RvRGF0YWJhc2UoKTsKKyAgICB2b2lkIGNsb3Nl
KCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5l
d1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgogI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC0xNTUsNiArMTU2LDI0IEBAIFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI6Ok9yaWcKICAgICByZXR1cm4geyB9OwogfQogCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpy
ZW5hbWVPcmlnaW4oY29uc3QgVVJMJiBvbGRVUkwsIGNvbnN0IFVSTCYgbmV3VVJMKQoreworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gb2xkT3JpZ2luID0gV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG9sZFVSTCk7CisgICAgYXV0byBuZXdPcmln
aW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwobmV3VVJMKTsKKyAgICBm
b3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNl
cy52YWx1ZXMoKSkKKyAgICAgICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5mbHVzaEFuZENsb3Nl
KG9sZE9yaWdpbik7CisKKyAgICBpZiAoYXV0byogdHJhY2tlciA9IG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmdldCgpKSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PGNv
bnN0IGNoYXIgKiwgMz4gc3VmZml4ZXMgeyAiIiwgIi1zaG0iLCAiLXdhbCIgfTsKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvKiBzdWZmaXggOiBzdWZmaXhlcykKKyAgICAgICAgICAgIEZpbGVTeXN0
ZW06Om1vdmVGaWxlKG1ha2VTdHJpbmcodHJhY2tlci0+ZGF0YWJhc2VQYXRoKG9sZE9yaWdpbiks
IHN1ZmZpeCksIG1ha2VTdHJpbmcodHJhY2tlci0+ZGF0YWJhc2VQYXRoKG5ld09yaWdpbiksIHN1
ZmZpeCkpOworICAgIH0KKworICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDog
bV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICBsb2NhbFN0b3JhZ2VO
YW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4ob2xkT3JpZ2luKTsKK30K
Kwogdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVk
U2luY2UoV2FsbFRpbWUgdGltZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlci5oCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VP
cmlnaW5zTW9kaWZpZWRTaW5jZShXYWxsVGltZSk7CiAgICAgdm9pZCBkZWxldGVMb2NhbFN0b3Jh
Z2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYpOwogICAgIFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRl
dGFpbHM+IGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHNDcm9zc1RocmVhZENvcHkoKSBjb25z
dDsKKyAgICB2b2lkIHJlbmFtZU9yaWdpbihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIAogICAg
IHZvaWQgY2xlYXJTdG9yYWdlTmFtZXNwYWNlcygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
clNldC5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
Myw2ICsyOTMsMTggQEAgdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Z2V0TG9jYWxTdG9yYWdlTwog
ICAgIH0pOwogfQogCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpyZW5hbWVPcmlnaW4oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIG9sZE5hbWUsIGNvbnN0IFVSTCYgbmV3TmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIG9sZE5hbWUgPSBv
bGROYW1lLmlzb2xhdGVkQ29weSgpLCBuZXdOYW1lID0gbmV3TmFtZS5pc29sYXRlZENvcHkoKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQo
c2Vzc2lvbklEKTsKKyAgICAgICAgQVNTRVJUKHN0b3JhZ2VNYW5hZ2VyKTsKKyAgICAgICAgc3Rv
cmFnZU1hbmFnZXItPnJlbmFtZU9yaWdpbihvbGROYW1lLCBuZXdOYW1lKTsKKyAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9
KTsKK30KKwogdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJl
YShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9y
aWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBDb25uZWN0VG9TdG9yYWdlQXJlYUNhbGxiYWNrJiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJT
ZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXJTZXQuaAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9y
YWdlTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUsIERlbGV0ZUNhbGxiYWNr
JiYpOwogICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBEZWxldGVDYWxs
YmFjayYmKTsKICAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNz
aW9uSUQsIEdldE9yaWdpbkRldGFpbHNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlbmFtZU9yaWdp
bihQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mIHJlcGx5RW5jb2Rlcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJldmlzaW9uIDI2MDkzNSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTU4OCw2ICs1ODgsMTggQEAgLSAoYm9vbClfaGFzUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXIKICNlbmRpZgogfQogCistICh2b2lkKV9yZW5hbWVPcmlnaW46KE5T
VVJMICopb2xkTmFtZSB0bzooTlNVUkwgKiluZXdOYW1lIGZvckRhdGFPZlR5cGVzOihOU1NldDxO
U1N0cmluZyAqPiAqKWRhdGFUeXBlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoIWRhdGFUeXBlcy5jb3VudCkKKyAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBpZiAoZGF0YVR5cGVzLmNvdW50ID4g
MSB8fCAhW2RhdGFUeXBlcyBjb250YWluc09iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUxvY2FsU3Rv
cmFnZV0pCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2Vw
dGlvbiBmb3JtYXQ6QCJfcmVuYW1lT3JpZ2luIGNhbiBvbmx5IGJlIGNhbGxlZCB3aXRoIFdLV2Vi
c2l0ZURhdGFUeXBlTG9jYWxTdG9yYWdlIHJpZ2h0IG5vdy4iXTsKKyAgICBfd2Vic2l0ZURhdGFT
dG9yZS0+cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShvbGROYW1lLCBuZXdOYW1lLCBXZWJLaXQ6
OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgfSk7Cit9CisKIC0gKGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KV9k
ZWxlZ2F0ZQogewogICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCkuZ2V0KCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmgJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgwLDYgKzgwLDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9X
S1dlYnNpdAogLSAodm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkczoodm9pZCAo
Xikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSks
IGlvcygxMy4wKSk7CiAtICh2b2lkKV9hcHBCb3VuZERvbWFpbnM6KHZvaWQgKF4pKE5TQXJyYXk8
TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClfcmVuYW1lT3JpZ2luOihO
U1VSTCAqKW9sZE5hbWUgdG86KE5TVVJMICopbmV3TmFtZSBmb3JEYXRhT2ZUeXBlczooTlNTZXQ8
TlNTdHJpbmcgKj4gKilkYXRhVHlwZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQp
KWNvbXBsZXRpb25IYW5kbGVyOworCiBAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHdl
YWspIGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+IF9kZWxlZ2F0ZSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSwgY29weSkgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKl9jb25maWd1
cmF0aW9uOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpk
ZWxldGVXZWJzaXRlRAogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZWxldGVX
ZWJzaXRlRGF0YUZvck9yaWdpbnMoc2Vzc2lvbklELCBkYXRhVHlwZXMsIG9yaWdpbnMsIGNvb2tp
ZUhvc3ROYW1lcywgSFNUU0NhY2hlSG9zdE5hbWVzLCByZWdpc3RyYWJsZURvbWFpbnMsIGNhbGxi
YWNrSUQpLCAwKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW5hbWVPcmlnaW5J
bldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBvbGROYW1l
LCBjb25zdCBVUkwmIG5ld05hbWUsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlbmFtZU9yaWdp
bkluV2Vic2l0ZURhdGEoc2Vzc2lvbklELCBvbGROYW1lLCBuZXdOYW1lLCBkYXRhVHlwZXMpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKIHsKICAgICBjbGVhckNhbGxiYWNrU3RhdGVzKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
OCw2ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
RmV0Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZv
ck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlw
ZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgSFNUU0NhY2hlSG9zdE5hbWVzLCBjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+Jiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlbmFtZU9yaWdpbkluV2Vi
c2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAg
dm9pZCBnZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFp
bHM+JiYpPiYmKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDA3LDQgKzI0MDcsMTUgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpjbGVhckFwcEJvdW5kU2VzcwogICAgIH0KIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFVSTCYmIG9sZE5hbWUsIFVSTCYmIG5ld05hbWUs
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdh
dG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJv
Y2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vz
c1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5h
ZGRTZXNzaW9uKCp0aGlzKTsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5yZW5hbWVPcmln
aW5JbldlYnNpdGVEYXRhKG1fc2Vzc2lvbklELCBvbGROYW1lLCBuZXdOYW1lLCBkYXRhVHlwZXMs
IFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0p
OworICAgICAgICB9CisgICAgfQorfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAy
NjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsOCBAQCBwdWJsaWM6CiAKICAg
ICBBUEk6OkhUVFBDb29raWVTdG9yZSYgY29va2llU3RvcmUoKTsKIAorICAgIHZvaWQgcmVuYW1l
T3JpZ2luSW5XZWJzaXRlRGF0YShVUkwmJiwgVVJMJiYsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAjaWYgRU5BQkxFKERFVklDRV9P
UklFTlRBVElPTikKICAgICBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRy
b2xsZXImIGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcigpIHsgcmV0
dXJuIG1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyOyB9CiAjZW5k
aWYKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI2MDk1OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE0IEBACisyMDIwLTA1LTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBtb3ZlIGxvY2FsU3RvcmFnZSB0byBh
IGRpZmZlcmVudCBkb21haW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwOTI2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAyODU2ODM+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06CisgICAg
ICAgIChURVNUKToKKwogMjAyMC0wNC0zMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNzY4NjIsIHIyMTA0ODMpOiBMZWFrcyBvZiBC
cm93c2VyV2luZG93Q29udHJvbGxlciBpbiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ3VzdG9tUGF0aHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0JKHJldmlzaW9uIDI2
MDkzNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURh
dGFTdG9yZUN1c3RvbVBhdGhzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MTcsNiArNTE3LDM1IEBA
IFRFU1QoV2ViS2l0LCBXZWJzaXRlRGF0YVN0b3JlSWZFeGlzdHMpCiAgICAgRVhQRUNUX1RSVUUo
ZGF0YVN0b3JlLl9jb25maWd1cmF0aW9uLnBlcnNpc3RlbnQpOwogfQogCitURVNUKFdlYktpdCwg
V2Vic2l0ZURhdGFTdG9yZVJlbmFtZU9yaWdpbikKK3sKKyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJW
aWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxzY3JpcHQ+bG9jYWxTdG9yYWdl
LnNldEl0ZW0oJ3Rlc3RrZXknLCAndGVzdHZhbHVlJyk8L3NjcmlwdD4iIGJhc2VVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tLyJdXTsKKyAgICAKKyAgICBfX2Js
b2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIE5TVVJMICpleGFtcGxlVVJMID0gW05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tLyJdOworICAgIE5TVVJMICp3ZWJLaXRV
UkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXTsKKyAgICBX
S1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IHdlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJz
aXRlRGF0YVN0b3JlOworICAgIE5TU2V0ICpsb2NhbFN0b3JhZ2VTZXQgPSBbTlNTZXQgc2V0V2l0
aE9iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZV07CisgICAgW2RhdGFTdG9yZSBf
cmVuYW1lT3JpZ2luOmV4YW1wbGVVUkwgdG86d2ViS2l0VVJMIGZvckRhdGFPZlR5cGVzOmxvY2Fs
U3RvcmFnZVNldCBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiaGVsbG8iIGJhc2VVUkw6d2ViS2l0VVJM
XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZXN0a2V5JykiXSwgInRlc3R2YWx1ZSIpOwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAImhlbGxvIiBiYXNlVVJM
OmV4YW1wbGVVUkxdOworICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAibG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rlc3RrZXknKSJdIGlzS2luZE9m
Q2xhc3M6W05TTnVsbCBjbGFzc11dKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbZGF0YVN0
b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOmxvY2FsU3RvcmFnZVNldCBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAg
ICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmxvY2FsU3RvcmFnZVNldCBmb3JEYXRhUmVj
b3JkczpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl57CisgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKK30KKwogVEVTVChXZWJLaXQsIE5ldHdvcmtDYWNoZURpcmVjdG9yeSkKIHsKICAgICB1
c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>