<?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>124562</bug_id>
          
          <creation_ts>2013-11-18 22:19:30 -0800</creation_ts>
          <short_desc>Add WebIDBServerConnection and DatabaseProcessIDBConnection stubs</short_desc>
          <delta_ts>2013-11-19 12:06:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124521</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>951962</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-18 22:19:30 -0800</bug_when>
    <thetext>Add WebIDBServerConnection and DatabaseProcessIDBConnection stubs

Also remove Web/DatabaseProcessDatabaseBackend stubs, as that is no longer the abstraction layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951967</commentid>
    <comment_count>1</comment_count>
      <attachid>217274</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-18 22:28:02 -0800</bug_when>
    <thetext>Created attachment 217274
patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952136</commentid>
    <comment_count>2</comment_count>
      <attachid>217274</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-19 10:42:54 -0800</bug_when>
    <thetext>Comment on attachment 217274
patch v1

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

&gt; Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp:84
&gt; +    RefPtr&lt;DatabaseProcessIDBConnection&gt; connection = DatabaseProcessIDBConnection::create(backendIdentifier);

Just an idle thought, is that actually something that needs to be refcountable?

&gt; Source/WebKit2/Shared/Databases/IndexedDB/IDBUtilities.cpp:40
&gt; +    stringBuilder.append(openingOrigin.databaseIdentifier());

Can we get rid of databaseIdentifier() in IndexedDB? A comment in SecurityOrigin.cpp implies that we should:

    // Historically, we&apos;ve used the following (somewhat non-sensical) string
    // for the databaseIdentifier of local files. We used to compute this
    // string because of a bug in how we handled the scheme for file URLs.
    // Now that we&apos;ve fixed that bug, we still need to produce this string
    // to avoid breaking existing persistent state.

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:42
&gt; +    DEFINE_STATIC_LOCAL(uint64_t, identifier, (1));

ASSERT(isMainThread());

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:43
&gt; +    return identifier++;

Why not start with a 0, and return ++identifier?

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:55
&gt; +

Empty line.

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:66
&gt; +

Ditto.

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:71
&gt; +

Ditto.

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:81
&gt; +

Ditto.

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:86
&gt; +

Looks like there are a few more...

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:31
&gt; +#if ENABLE(INDEXED_DATABASE)
&gt; +#if ENABLE(DATABASE_PROCESS)

Some of the new files have ENABLE(INDEXED_DATABASE) &amp;&amp; ENABLE(DATABASE_PROCESS), for what it&apos;s worth.

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:85
&gt; +    explicit WebIDBServerConnection(const String&amp; databaseName, const WebCore::SecurityOrigin&amp; openingOrigin, const WebCore::SecurityOrigin&amp; mainFrameOrigin);

Is &quot;explicit&quot; of any use here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952159</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-19 11:58:01 -0800</bug_when>
    <thetext>(In reply to comment #2)

Most of these changed without comment.

&gt; (From update of attachment 217274 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217274&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp:84
&gt; &gt; +    RefPtr&lt;DatabaseProcessIDBConnection&gt; connection = DatabaseProcessIDBConnection::create(backendIdentifier);
&gt; 
&gt; Just an idle thought, is that actually something that needs to be ref countable?

I think it will shortly.

&gt; &gt; Source/WebKit2/Shared/Databases/IndexedDB/IDBUtilities.cpp:40
&gt; &gt; +    stringBuilder.append(openingOrigin.databaseIdentifier());
&gt; 
&gt; Can we get rid of databaseIdentifier() in IndexedDB? A comment in SecurityOrigin.cpp implies that we should:
&gt; 
&gt;     // Historically, we&apos;ve used the following (somewhat non-sensical) string
&gt;     // for the databaseIdentifier of local files. We used to compute this
&gt;     // string because of a bug in how we handled the scheme for file URLs.
&gt;     // Now that we&apos;ve fixed that bug, we still need to produce this string
&gt;     // to avoid breaking existing persistent state.

Chatted with Alexey about this in person, came up with a slight alteration to the patch that will be landed soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952166</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-19 12:06:07 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/159511</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217274</attachid>
            <date>2013-11-18 22:28:02 -0800</date>
            <delta_ts>2013-11-19 10:42:53 -0800</delta_ts>
            <desc>patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>84582</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNGVlZDQ2Li5iM2U5ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTMtMTEtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uIGFuZCBEYXRhYmFzZVByb2Nlc3NJREJDb25u
ZWN0aW9uIHN0dWJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ1NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBFeHBvcnQgc29tZSBtb3JlIHN5bWJvbHMgYW5kIGhlYWRlcnMgZm9yIFdLMiB0byB1c2Uu
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTMtMTEtMTggIFNhbXVlbCBXaGl0ZSAgPHNhbXVlbF93
aGl0ZUBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IGFyaWEtbGFiZWxsZWRieSBzaG91bGQgYmUg
dXNlZCBpbiBwcmVmZXJlbmNlIHRvIGFyaWEtbGFiZWxlZGJ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmlu
ZGV4IDhjZGQxZmYuLjI3OTY0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yODkzLDMgKzI4
OTMsOSBAQCBfX1pON1dlYkNvcmUyNU1lZGlhUGxheWVyRmFjdG9yeVN1cHBvcnQyM2NhbGxSZWdp
c3Rlck1lZGlhRW5naW5lRVBGdlBGdlBGTjNXVEYxMAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiBfX1pON1dlYkNvcmUyNk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlMTlyZWdpc3Rlck1lZGlh
RW5naW5lRVBGdlBGTjNXVEYxMFBhc3NPd25QdHJJTlNfMjdNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2VFRUVQTlNfMTFNZWRpYVBsYXllckVFUEZ2Uk5TMV83SGFzaFNldElOUzFfNlN0cmluZ0VO
UzFfMTBTdHJpbmdIYXNoRU5TMV8xMEhhc2hUcmFpdHNJU0FfRUVFRUVQRk5TNV8xMlN1cHBvcnRz
VHlwZUVSS05TXzI4TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVyc0VFUEZ2Uk5TMV82VmVjdG9y
SVNBX0xtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUVFUEZ2dkVQRnZSS1NBX0VFCiAjZW5kaWYK
KworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorX19aTjdXZWJDb3JlMThJREJEYXRhYmFz
ZUJhY2tlbmQxNG9wZW5Db25uZWN0aW9uRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEySURCQ2FsbGJh
Y2tzRUVFTlMyX0lOU18yMElEQkRhdGFiYXNlQ2FsbGJhY2tzRUVFeHkKK19fWk43V2ViQ29yZTE4
SURCRGF0YWJhc2VCYWNrZW5kNmNyZWF0ZUVSS04zV1RGNlN0cmluZ0VTNF9QTlNfMjZJREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZUVSTlNfMTlJREJTZXJ2ZXJDb25uZWN0aW9uRQorX19aTjdXZWJD
b3JlMThJREJEYXRhYmFzZUJhY2tlbmREMUV2CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZGRkMTdlLi5iMDNjYjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNjUwLDkgKzE2NTAsOSBAQAogCQk1MTAxOTQ0MDE4MzZEMjA4MDA5MjU1MjMgLyog
SURCSW5kZXhXcml0ZXJMZXZlbERCLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMDE5NDNFMTgzNkQyMDgwMDkyNTUyMyAvKiBJREJJbmRleFdyaXRl
ckxldmVsREIuY3BwICovOyB9OwogCQk1MTAxOTQ0MTE4MzZEMjA4MDA5MjU1MjMgLyogSURCSW5k
ZXhXcml0ZXJMZXZlbERCLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTAxOTQzRjE4MzZEMjA4MDA5MjU1MjMgLyogSURCSW5kZXhXcml0ZXJMZXZlbERC
LmggKi87IH07CiAJCTUxMDE5NDQ0MTgzNkY3RTQwMDkyNTUyMyAvKiBJREJDdXJzb3JCYWNrZW5k
T3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTAxOTQ0MjE4MzZGN0U0MDA5MjU1MjMgLyogSURCQ3Vyc29yQmFja2VuZE9wZXJhdGlv
bnMuY3BwICovOyB9OwotCQk1MTAxOTQ0NTE4MzZGN0U1MDA5MjU1MjMgLyogSURCQ3Vyc29yQmFj
a2VuZE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMDE5NDQzMTgzNkY3RTQwMDkyNTUyMyAvKiBJREJDdXJzb3JCYWNrZW5kT3BlcmF0
aW9ucy5oICovOyB9OworCQk1MTAxOTQ0NTE4MzZGN0U1MDA5MjU1MjMgLyogSURCQ3Vyc29yQmFj
a2VuZE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMDE5NDQzMTgzNkY3RTQwMDkyNTUyMyAvKiBJREJDdXJzb3JCYWNrZW5kT3BlcmF0
aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxMDU5REREMTgyMEIxNzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRp
b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MDU5REQ5MTgyMEIxNzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25z
LmNwcCAqLzsgfTsKLQkJNTEwNTlEREUxODIwQjE3NjAwREZGOUIxIC8qIElEQlRyYW5zYWN0aW9u
QmFja2VuZE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMDU5RERBMTgyMEIxNzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tl
bmRPcGVyYXRpb25zLmggKi87IH07CisJCTUxMDU5RERFMTgyMEIxNzYwMERGRjlCMSAvKiBJREJU
cmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1OUREQTE4MjBCMTc2MDBERkY5QjEgLyogSURCVHJhbnNh
Y3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxMEEzMjZGMTgzMTg0MzEwMDNDNTMyNiAvKiBJREJTZXJ2ZXJD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTBBMzI2RTE4MzE4NDMxMDAzQzUzMjYgLyogSURCU2VydmVyQ29ubmVjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMEI3REI3MTgy
RDlGNUQwMDlCRjk1NyAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQjdEQjUxODJEOUY1RDAwOUJGOTU3
IC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZC5jcHAgKi87IH07CiAJCTUxMEI3REI4MTgyRDlGNUQw
MDlCRjk1NyAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEI3REI2MTgyRDlGNUQwMDlCRjk1NyAvKiBJREJU
cmFuc2FjdGlvbkJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDgyNTc5Y2MuLjJlNGQzMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw3NCBAQAorMjAxMy0xMS0xOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIFdlYklEQlNlcnZlckNvbm5lY3Rpb24gYW5kIERhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb24gc3R1YnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNDU2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFsc28gcmVtb3ZlIFdlYi9EYXRhYmFzZVByb2Nlc3NEYXRhYmFzZUJh
Y2tlbmQgc3R1YnMsIGFzIHRoYXQgaXMgbm8gbG9uZ2VyIHRoZSBhYnN0cmFjdGlvbiBsYXllci4K
KworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uOjplc3RhYmxpc2hJREJDb25uZWN0aW9uKToKKyAgICAgICAgKiBEYXRhYmFz
ZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogRGF0
YWJhc2VQcm9jZXNzL0RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoK
KworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURC
Q29ubmVjdGlvbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5jcHAuCisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OkRhdGFiYXNlUHJvY2Vz
c0lEQkNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NJREJDb25u
ZWN0aW9uOjp+RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbik6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFz
ZVByb2Nlc3NJREJDb25uZWN0aW9uLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5o
LgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpjcmVhdGUp
OgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURC
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLm1l
c3NhZ2VzLmluLgorCisgICAgICAgICogU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvSURCVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dW5pcXVlRGF0YWJhc2VJZGVudGlmaWVyKTog
TW9kaWZpZWQgdG8gdGFrZSB0d28gc2VjdXJpdHkgb3JpZ2luIGFyZ3VtZW50cy4KKyAgICAgICAg
KiBTaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9JREJVdGlsaXRpZXMuaDoKKworICAgICAgICAq
IFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3RvcnlCYWNrZW5kOjpvcGVuKToKKworICAgICAg
ICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9u
LmNwcDogQWRkZWQuIFN0dWJiZWQgb3V0IGFsbCB0aGUgcHVyZSB2aXJ0dWFsIG1ldGhvZHMuCisg
ICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlQmFja2VuZElkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6fldlYklEQlNlcnZlckNvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjppc0Nsb3Nl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OmdldE9yRXN0YWJs
aXNoSURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNv
bm5lY3Rpb246OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
Q29ubmVjdGlvbjo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0
aW9uOjpvcGVuVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25u
ZWN0aW9uOjpiZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
Q29ubmVjdGlvbjo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uOjpyZXNldFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCU2VydmVyQ29ubmVjdGlvbjo6cm9sbGJhY2tUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OnNldEluZGV4S2V5cyk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkZWxldGVJbmRleCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OmdldCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlNlcnZlckNvbm5lY3Rpb246OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZl
ckNvbm5lY3Rpb246Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJD
b25uZWN0aW9uOjpjb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rp
b246OmRlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlv
bjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5l
Y3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
Q29ubmVjdGlvbjo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCU2VydmVyQ29ubmVjdGlvbjo6Y3Vyc29yQWR2YW5jZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlNlcnZlckNvbm5lY3Rpb246OmN1cnNvckl0ZXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OmN1cnNvclByZWZldGNoUmVzZXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklE
QlNlcnZlckNvbm5lY3Rpb24uaDogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFi
YXNlcy9JbmRleGVkREIvV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYlByb2Nlc3NJREJE
YXRhYmFzZUJhY2tlbmQuaDogUmVtb3ZlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJh
c2VzL1dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKwogMjAxMy0xMS0xOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIExldCdzIHRyeSB0aGlzIGFnYWluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmNwcAppbmRleCBhNmZlNzNhLi41NmM1ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uLmNwcApAQCAtMjYsMTUgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmgiCiAKLSNpbmNsdWRlICJE
YXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVBy
b2Nlc3NJREJEYXRhYmFzZUJhY2tlbmRNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0
aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25N
ZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKICNpZiBFTkFCTEUoREFUQUJB
U0VfUFJPQ0VTUykKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBQYXNzUmVmUHRyPERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbj4gRGF0YWJh
c2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTYxLDEwICs1OSwxMCBAQCB2b2lkIERh
dGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiogY29ubgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NJREJE
YXRhYmFzZUJhY2tlbmQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBJREJEYXRh
YmFzZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGJhY2tlbmRJdGVyYXRvciA9IG1faWRiRGF0YWJhc2VC
YWNrZW5kcy5maW5kKGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKLSAgICAgICAgaWYgKGJhY2tl
bmRJdGVyYXRvciAhPSBtX2lkYkRhdGFiYXNlQmFja2VuZHMuZW5kKCkpCi0gICAgICAgICAgICBi
YWNrZW5kSXRlcmF0b3ItPnZhbHVlLT5kaWRSZWNlaXZlRGF0YWJhc2VQcm9jZXNzSURCRGF0YWJh
c2VCYWNrZW5kTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5l
Y3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBJREJDb25uZWN0aW9uTWFw
OjppdGVyYXRvciBiYWNrZW5kSXRlcmF0b3IgPSBtX2lkYkNvbm5lY3Rpb25zLmZpbmQoZGVjb2Rl
ci5kZXN0aW5hdGlvbklEKCkpOworICAgICAgICBpZiAoYmFja2VuZEl0ZXJhdG9yICE9IG1faWRi
Q29ubmVjdGlvbnMuZW5kKCkpCisgICAgICAgICAgICBiYWNrZW5kSXRlcmF0b3ItPnZhbHVlLT5k
aWRSZWNlaXZlRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbk1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC04MSwxMCArNzksMTAg
QEAgdm9pZCBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW8KIAogfQogCi12b2lkIERhdGFiYXNlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6ZXN0YWJsaXNoSURCRGF0YWJhc2VCYWNrZW5kKHVpbnQ2NF90IGJhY2tl
bmRJZGVudGlmaWVyKQordm9pZCBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmVzdGFi
bGlzaElEQkNvbm5lY3Rpb24odWludDY0X3QgYmFja2VuZElkZW50aWZpZXIpCiB7Ci0gICAgUmVm
UHRyPERhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZD4gYmFja2VuZCA9IERhdGFiYXNl
UHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6Y3JlYXRlKGJhY2tlbmRJZGVudGlmaWVyKTsKLSAg
ICBtX2lkYkRhdGFiYXNlQmFja2VuZHMuc2V0KGJhY2tlbmRJZGVudGlmaWVyLCBiYWNrZW5kLnJl
bGVhc2UoKSk7CisgICAgUmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5l
Y3Rpb24gPSBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpjcmVhdGUoYmFja2VuZElkZW50
aWZpZXIpOworICAgIG1faWRiQ29ubmVjdGlvbnMuc2V0KGJhY2tlbmRJZGVudGlmaWVyLCBjb25u
ZWN0aW9uLnJlbGVhc2UoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlVG9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlVG9XZWJQ
cm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDY3ZGM5NmMuLmFlZTQ2N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmgKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWNsYXNzIERhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDsKK2NsYXNzIERhdGFi
YXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb247CiAKIGNsYXNzIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29u
bmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bj4sIHB1YmxpYyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBDb3JlSVBDOjpN
ZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKQEAgLTU5LDEwICs1OSwxMCBAQCBwcml2YXRlOgogCiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgLy8gTWVzc2FnZXMgaGFuZGxlcnMKLSAg
ICB2b2lkIGVzdGFibGlzaElEQkRhdGFiYXNlQmFja2VuZCh1aW50NjRfdCBiYWNrZW5kSWRlbnRp
Zmllcik7CisgICAgdm9pZCBlc3RhYmxpc2hJREJDb25uZWN0aW9uKHVpbnQ2NF90IGJhY2tlbmRJ
ZGVudGlmaWVyKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERhdGFi
YXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZD4+IElEQkRhdGFiYXNlQmFja2VuZE1hcDsKLSAg
ICBJREJEYXRhYmFzZUJhY2tlbmRNYXAgbV9pZGJEYXRhYmFzZUJhY2tlbmRzOworICAgIHR5cGVk
ZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+
PiBJREJDb25uZWN0aW9uTWFwOworICAgIElEQkNvbm5lY3Rpb25NYXAgbV9pZGJDb25uZWN0aW9u
czsKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogICAgIFJlZlB0cjxDb3Jl
SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA2ZTk2NTY1Li42M2JkZGU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcg
QEAKIG1lc3NhZ2VzIC0+IERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbiBMZWdhY3lSZWNl
aXZlciB7CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgIyBDcmVhdGVzIGEgY29u
bmVjdGlvbiBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIGEgV2ViUHJvY2VzcwotICAgIEVzdGFibGlz
aElEQkRhdGFiYXNlQmFja2VuZCh1aW50NjRfdCBiYWNrZW5kSWRlbnRpZmllcikKKyAgICBFc3Rh
Ymxpc2hJREJDb25uZWN0aW9uKHVpbnQ2NF90IGJhY2tlbmRJZGVudGlmaWVyKQogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZWM1NWMxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nl
c3NJREJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaCIK
KworI2luY2x1ZGUgIkRhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIgorCisjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6RGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbih1aW50NjRfdCBiYWNrZW5kSWRlbnRpZmllcikKKyAgICA6IG1f
YmFja2VuZElkZW50aWZpZXIoYmFja2VuZElkZW50aWZpZXIpCit7Cit9CisKK0RhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb246On5EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uKCkKK3sKK30K
Kwordm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjplc3RhYmxpc2hDb25uZWN0aW9u
KCkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgaXMgc3VjY2Vzc2Z1bGx5IGNhbGxlZCBi
eSBtZXNzYWdpbmcgZnJvbSB0aGUgV2ViUHJvY2Vzcy4KKyAgICAvLyBOb3cgaW1wbGVtZW50IGl0
LgorfQorCitDb3JlSVBDOjpDb25uZWN0aW9uKiBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9u
OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+
Y29ubmVjdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0lu
ZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uM2VjN2I1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlv
bi5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERhdGFiYXNlUHJvY2Vz
c0lEQkNvbm5lY3Rpb25faAorI2RlZmluZSBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uX2gK
KworI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKSAmJiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjsKKworY2xhc3MgRGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGFiYXNlUHJvY2Vzc0lE
QkNvbm5lY3Rpb24+LCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVNlbmRlciB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZlB0cjxEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uPiBjcmVhdGUodWlu
dDY0X3QgYmFja2VuZElkZW50aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24oYmFja2VuZElkZW50aWZpZXIpKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIH5EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uKCk7CisKKyAg
ICAvLyBNZXNzYWdlIGhhbmRsZXJzLgorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFiYXNlUHJvY2Vz
c0lEQkNvbm5lY3Rpb25NZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rp
b24odWludDY0X3QgYmFja2VuZElkZW50aWZpZXIpOworCisgICAgLy8gQ29yZUlQQzo6TWVzc2Fn
ZVNlbmRlcgorICAgIHZpcnR1YWwgQ29yZUlQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9iYWNrZW5kSWRlbnRpZmllcjsgfQor
CisgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24o
KTsKKworICAgIFJlZlB0cjxEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IG1fY29ubmVj
dGlvbjsKKyAgICB1aW50NjRfdCBtX2JhY2tlbmRJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5B
QkxFKERBVEFCQVNFX1BST0NFU1MpCisjZW5kaWYgLy8gRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVj
dGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE2YjFm
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRl
eGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDI5IEBACisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCisKK21lc3Nh
Z2VzIC0+IERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIgeworICAg
IEVzdGFibGlzaENvbm5lY3Rpb24oKQorfQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFU
QUJBU0UpICYmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJEYXRhYmFz
ZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9E
YXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1MDBjNzc5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmgiCi0K
LSNpbmNsdWRlICJEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKLQotI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLURhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6RGF0YWJh
c2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kKHVpbnQ2NF90IGJhY2tlbmRJZGVudGlmaWVyKQot
ICAgIDogbV9iYWNrZW5kSWRlbnRpZmllcihiYWNrZW5kSWRlbnRpZmllcikKLXsKLX0KLQotRGF0
YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjp+RGF0YWJhc2VQcm9jZXNzSURCRGF0YWJh
c2VCYWNrZW5kKCkKLXsKLX0KLQotdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tl
bmQ6Om9wZW5Db25uZWN0aW9uKCkKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgaXMgc3Vj
Y2Vzc2Z1bGx5IGNhbGxlZCBieSBtZXNzYWdpbmcgZnJvbSB0aGUgV2ViUHJvY2Vzcy4KLSAgICAv
LyBOb3cgaW1wbGVtZW50IGl0LgotfQotCi1Db3JlSVBDOjpDb25uZWN0aW9uKiBEYXRhYmFzZVBy
b2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkKLXsKLSAg
ICByZXR1cm4gbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShE
QVRBQkFTRV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCRGF0
YWJhc2VCYWNrZW5kLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyYzA0NWUuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRh
YmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFj
a2VuZF9oCi0jZGVmaW5lIERhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZF9oCi0KLSNp
bmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9JREJEYXRhYmFzZUJh
Y2tlbmQuaD4KLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJB
U0VfUFJPQ0VTUykKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIERhdGFiYXNlVG9XZWJQ
cm9jZXNzQ29ubmVjdGlvbjsKLQotLy8gRklYTUU6IFdoZW4gYWRkaW5nIGFjdHVhbCBJREIgbG9n
aWMsIHRoaXMgY2xhc3Mgd2lsbCBpbmhlcml0IGZyb20gV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kCi0vLyBpbnN0ZWFkIG9mIGluaGVyaXRpbmcgZnJvbSBSZWZDb3VudGVkIGRpcmVjdGx5Lgot
Ly8gRG9pbmcgc28gd2lsbCBhbHNvIGFkZCBhIGxhcmdlIG51bWJlciBvZiBpbnRlcmZhY2UgbWV0
aG9kcyB0byBpbXBsZW1lbnQgd2hpY2ggaXMgd2h5IEknbSBob2xkaW5nIG9mZiBmb3Igbm93Lgot
Ci1jbGFzcyBEYXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQgOiBwdWJsaWMgUmVmQ291
bnRlZDxEYXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ+LCBwdWJsaWMgQ29yZUlQQzo6
TWVzc2FnZVNlbmRlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxEYXRhYmFzZVByb2Nl
c3NJREJEYXRhYmFzZUJhY2tlbmQ+IGNyZWF0ZSh1aW50NjRfdCBiYWNrZW5kSWRlbnRpZmllcikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGF0YWJhc2VQcm9jZXNzSURCRGF0
YWJhc2VCYWNrZW5kKGJhY2tlbmRJZGVudGlmaWVyKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+
RGF0YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kKCk7Ci0KLSAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzLgotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFj
a2VuZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVy
Jik7Ci0KLXByaXZhdGU6Ci0gICAgRGF0YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kKHVp
bnQ2NF90IGJhY2tlbmRJZGVudGlmaWVyKTsKLQotICAgIC8vIENvcmVJUEM6Ok1lc3NhZ2VTZW5k
ZXIKLSAgICB2aXJ0dWFsIENvcmVJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIE9WRVJSSURFIHsgcmV0dXJuIG1fYmFja2VuZElkZW50aWZpZXI7IH0KLQotICAg
IC8vIE1lc3NhZ2UgaGFuZGxlcnMuCi0gICAgdm9pZCBvcGVuQ29ubmVjdGlvbigpOwotCi0gICAg
UmVmUHRyPERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwotICAg
IHVpbnQ2NF90IG1fYmFja2VuZElkZW50aWZpZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJB
U0VfUFJPQ0VTUykKLSNlbmRpZiAvLyBEYXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9E
YXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNl
QmFja2VuZC5tZXNzYWdlcy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE2OGM2
Zi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L0RhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5tZXNzYWdlcy5pbgorKysgL2Rldi9u
dWxsCkBAIC0xLDI5ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0
OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJBU0VfUFJP
Q0VTUykKLQotbWVzc2FnZXMgLT4gRGF0YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kIExl
Z2FjeVJlY2VpdmVyIHsKLSAgICBPcGVuQ29ubmVjdGlvbigpCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBjNDM4MzViLi43NWU5MTE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKQEAgLTY0LDcgKzY0LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBc
CiAgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyIFwKICAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSBcCiAgICAgRGF0YWJhc2VQcm9jZXNzIFwKLSAgICBEYXRhYmFzZVByb2Nlc3NJREJEYXRh
YmFzZUJhY2tlbmQgXAorICAgIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24gXAogICAgIERh
dGFiYXNlUHJvY2Vzc1Byb3h5IFwKICAgICBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24g
XAogICAgIERyYXdpbmdBcmVhIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
YXRhYmFzZXMvSW5kZXhlZERCL0lEQlV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9JREJVdGlsaXRpZXMuY3BwCmluZGV4IDAxMWUyNTQuLjg1
YTdiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EYXRhYmFzZXMvSW5kZXhl
ZERCL0lEQlV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0RhdGFiYXNl
cy9JbmRleGVkREIvSURCVXRpbGl0aWVzLmNwcApAQCAtMjgsMTQgKzI4LDIxIEBACiAjaW5jbHVk
ZSAiSURCVXRpbGl0aWVzLmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1TdHJpbmcgdW5pcXVlRGF0YWJh
c2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCitTdHJpbmcgdW5pcXVlRGF0YWJhc2VJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgb3BlbmluZ09yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG1h
aW5GcmFtZU9yaWdpbikKIHsKLSAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW4uZGF0YWJhc2VJZGVu
dGlmaWVyKCkgKyBkYXRhYmFzZU5hbWU7CisgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVy
OworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG9wZW5pbmdPcmlnaW4uZGF0YWJhc2VJZGVudGlm
aWVyKCkpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJfIik7CisgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFpbkZyYW1lT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiXyIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGRhdGFiYXNl
TmFtZSk7CisgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGF0YWJh
c2VzL0luZGV4ZWREQi9JREJVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EYXRh
YmFzZXMvSW5kZXhlZERCL0lEQlV0aWxpdGllcy5oCmluZGV4IDJlZGY3ZWIuLjkxNmIxYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EYXRhYmFzZXMvSW5kZXhlZERCL0lEQlV0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EYXRhYmFzZXMvSW5kZXhlZERC
L0lEQlV0aWxpdGllcy5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotU3RyaW5nIHVuaXF1ZURhdGFiYXNlSWRlbnRpZmllcihj
b25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4m
KTsKK1N0cmluZyB1bmlxdWVEYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZU5hbWUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBvcGVuaW5nT3JpZ2luLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgbWFpbkZyYW1lT3JpZ2luKTsKICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWM4ZjQ2Mi4uYjVmMmJhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDc3LDYgKzQ3
Nyw4IEBACiAJCTUxMjE3NDY1MTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyMTc0NjMx
NjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJlc291cmNlQnVmZmVyLmggKi87IH07CiAJCTUxMjNDRjFC
MTMzRDI2MEEwMDU2RjgwMCAvKiBXS0ljb25EYXRhYmFzZUNHLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjNDRjE5MTMzRDI2MEEwMDU2RjgwMCAv
KiBXS0ljb25EYXRhYmFzZUNHLmNwcCAqLzsgfTsKIAkJNTEyM0NGMUMxMzNEMjYwQTAwNTZGODAw
IC8qIFdLSWNvbkRhdGFiYXNlQ0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMjNDRjFBMTMzRDI2MEEwMDU2RjgwMCAvKiBXS0ljb25EYXRhYmFzZUNH
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTEy
OTA5OTIxODNBQ0VBRjAwNTUyMkE2IC8qIFdlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOTA5OTAxODNBQ0VB
RjAwNTUyMkE2IC8qIFdlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwICovOyB9OworCQk1MTI5MDk5
MzE4M0FDRUFGMDA1NTIyQTYgLyogV2ViSURCU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOTA5OTExODNBQ0VBRjAwNTUy
MkE2IC8qIFdlYklEQlNlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNTEyOTM1RDcxMjg4RDE5
NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51SXRlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTI5MzVENTEyODhEMTk0MDBBNEI2OTUgLyogV2Vi
Q29udGV4dE1lbnVJdGVtLmNwcCAqLzsgfTsKIAkJNTEyOTM1RDgxMjg4RDE5NDAwQTRCNjk1IC8q
IFdlYkNvbnRleHRNZW51SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEyOTM1RDYxMjg4RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51SXRl
bS5oICovOyB9OwogCQk1MTI5MzVFMzEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQ
YWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEyOTM1RTExMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLzsgfTsKQEAgLTU5NSw2ICs1OTcsOSBAQAogCQk1
MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDAyRjY3MTMyRUM3
MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oICovOyB9OwogCQk1MUQwMkY2
QjEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMDJG
NjgxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKIAkJNTFEMDJGNkMxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFz
ZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRDAyRjY5MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1l
c3NhZ2VzLmggKi87IH07CisJCTUxRDBENDMxMTgzQjM0MTMwMDk3MDQxRCAvKiBEYXRhYmFzZVBy
b2Nlc3NJREJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRDBENDJFMTgzQjM0MTMwMDk3MDQxRCAvKiBEYXRhYmFzZVByb2Nlc3NJ
REJDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJNTFEMEQ0MzYxODNCMzUzRDAwOTcwNDFEIC8qIERh
dGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMEQ0MzQxODNCMzUzRDAwOTcw
NDFEIC8qIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OworCQk1MUQwRDQzNzE4M0IzNTNEMDA5NzA0MUQgLyogRGF0YWJhc2VQcm9jZXNzSURCQ29u
bmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUQwRDQzNTE4M0IzNTNEMDA5NzA0MUQgLyogRGF0YWJhc2VQcm9jZXNzSURCQ29u
bmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CiAJCTUxRDEzMDRFMTM4MkU1QjcwMDM1MUVERCAvKiBT
ZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0Y1MDY4NDEyNDMxODYxMDA1OTU1QUUgLyogU2VjdXJpdHkuZnJhbWV3b3Jr
ICovOyB9OwogCQk1MUQxMzA1MzEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEz
MDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwICovOyB9OwogCQk1
MUQxMzA1NDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1MDEzODJFQUMwMDAz
NTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmggKi87IH07CkBAIC02MDcsMTYgKzYxMiwxMSBA
QAogCQk1MUUzNTFDQjE4MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzNTFDOTE4MEYyQ0NDMDBF
NTNCRTkgLyogSURCVXRpbGl0aWVzLmggKi87IH07CiAJCTUxRTM1MUY1MTgwRjVDNzUwMEU1M0JF
OSAvKiBXZWJJREJGYWN0b3J5QmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzNTFGMTE4MEY1Qzc1MDBFNTNCRTkgLyogV2ViSURCRmFj
dG9yeUJhY2tlbmQuY3BwICovOyB9OwogCQk1MUUzNTFGNjE4MEY1Qzc1MDBFNTNCRTkgLyogV2Vi
SURCRmFjdG9yeUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRTM1MUYyMTgwRjVDNzUwMEU1M0JFOSAvKiBXZWJJREJGYWN0b3J5QmFja2Vu
ZC5oICovOyB9OwotCQk1MUUzNTFGNzE4MEY1Qzc1MDBFNTNCRTkgLyogV2ViUHJvY2Vzc0lEQkRh
dGFiYXNlQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUUzNTFGMzE4MEY1Qzc1MDBFNTNCRTkgLyogV2ViUHJvY2Vzc0lEQkRhdGFiYXNl
QmFja2VuZC5jcHAgKi87IH07Ci0JCTUxRTM1MUY4MTgwRjVDNzUwMEU1M0JFOSAvKiBXZWJQcm9j
ZXNzSURCRGF0YWJhc2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUUzNTFGNDE4MEY1Qzc1MDBFNTNCRTkgLyogV2ViUHJvY2Vzc0lEQkRh
dGFiYXNlQmFja2VuZC5oICovOyB9OwogCQk1MUUzNTFGRjE4MEY1RDBGMDBFNTNCRTkgLyogRGF0
YWJhc2VQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRTM1MUZBMTgwRjVEMEIwMEU1M0JFOSAvKiBEYXRhYmFzZVByb2Nlc3MuY3BwICov
OyB9OwogCQk1MUUzNTIwMDE4MEY1RDBGMDBFNTNCRTkgLyogRGF0YWJhc2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRTM1MUZEMTgwRjVEMEIwMEU1M0JFOSAvKiBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwICovOyB9OwogCQk1MUUzNTIwMjE4MEY1RDFFMDBFNTNCRTkgLyogRGF0YWJhc2VQ
cm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFFMzUyMDExODBGNUQxRTAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzc01hYy5tbSAqLzsg
fTsKIAkJNTFFMzUyMDUxODBGNUQ0RjAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzc01haW4ubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzNTIwMzE4
MEY1RDRCMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzTWFpbi5tbSAqLzsgfTsKIAkJNTFFMzUy
MDkxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzNTIwODE4MEY1RDZC
MDBFNTNCRTkgLyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbSAqLzsgfTsKLQkJNTFFMzUy
MEQxODBGNURBMDAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzNTIw
QTE4MEY1RDlEMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmNw
cCAqLzsgfTsKLQkJNTFFMzUyMTAxODBGNjNGQjAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzc0lE
QkRhdGFiYXNlQmFja2VuZE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzNTIwRTE4MEY2M0ZCMDBFNTNCRTkgLyogRGF0
YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
LQkJNTFFMzUyMTExODBGNjNGQjAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNl
QmFja2VuZE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUUzNTIwRjE4MEY2M0ZCMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzSURCRGF0
YWJhc2VCYWNrZW5kTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTFFM0I2N0YxNkYyNjZCMzAwOTk2OERD
IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTNCNjdFMTZGMjY2QjMwMDk5NjhEQyAvKiBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXJNYWMubW0gKi87IH07CiAJCTUxRUZDMUNGMTUyNEU2MjUwMEM5QTkzOCAv
KiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQTJENTQxNTIxMTE4NjAwQzFCQTBCIC8qIFdLQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTFGMDYwRTAxNjU0MzE3RjAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9h
ZGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRjA2MERFMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2Vz
LmggKi87IH07CkBAIC0xOTkyLDYgKzE5OTIsOCBAQAogCQk1MTIxNzQ2MzE2NEMyMTM3MDAzN0E1
QzEgLyogV2ViUmVzb3VyY2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViUmVzb3VyY2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEy
M0NGMTkxMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV0tJY29uRGF0YWJhc2VDRy5jcHA7IHBhdGggPSBj
Zy9XS0ljb25EYXRhYmFzZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEy
M0NGMUExMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJY29uRGF0YWJhc2VDRy5oOyBwYXRoID0gY2cvV0tJY29u
RGF0YWJhc2VDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTI5MDk5MDE4M0FD
RUFGMDA1NTIyQTYgLyogV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyOTA5OTExODNBQ0VBRjAwNTUyMkE2IC8qIFdlYklE
QlNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
SURCU2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTI5
MzVENTEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51SXRlbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjkzNUQ2MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJD
b250ZXh0TWVudUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29u
dGV4dE1lbnVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjkzNUUxMTI4
OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VD
b250ZXh0TWVudUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTE3
LDYgKzIxMTksMTEgQEAKIAkJNTFEMDJGNjcxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRh
YmFzZU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25E
YXRhYmFzZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDAyRjY4
MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RDAyRjY5MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZVByb3h5TWVz
c2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMEQ0MkUxODNCMzQxMzAw
OTcwNDFEIC8qIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDBENDJGMTgzQjM0MTMwMDk3MDQxRCAv
KiBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFEMEQ0MzAxODNCMzQxMzAwOTcwNDFEIC8qIERhdGFiYXNlUHJvY2Vz
c0lEQkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRGF0YWJh
c2VQcm9jZXNzSURCQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTFEMEQ0MzQxODNCMzUzRDAwOTcwNDFEIC8qIERhdGFiYXNlUHJvY2Vzc0lEQkNv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDBENDM1MTgzQjM1M0QwMDk3MDQxRCAv
KiBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbk1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDRGMTM4MkVBQzAwMDM1MUVERCAv
KiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2VjSXRlbVJlcXVlc3REYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFEMTMwNTAxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWNJdGVtUmVxdWVzdERhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0
ZW1SZXNwb25zZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2VjSXRlbVJlc3BvbnNlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTI4LDggKzIxMzUsNiBAQAogCQk1MUUzNTFDOTE4MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRpbGl0
aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlV0aWxpdGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUzNTFGMTE4MEY1Qzc1MDBFNTNCRTkgLyog
V2ViSURCRmFjdG9yeUJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViSURCRmFjdG9yeUJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUUzNTFGMjE4MEY1Qzc1MDBFNTNCRTkgLyogV2ViSURCRmFjdG9yeUJhY2tlbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSURCRmFjdG9yeUJhY2tlbmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFFMzUxRjMxODBGNUM3NTAwRTUzQkU5IC8q
IFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRTM1MUY0MTgwRjVDNzUwMEU1M0JFOSAvKiBXZWJQcm9j
ZXNzSURCRGF0YWJhc2VCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFFMzUxRkExODBGNUQwQjAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUUzNTFGQjE4MEY1RDBCMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlUHJvY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUUzNTFGQzE4MEY1RDBCMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IERhdGFiYXNlUHJvY2Vzcy5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIxNDEsMTEgKzIxNDYsNiBAQAogCQk1MUUzNTIwNjE4MEY1RDU5MDBF
NTNCRTkgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFMzUyMDcxODBGNUQ2MTAwRTUzQkU5IC8qIEluZm8ucGxp
c3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnBsaXN0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxRTM1MjA4MTgwRjVENkIwMEU1M0JFOSAvKiBEYXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YWJhc2VTZXJ2
aWNlRW50cnlQb2ludC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFFMzUyMEEx
ODBGNUQ5RDAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUUzNTIwQjE4MEY1RDlEMDBFNTNCRTkg
LyogRGF0YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERh
dGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1MUUzNTIwQzE4MEY1RDlEMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzSURCRGF0
YWJhc2VCYWNrZW5kLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNl
QmFja2VuZC5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFFMzUy
MEUxODBGNjNGQjAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZE1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
YXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmRNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUUzNTIwRjE4MEY2M0ZCMDBFNTNCRTkgLyogRGF0
YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kTWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFM0I2N0UxNkYyNjZCMzAwOTk2
OERDIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGMDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291
cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291
cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFGMDYwREUxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMzgzMCwxMCArMzgzMCwxMCBAQAogCQk1MTFGOEVEQTE4MDg4
MTY2MDA0N0RBOTYgLyogSW5kZXhlZERCICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk1MTI5MDk5MDE4M0FDRUFGMDA1NTIyQTYgLyogV2ViSURCU2VydmVy
Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNTEyOTA5OTExODNBQ0VBRjAwNTUyMkE2IC8qIFdlYklE
QlNlcnZlckNvbm5lY3Rpb24uaCAqLywKIAkJCQk1MUUzNTFGMTE4MEY1Qzc1MDBFNTNCRTkgLyog
V2ViSURCRmFjdG9yeUJhY2tlbmQuY3BwICovLAogCQkJCTUxRTM1MUYyMTgwRjVDNzUwMEU1M0JF
OSAvKiBXZWJJREJGYWN0b3J5QmFja2VuZC5oICovLAotCQkJCTUxRTM1MUYzMTgwRjVDNzUwMEU1
M0JFOSAvKiBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmNwcCAqLywKLQkJCQk1MUUzNTFG
NDE4MEY1Qzc1MDBFNTNCRTkgLyogV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBJbmRleGVkREI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtNDAyMiw5ICs0MDIyLDkgQEAKIAkJNTFFMzUxRjkxODBGNUNGNjAwRTUzQkU5IC8qIEluZGV4
ZWREQiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTFF
MzUyMEExODBGNUQ5RDAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2Vu
ZC5jcHAgKi8sCi0JCQkJNTFFMzUyMEIxODBGNUQ5RDAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vz
c0lEQkRhdGFiYXNlQmFja2VuZC5oICovLAotCQkJCTUxRTM1MjBDMTgwRjVEOUQwMEU1M0JFOSAv
KiBEYXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQubWVzc2FnZXMuaW4gKi8sCisJCQkJ
NTFEMEQ0MkUxODNCMzQxMzAwOTcwNDFEIC8qIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24u
Y3BwICovLAorCQkJCTUxRDBENDJGMTgzQjM0MTMwMDk3MDQxRCAvKiBEYXRhYmFzZVByb2Nlc3NJ
REJDb25uZWN0aW9uLmggKi8sCisJCQkJNTFEMEQ0MzAxODNCMzQxMzAwOTcwNDFEIC8qIERhdGFi
YXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkpOwogCQkJcGF0aCA9
IEluZGV4ZWREQjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01MjMwLDggKzUyMzAs
NiBAQAogCQlDMENFNzI5RDEyNDdFNzFEMDBCQzBFQzQgLyogRGVyaXZlZCBTb3VyY2VzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1MTAzMkYxQjE4MEY3
OTE3MDA5NjFCQjcgLyogRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKLQkJCQk1MTAzMkYxQzE4MEY3OTE3MDA5NjFCQjcgLyogRGF0YWJhc2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKIAkJCQk3NUU3NDlFNTE4MERCQjk4MDAw
ODhCQTYgLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJ
CTc1RTc0OUU2MTgwREJCOTgwMDA4OEJBNiAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlck1lc3NhZ2Vz
LmggKi8sCiAJCQkJNzVFNzQ5RTcxODBEQkI5ODAwMDg4QkE2IC8qIFdlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtNTI0NCwxMiArNTI0MiwxNCBAQAog
CQkJCTI5ODRGNTg3MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNz
YWdlcy5oICovLAogCQkJCTI5ODRGNTdBMTY0QjkxNUYwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMjk4NEY1N0IxNjRCOTE1
RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLywKLQkJ
CQk1MUUzNTIwRTE4MEY2M0ZCMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VC
YWNrZW5kTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKLQkJCQk1MUUzNTIwRjE4MEY2M0ZCMDBFNTNC
RTkgLyogRGF0YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kTWVzc2FnZXMuaCAqLywKKwkJ
CQk1MUQwRDQzNDE4M0IzNTNEMDA5NzA0MUQgLyogRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJNTFEMEQ0MzUxODNCMzUzRDAwOTcwNDFEIC8q
IERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb25NZXNzYWdlcy5oICovLAogCQkJCTUxMkE5NzVF
MTgwRTAzMTYwMDM5QTE0OSAvKiBEYXRhYmFzZVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICov
LAogCQkJCTUxMkE5NzVGMTgwRTAzMTYwMDM5QTE0OSAvKiBEYXRhYmFzZVByb2Nlc3NNZXNzYWdl
cy5oICovLAogCQkJCTUxMkE5NzY3MTgwRTA5QjgwMDM5QTE0OSAvKiBEYXRhYmFzZVByb2Nlc3NQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTEyQTk3NjgxODBFMDlCODAwMzlBMTQ5
IC8qIERhdGFiYXNlUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLywKKwkJCQk1MTAzMkYxQjE4MEY3
OTE3MDA5NjFCQjcgLyogRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKKwkJCQk1MTAzMkYxQzE4MEY3OTE3MDA5NjFCQjcgLyogRGF0YWJhc2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKIAkJCQkxQUI3RDYxNzEyODhCOUQ5MDBD
RkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUFCN0Q2
MTgxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlcy5oICovLAogCQkJCTFB
NjQyMjk3MTJERDAyOTIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCkBAIC01NjA5LDcgKzU2MDksNiBAQAogCQkJCTFBMkQ4NDNBMTI3RjY1RDUwMDFFQjk2MiAv
KiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTJEODJBNzEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyRDgyQTkxMjdGNEVBQjAwMUVCOTYyIC8qIE5QUmVtb3RlT2JqZWN0TWFwLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MUUzNTFGODE4MEY1Qzc1MDBFNTNCRTkgLyogV2ViUHJvY2Vzc0lE
QkRhdGFiYXNlQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMTYxQjAxMUYzNzY2NDAw
OEFEMEY1IC8qIE5QUnVudGltZU9iamVjdE1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBMDQ5
QjgxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkRBMDQ5QjQxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC01ODk3LDcgKzU4OTYsNiBAQAogCQkJCUJDRDI1RjE3MTFE
NkJERTEwMDE2OUIwRSAvKiBXS0J1bmRsZUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Yw
NDlFNjExRkUyMEY2MDBGODZBNTggLyogV0tCdW5kbGVGcmFtZVByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNDk4NjJGMTI0RDE4QzEwMEQ4MzRFMSAvKiBXS0J1bmRsZUhpdFRlc3RSZXN1
bHQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxRTM1MjExMTgwRjYzRkIwMEU1M0JFOSAvKiBEYXRh
YmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMyMDRFRjIxMUM4M0VDODAwOEYzMzc1IC8qIFdLQnVuZGxlSW5pdGlhbGl6ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjVCODZGMUUxMkYxMURFMzAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVj
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzcwNDNDQzEyRjc1RUUwMDA2NDcyQjkgLyogV0tC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTU5NDUsNiArNTk0Myw3
IEBACiAJCQkJMUE5RTMyOEQxODIxNjVBOTAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0SW50ZXJm
YWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTNFQkVBQjE2MjdEOUM5MDA1Rjg5RjEgLyogV0tE
T01UZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAxN0QyMTE2MjYzMzA4MDA3MDU0RjUgLyog
V0tET01UZXh0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMjkwOTkzMTgzQUNFQUYw
MDU1MjJBNiAvKiBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
NzBGMzRBMzE4MjlCRTFFMDA5MDI3QzggLyogV0tOYXZpZ2F0aW9uRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNDA3NUZDMTI0RkYwMjcwMDY4RjIwQSAvKiBXS0Vycm9yLmggaW4gSGVh
ZGVycyAqLywKQEAgLTYwMDAsNiArNTk5OSw3IEBACiAJCQkJQkNENTk3RDAxMTJCNTZBQzAwRUM4
QzIzIC8qIFdLUHJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2MkI3NDhEMTIwQkM3
NUMwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzdDNEMwODkxODE0OUYyMzAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbUludGVybmFs
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUQwRDQzNzE4M0IzNTNEMDA5NzA0MUQgLyogRGF0YWJh
c2VQcm9jZXNzSURCQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTM0
RjAxNzEyRUE1RDMzMDA0RUM1OEQgLyogV0tQcmludGluZ1ZpZXcuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQkFBQ0VCMTQ1MjI1RTMwMDUzRjgyRiAvKiBXS1Byb2Nlc3NHcm91cC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNCQUFDRUQxNDUyMjVFMzAwNTNGODJGIC8qIFdLUHJvY2Vzc0dyb3VwUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02ODkzLDcgKzY4OTMsNiBAQAogCQkJCTUxREQ5RjI4
MTYzNjdEQTIwMDE1NzhFOSAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTc5NTU2ODE2Mjg3NkNGMDBGQTQzQjYg
LyogTmV0d29ya1Byb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4M0RERUMxNjMwQkRG
QzAwOEJFNUM3IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk1MUUzNTFGNzE4MEY1Qzc1MDBFNTNCRTkgLyogV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFj
a2VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEUgLyog
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxNzk1NTcwMTYyODc3Q0YwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTc5NTU2NzE2Mjg3NkNCMDBGQTQz
QjYgLyogTmV0d29ya1Byb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTY5NTMsNyArNjk1
Miw2IEBACiAJCQkJMUEzRDYxMDExM0E3Q0MyQTAwRjk1RDRFIC8qIFBsdWdpbk1vZHVsZUluZm8u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwNDM5NzcxMjREMDM0ODAwRkZCRkI1IC8qIFBsdWdp
blByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwRUM5MDcxMjRDMEFCODAwN0VGNEE1
IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxRTM1
MjBEMTgwRjVEQTAwMEU1M0JFOSAvKiBEYXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwRUM5MTAxMjRDMEFGNTAwN0VGNEE1IC8qIFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc4NjVC
OTE2Q0FDNzE1MDBBQ0U4M0EgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkJCNkQwMTQxMTdCNEQwMDBGMzVE
NCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTcwNjEsNyArNzA1OSw2IEBACiAJCQkJMzMwOTM0NEYxMzE1Qjk0RDAwOTdBN0JD
IC8qIFdlYkNvb2tpZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzcyQ0FGMEMxODMz
RkQ5MTAwNDBBQzI3IC8qIFdLTlNFcnJvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBOUUzMjlB
MTgyMkUxQ0MwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdC5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CTUxRTM1MjEwMTgwRjYzRkIwMEU1M0JFOSAvKiBEYXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJh
Y2tlbmRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjZBOTA4MTMxMzND
MjA1MTAwODJDM0Y0IC8qIFdlYkNvb2tpZU1hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkzMzA5MzQ0NzEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzA5MzQ1NTEzMTVCOTc1MDA5N0E3QkMgLyog
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzE2NCw2ICs3MTYx
LDcgQEAKIAkJCQlCQ0JEMzkxNDEyNUJCMUE4MDBEMkMyOUYgLyogV2ViUGFnZVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBM0U3MzYyMTFDQzI2NTkwMDdCRDUz
OSAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdE
REQxMjdBNTIxQzAwOEZGNEY0IC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MUQwRDQzNjE4M0IzNTNEMDA5NzA0MUQgLyogRGF0YWJhc2VQcm9jZXNzSURC
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUQ1OTI5
RTE2NkUwNjAwMDBFNkJGMDIgLyogV2ViUGx1Z0luQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBRTAwRDVDMTgyREFERTEwMDA4N0RENyAvKiBLZXllZEVuY29kZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFDODcwMkUxMzBCNDlBMjAwMkMxMjU3IC8qIFdlYlBsdWdpblNpdGVEYXRh
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTcyMjEsNiArNzIxOSw3IEBACiAJCQkJQkM2
NDZDMUMxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0JBQUM3MjE0NEU2MTk5MDA1M0Y4MkYgLyogV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCQUFDRjUxNDUyMzI0RjAw
NTNGODJGIC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAubW0gaW4gU291cmNlcyAqLywKKwkJCQk1
MTI5MDk5MjE4M0FDRUFGMDA1NTIyQTYgLyogV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzIwNEVFRTExQzgzRUM4MDA4RjMzNzUgLyogV0tCdW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTM1RUVCOUUxMjc3NjFBQzAwMzMyMkI4IC8qIFdLQnVuZGxl
QmFja0ZvcndhcmRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNUVFQkEwMTI3NzYxQUMw
MDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC03MzMwLDYgKzczMjksNyBAQAogCQkJCUJDOEYyRjJBMTYyNzNBMkMwMDVGQUNCNSAvKiBX
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gaW4gU291cmNlcyAq
LywKIAkJCQlCQzJFNkU4RDExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMDA5MkY4MTE1ODM3QTMwMEUwQUUyQSAvKiBXb3JrUXVldWVNYWMuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMEQ0MzExODNCMzQxMzAwOTcwNDFEIC8qIERhdGFiYXNl
UHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCRUNERTcxNkI2
NDE2ODAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNzI4RTg2RjIxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5j
cHAKaW5kZXggN2VlYWIzMy4uMjA2NzJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFj
dG9yeUJhY2tlbmQuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlICJJREJVdGlsaXRp
ZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzSURC
RGF0YWJhc2VCYWNrZW5kLmgiCiAjaW5jbHVkZSAiV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JREJDYWxsYmFja3MuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0lEQkN1cnNvckJhY2tlbmQuaD4KQEAgLTQ3LDcgKzQ3LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi10eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8V2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZD4+IElEQkRhdGFiYXNlQmFja2Vu
ZE1hcDsKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmQ+
PiBJREJEYXRhYmFzZUJhY2tlbmRNYXA7CiAKIHN0YXRpYyBJREJEYXRhYmFzZUJhY2tlbmRNYXAm
IHNoYXJlZERhdGFiYXNlQmFja2VuZE1hcCgpCiB7CkBAIC03MCwyNCArNzAsMjMgQEAgdm9pZCBX
ZWJJREJGYWN0b3J5QmFja2VuZDo6Z2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIFBhc3NSZWZQdHIKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYklE
QkZhY3RvcnlCYWNrZW5kOjpvcGVuKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCB1aW50NjRf
dCB2ZXJzaW9uLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2Fs
bGJhY2tzLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJikKK3ZvaWQgV2ViSURCRmFjdG9yeUJhY2tlbmQ6Om9wZW4oY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUsIHVpbnQ2NF90IHZlcnNpb24sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcGVu
aW5nT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgbWFpbkZyYW1lT3JpZ2luKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJXZWJJREJGYWN0
b3J5QmFja2VuZDo6b3BlbiIpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllciA9IHVu
aXF1ZURhdGFiYXNlSWRlbnRpZmllcihkYXRhYmFzZU5hbWUsIHNlY3VyaXR5T3JpZ2luKTsKLSAg
ICAKLSAgICBSZWZQdHI8V2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZD4gd2ViUHJvY2Vzc0Rh
dGFiYXNlQmFja2VuZDsKKyAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gdW5pcXVlRGF0
YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlTmFtZSwgb3BlbmluZ09yaWdpbiwgbWFpbkZyYW1lT3Jp
Z2luKTsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gc2hhcmVkRGF0
YWJhc2VCYWNrZW5kTWFwKCkuZmluZChkYXRhYmFzZUlkZW50aWZpZXIpOwogCisgICAgUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZD4gZGF0YWJhc2VCYWNrZW5kOwogICAgIGlmIChpdCA9PSBzaGFy
ZWREYXRhYmFzZUJhY2tlbmRNYXAoKS5lbmQoKSkgewotICAgICAgICB3ZWJQcm9jZXNzRGF0YWJh
c2VCYWNrZW5kID0gV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBk
YXRhYmFzZU5hbWUpOwotICAgICAgICB3ZWJQcm9jZXNzRGF0YWJhc2VCYWNrZW5kLT5lc3RhYmxp
c2hEYXRhYmFzZVByb2Nlc3NCYWNrZW5kKCk7Ci0gICAgICAgIHNoYXJlZERhdGFiYXNlQmFja2Vu
ZE1hcCgpLnNldChkYXRhYmFzZUlkZW50aWZpZXIsIHdlYlByb2Nlc3NEYXRhYmFzZUJhY2tlbmQu
Z2V0KCkpOworICAgICAgICBSZWZQdHI8SURCU2VydmVyQ29ubmVjdGlvbj4gc2VydmVyQ29ubmVj
dGlvbiA9IFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZShkYXRhYmFzZU5hbWUsIG9wZW5p
bmdPcmlnaW4sIG1haW5GcmFtZU9yaWdpbik7CisgICAgICAgIGRhdGFiYXNlQmFja2VuZCA9IElE
QkRhdGFiYXNlQmFja2VuZDo6Y3JlYXRlKGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VJZGVudGlmaWVy
LCB0aGlzLCAqc2VydmVyQ29ubmVjdGlvbik7CisgICAgICAgIHNoYXJlZERhdGFiYXNlQmFja2Vu
ZE1hcCgpLnNldChkYXRhYmFzZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZCk7CiAgICAgfSBl
bHNlCi0gICAgICAgIHdlYlByb2Nlc3NEYXRhYmFzZUJhY2tlbmQgPSBpdC0+dmFsdWU7CisgICAg
ICAgIGRhdGFiYXNlQmFja2VuZCA9IGl0LT52YWx1ZTsKIAotICAgIHdlYlByb2Nlc3NEYXRhYmFz
ZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRy
YW5zYWN0aW9uSWQsIHZlcnNpb24pOworICAgIGRhdGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rp
b24oY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbik7
CiB9CiAKIHZvaWQgV2ViSURCRmFjdG9yeUJhY2tlbmQ6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0
cmluZyYsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjliNzNjMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAK
QEAgLTAsMCArMSwxOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
SURCU2VydmVyQ29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisj
aWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCisKKyNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NJ
REJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJX
ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUJhY2tlbmRJZGVudGlmaWVyKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKHVpbnQ2NF90LCBpZGVudGlmaWVyLCAoMSkpOworICAgIHJldHVybiBp
ZGVudGlmaWVyKys7Cit9CisKK1dlYklEQlNlcnZlckNvbm5lY3Rpb246OldlYklEQlNlcnZlckNv
bm5lY3Rpb24oY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYg
bWFpbkZyYW1lT3JpZ2luKQorICAgIDogbV9iYWNrZW5kSWRlbnRpZmllcihnZW5lcmF0ZUJhY2tl
bmRJZGVudGlmaWVyKCkpCit7CisgICAgc2VuZChNZXNzYWdlczo6RGF0YWJhc2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uOjpFc3RhYmxpc2hJREJDb25uZWN0aW9uKG1fYmFja2VuZElkZW50aWZpZXIp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpFc3Rh
Ymxpc2hDb25uZWN0aW9uKCkpOworfQorCitXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjp+V2ViSURC
U2VydmVyQ29ubmVjdGlvbigpCit7CisKK30KKworYm9vbCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
Ojppc0Nsb3NlZCgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKwordm9pZCBXZWJJREJTZXJ2
ZXJDb25uZWN0aW9uOjpnZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoY29uc3QgU3Ry
aW5nJiBuYW1lLCBHZXRJREJEYXRhYmFzZU1ldGFkYXRhRnVuY3Rpb24pCit7CisKK30KKwordm9p
ZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5h
bWUsIEJvb2xDYWxsYmFja0Z1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjaykKK3sKKworfQorCit2b2lk
IFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKworfQorCit2b2lkIFdlYklEQlNl
cnZlckNvbm5lY3Rpb246Om9wZW5UcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGNv
bnN0IEhhc2hTZXQ8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBXZWJDb3JlOjpJbmRleGVkREI6
OlRyYW5zYWN0aW9uTW9kZSwgQm9vbENhbGxiYWNrRnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKQor
eworCit9CisKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6YmVnaW5UcmFuc2FjdGlvbihp
bnQ2NF90IHRyYW5zYWN0aW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2Fs
bGJhY2spCit7CisKK30KKwordm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjb21taXRUcmFu
c2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIEJvb2xDYWxsYmFja0Z1bmN0aW9uIHN1Y2Nl
c3NDYWxsYmFjaykKK3sKKworfQorCit2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OnJlc2V0
VHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
Y29tcGxldGlvbkNhbGxiYWNrKQoreworCit9CisKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlv
bjo6cm9sbGJhY2tUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCit7CisKK30KKwordm9pZCBXZWJJREJTZXJ2
ZXJDb25uZWN0aW9uOjpzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90
IGRhdGFiYXNlSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSYsIFdlYkNvcmU6OklEQktleSYgcHJpbWFyeUtleSwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiBpbmRleElEcywgY29uc3QgVmVjdG9yPFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6SURCS2V5Pj4+JiBpbmRleEtleXMsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQoreworCit9CisK
K3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q3JlYXRlT2JqZWN0U3RvcmVP
cGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRh
YmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKK3sKKworfQorCit2b2lkIFdlYklEQlNl
cnZlckNvbm5lY3Rpb246OmNyZWF0ZUluZGV4KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZCYsIGNvbnN0IFdlYkNvcmU6OkNyZWF0ZUluZGV4T3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2
b2lkKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2Fs
bGJhY2spCit7CisKK30KKwordm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkZWxldGVJbmRl
eChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBXZWJDb3JlOjpEZWxldGVJ
bmRleE9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQoreworCit9CisKK3ZvaWQgV2Vi
SURCU2VydmVyQ29ubmVjdGlvbjo6Z2V0KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZCYs
IGNvbnN0IFdlYkNvcmU6OkdldE9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQorewor
Cit9CisKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6cHV0KFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6OlB1dE9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rp
b248dm9pZChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlv
bkNhbGxiYWNrKQoreworCit9CisKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6b3BlbkN1
cnNvcihXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBXZWJDb3JlOjpPcGVu
Q3Vyc29yT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCit7CisKK30KKwordm9pZCBX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjb3VudChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tl
bmQmLCBjb25zdCBXZWJDb3JlOjpDb3VudE9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNr
KQoreworCit9CisKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGVsZXRlUmFuZ2UoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6RGVsZXRlUmFuZ2VP
cGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRh
YmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKK3sKKworfQorCit2b2lkIFdlYklEQlNl
cnZlckNvbm5lY3Rpb246OmNsZWFyT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25C
YWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q2xlYXJPYmplY3RTdG9yZU9wZXJhdGlvbiYsIHN0ZDo6
ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29t
cGxldGlvbkNhbGxiYWNrKQoreworCit9CisKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6
ZGVsZXRlT2JqZWN0U3RvcmUoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3Qg
V2ViQ29yZTo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFj
aykKK3sKKworfQordm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjaGFuZ2VEYXRhYmFzZVZl
cnNpb24oV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2
b2lkKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2Fs
bGJhY2spCit7CisKK30KKwordm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjdXJzb3JBZHZh
bmNlKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmQmLCBjb25zdCBXZWJDb3JlOjpDdXJzb3JBZHZh
bmNlT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykK
K3sKKworfQorCit2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmN1cnNvckl0ZXJhdGUoV2Vi
Q29yZTo6SURCQ3Vyc29yQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6OkN1cnNvckl0ZXJhdGlvbk9w
ZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCit7CisK
K30KKwordm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjdXJzb3JQcmVmZXRjaEl0ZXJhdGlv
bihXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q3Vyc29yUHJlZmV0
Y2hJdGVyYXRpb25PcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNh
bGxiYWNrKQoreworCit9CisKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y3Vyc29yUHJl
ZmV0Y2hSZXNldChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kJiwgaW50IHVzZWRQcmVmZXRjaGVz
KQoreworCit9CisKK0NvcmVJUEM6OkNvbm5lY3Rpb24qIFdlYklEQlNlcnZlckNvbm5lY3Rpb246
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2hh
cmVkKCkud2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0VfUFJP
Q0VTUykKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVk
REIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjk5MWFjNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAg
KzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICoKKyAqLworCisjaWZuZGVmIFdlYklEQlNlcnZlckNvbm5lY3Rpb25faAorI2RlZmluZSBX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQor
I2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQorCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvSURCU2VydmVyQ29ubmVjdGlvbi5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViSURCU2VydmVyQ29ubmVjdGlvbiBGSU5BTCA6IHB1YmxpYyBX
ZWJDb3JlOjpJREJTZXJ2ZXJDb25uZWN0aW9uLCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVNlbmRl
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSURCU2VydmVyQ29ubmVjdGlv
bj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYgb3BlbmluZ09yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4m
IG1haW5GcmFtZU9yaWdpbikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
SURCU2VydmVyQ29ubmVjdGlvbihkYXRhYmFzZU5hbWUsIG9wZW5pbmdPcmlnaW4sIG1haW5GcmFt
ZU9yaWdpbikpOworICAgIH0KKworICAgIHZpcnR1YWwgfldlYklEQlNlcnZlckNvbm5lY3Rpb24o
KTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NlZCgpIE9WRVJSSURFOworCisgICAgdHlwZWRl
ZiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wgc3VjY2Vzcyk+IEJvb2xDYWxsYmFja0Z1bmN0aW9u
OworCisgICAgLy8gRGF0YWJhc2UtbGV2ZWwgb3BlcmF0aW9ucworICAgIHR5cGVkZWYgc3RkOjpm
dW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJiwgYm9vbCBz
dWNjZXNzKT4gR2V0SURCRGF0YWJhc2VNZXRhZGF0YUZ1bmN0aW9uOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBH
ZXRJREJEYXRhYmFzZU1ldGFkYXRhRnVuY3Rpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIEJvb2xDYWxsYmFja0Z1bmN0aW9u
IHN1Y2Nlc3NDYWxsYmFjaykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgT1ZF
UlJJREU7CisKKyAgICAvLyBUcmFuc2FjdGlvbi1sZXZlbCBvcGVyYXRpb25zCisgICAgdmlydHVh
bCB2b2lkIG9wZW5UcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGNvbnN0IEhhc2hT
ZXQ8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBXZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0
aW9uTW9kZSwgQm9vbENhbGxiYWNrRnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQs
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIEJv
b2xDYWxsYmFja0Z1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjaykgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHJlc2V0VHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklELCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWNrKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcm9sbGJhY2tUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spIE9WRVJSSURFOworCisgICAgdmlydHVhbCB2
b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3QgZGF0YWJhc2VJ
RCwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1l
dGFkYXRhJiwgV2ViQ29yZTo6SURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRf
dD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+
Pj4mIGluZGV4S2V5cywgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
RGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIE9WRVJSSURFOworCisgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZCYsIGNvbnN0IFdlYkNvcmU6OkNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uJiwgc3RkOjpmdW5j
dGlvbjx2b2lkKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0
aW9uQ2FsbGJhY2spIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbmRleChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBXZWJDb3JlOjpDcmVhdGVJbmRleE9w
ZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFi
YXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlSW5kZXgoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgV2Vi
Q29yZTo6RGVsZXRlSW5kZXhPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGdldChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmQm
LCBjb25zdCBXZWJDb3JlOjpHZXRPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHB1dChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tl
bmQmLCBjb25zdCBXZWJDb3JlOjpQdXRPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6T3BlbkN1cnNvck9wZXJhdGlvbiYsIHN0ZDo6
ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29t
cGxldGlvbkNhbGxiYWNrKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnQoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q291bnRPcGVyYXRpb24m
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9y
Pik+IGNvbXBsZXRpb25DYWxsYmFjaykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZVJhbmdlKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6OkRl
bGV0ZVJhbmdlT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZCYsIGNvbnN0IFdlYkNvcmU6OkNsZWFyT2JqZWN0U3RvcmVPcGVyYXRpb24mLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPik+IGNvbXBs
ZXRpb25DYWxsYmFjaykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6OkRlbGV0
ZU9iamVjdFN0b3JlT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VEYXRhYmFzZVZlcnNpb24oV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpWZXJzaW9u
Q2hhbmdlT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIE9WRVJSSURFOworCisgICAg
Ly8gQ3Vyc29yLWxldmVsIG9wZXJhdGlvbnMKKyAgICB2aXJ0dWFsIHZvaWQgY3Vyc29yQWR2YW5j
ZShXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q3Vyc29yQWR2YW5j
ZU9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjdXJzb3JJdGVyYXRlKFdlYkNvcmU6OklEQkN1cnNv
ckJhY2tlbmQmLCBjb25zdCBXZWJDb3JlOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24mLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWNrKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgY3Vyc29yUHJlZmV0Y2hJdGVyYXRpb24oV2ViQ29yZTo6SURCQ3Vyc29yQmFja2Vu
ZCYsIGNvbnN0IFdlYkNvcmU6OkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uJiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGN1cnNvclByZWZldGNoUmVzZXQoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZCYs
IGludCB1c2VkUHJlZmV0Y2hlcykgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
V2ViSURCU2VydmVyQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiBtYWluRnJhbWVPcmlnaW4pOworCisgICAgLy8gQ29yZUlQQzo6TWVzc2Fn
ZVNlbmRlcgorICAgIHZpcnR1YWwgQ29yZUlQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9iYWNrZW5kSWRlbnRpZmllcjsgfQor
CisgICAgdWludDY0X3QgbV9iYWNrZW5kSWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCisjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gV2ViSURCU2VydmVyQ29ubmVjdGlv
bl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRl
eGVkREIvV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2Vu
ZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NGY1OTAuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYlByb2Nl
c3NJREJEYXRhYmFzZUJhY2tlbmQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjI3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc0lEQkRhdGFiYXNl
QmFja2VuZC5oIgotCi0jaW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5k
TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNz
YWdlcy5oIgotI2luY2x1ZGUgIldlYklEQkZhY3RvcnlCYWNrZW5kLmgiCi0jaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgotI2luY2x1ZGUgIldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvSURCTWV0YWRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+Ci0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSNpZiBFTkFCTEUo
REFUQUJBU0VfUFJPQ0VTUykKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1zdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVCYWNrZW5kSWRlbnRpZmllcigp
Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTCh1aW50NjRfdCwgaWRlbnRpZmllciwgKDEpKTsK
LSAgICByZXR1cm4gaWRlbnRpZmllcisrOwotfQotCi1XZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNr
ZW5kOjpXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kKFdlYklEQkZhY3RvcnlCYWNrZW5kJiBm
YWN0b3J5LCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBtX2RhdGFiYXNlTmFtZShuYW1lKQot
ICAgICwgbV9iYWNrZW5kSWRlbnRpZmllcihnZW5lcmF0ZUJhY2tlbmRJZGVudGlmaWVyKCkpCi0g
ICAgLCBtX2ZhY3RvcnkoJmZhY3RvcnkpCi17Ci19Ci0KLVdlYlByb2Nlc3NJREJEYXRhYmFzZUJh
Y2tlbmQ6On5XZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kKCkKLXsKLX0KLQotdm9pZCBXZWJQ
cm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBw
cnBEYXRhYmFzZUNhbGxiYWNrcywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCB1aW50NjRfdCB2ZXJz
aW9uKQotewotICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgbWVzc2FnZSBpbmNsdWRlIG5lY2Vzc2Fy
eSBhcmd1bWVudHMsIGFuZCBzYXZlIG9mZiB0aGVzZSBjYWxsYmFja3MgYW5kIGFyZ3VtZW50cyBm
b3IgbGF0ZXIgdXNlLgotCi0gICAgc2VuZChNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzSURCRGF0
YWJhc2VCYWNrZW5kOjpPcGVuQ29ubmVjdGlvbigpKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzSURC
RGF0YWJhc2VCYWNrZW5kOjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi12b2lkIFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6OmRlbGV0ZU9iamVjdFN0b3Jl
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQotewotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tl
bmQ6OmNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJ
ZHMsIHVuc2lnbmVkIHNob3J0ICkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQot
dm9pZCBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjpjbG9zZShQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9p
ZCBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjpjb21taXQoaW50NjRfdCB0cmFuc2FjdGlv
bklkKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFdlYlByb2Nlc3NJ
REJEYXRhYmFzZUJhY2tlbmQ6OmFib3J0KGludDY0X3QgdHJhbnNhY3Rpb25JZCkKLXsKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNr
ZW5kOjphYm9ydChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VF
cnJvcj4pCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vz
c0lEQkRhdGFiYXNlQmFja2VuZDo6Y3JlYXRlSW5kZXgoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgaUVudHJ5KQotewotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tl
bmQ6OmRlbGV0ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0K
LXZvaWQgV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6Z2V0KGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+LCBib29sIGtleU9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKLXsK
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzSURCRGF0YWJh
c2VCYWNrZW5kOjpwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+LCBJ
REJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mKQot
ewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFdlYlByb2Nlc3NJREJEYXRh
YmFzZUJhY2tlbmQ6OnNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JikKLXsKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzSURCRGF0YWJhc2VC
YWNrZW5kOjpzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpCi17Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2Vu
ZDo6b3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSW5kZXhlZERCOjpD
dXJzb3JEaXJlY3Rpb24sIGJvb2wga2V5T25seSwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlw
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi12b2lkIFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6OmNvdW50KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pCi17Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFj
a2VuZDo6ZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4p
Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc0lEQkRh
dGFiYXNlQmFja2VuZDo6Y2xlYXIoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKLXsKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotQ29yZUlQQzo6Q29ubmVjdGlvbiogV2ViUHJvY2Vzc0lEQkRhdGFiYXNl
QmFja2VuZDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKQotewotICAgIHJldHVybiBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS53ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlv
bigpOwotfQotCi12b2lkIFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6OmVzdGFibGlzaERh
dGFiYXNlUHJvY2Vzc0JhY2tlbmQoKQotewotICAgIHNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6RXN0YWJsaXNoSURCRGF0YWJhc2VCYWNrZW5kKG1fYmFja2Vu
ZElkZW50aWZpZXIpKTsKLX0KLQotSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBXZWJQcm9jZXNz
SURCRGF0YWJhc2VCYWNrZW5kOjpiYWNraW5nU3RvcmUoKSBjb25zdAotewotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1pbnQ2NF90IFdlYlByb2Nlc3NJREJE
YXRhYmFzZUJhY2tlbmQ6OmlkKCkgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjph
ZGRPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgaW50NjRfdCBuZXdN
YXhPYmplY3RTdG9yZUlkKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lk
IFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6OnJlbW92ZU9iamVjdFN0b3JlKGludDY0X3Qg
b2JqZWN0U3RvcmVJZCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBX
ZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjphZGRJbmRleChpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmLCBpbnQ2NF90IG5ld01heEluZGV4SWQpCi17Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc0lEQkRhdGFiYXNl
QmFja2VuZDo6cmVtb3ZlSW5kZXgoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLWNvbnN0IElEQkRhdGFiYXNl
TWV0YWRhdGEmIFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6Om1ldGFkYXRhKCkgY29uc3QK
LXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gKigoSURCRGF0YWJhc2VN
ZXRhZGF0YSopMCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6c2V0
Q3VycmVudFZlcnNpb24odWludDY0X3QpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLWJvb2wgV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6aGFzUGVuZGluZ1NlY29uZEhh
bGZPcGVuKCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6c2V0UGVuZGluZ1NlY29u
ZEhhbGZPcGVuKFBhc3NPd25QdHI8SURCUGVuZGluZ09wZW5DYWxsPikKLXsKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLX0KLQotSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UmIFdlYlByb2Nl
c3NJREJEYXRhYmFzZUJhY2tlbmQ6OmZhY3RvcnlCYWNrZW5kKCkKLXsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gKigoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqKTAp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFT
RV9QUk9DRVNTKQotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYlByb2Nl
c3NJREJEYXRhYmFzZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNlZjAyNTMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tl
bmQuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqCi0gKi8KLQotI2lmbmRlZiBXZWJQcm9j
ZXNzSURCRGF0YWJhc2VCYWNrZW5kX2gKLSNkZWZpbmUgV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFj
a2VuZF9oCi0KLSNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9J
REJCYWNraW5nU3RvcmVJbnRlcmZhY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0lEQkRhdGFiYXNl
QmFja2VuZC5oPgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0jaWYgRU5BQkxFKERB
VEFCQVNFX1BST0NFU1MpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViSURCRmFjdG9yeUJhY2tl
bmQ7Ci0KLWNsYXNzIFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kPiwgcHVibGljIENvcmVJUEM6Ok1lc3Nh
Z2VTZW5kZXIgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlByb2Nlc3NJREJE
YXRhYmFzZUJhY2tlbmQ+IGNyZWF0ZShXZWJJREJGYWN0b3J5QmFja2VuZCYgZmFjdG9yeSwgY29u
c3QgU3RyaW5nJiBuYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViUHJvY2Vzc0lEQkRhdGFi
YXNlQmFja2VuZChmYWN0b3J5LCBuYW1lKSk7IH0KLQotICAgIHZpcnR1YWwgfldlYlByb2Nlc3NJ
REJEYXRhYmFzZUJhY2tlbmQoKTsKLQotICAgIHZpcnR1YWwgV2ViQ29yZTo6SURCQmFja2luZ1N0
b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9v
bCBhdXRvSW5jcmVtZW50KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwotICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9i
amVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xv
c2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwotCi0gICAgLy8g
VHJhbnNhY3Rpb24tc3BlY2lmaWMgb3BlcmF0aW9ucy4KLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0
KGludDY0X3QgdHJhbnNhY3Rpb25JZCk7Ci0gICAgdmlydHVhbCB2b2lkIGFib3J0KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCk7Ci0gICAgdmlydHVhbCB2b2lkIGFib3J0KGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPik7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlSW5kZXgoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJD
b3JlOjpJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOwotCi0gICAgdmlydHVhbCB2b2lkIGdldChpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgYm9vbCBrZXlPbmx5LCBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pOwotICAgIC8vIE5vdGUgdGhhdCAndmFsdWUnIG1h
eSBiZSBjb25zdW1lZC9hZG9wdGVkIGJ5IHRoaXMgY2FsbC4KLSAgICB2aXJ0dWFsIHZvaWQgcHV0
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5
PiwgV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpJbmRleEtleXM+Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldEluZGV4
S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbmRleEtleXM+Jik7Ci0gICAgdmly
dHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcyk7Ci0gICAgdmly
dHVhbCB2b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5n
ZT4sIFdlYkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9ubHksIFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNvdW50KGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4p
OwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFy
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pOwotCi0gICAgdmlydHVhbCBpbnQ2NF90IGlkKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFkZE9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlTWV0YWRhdGEmLCBpbnQ2NF90IG5ld01heE9iamVjdFN0b3JlSWQpOwotICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwotICAg
IHZpcnR1YWwgdm9pZCBhZGRJbmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYkNv
cmU6OklEQkluZGV4TWV0YWRhdGEmLCBpbnQ2NF90IG5ld01heEluZGV4SWQpOwotICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVJbmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCk7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEmIG1l
dGFkYXRhKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRWZXJzaW9uKHVpbnQ2
NF90KTsKLQotICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nU2Vjb25kSGFsZk9wZW4oKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGVuZGluZ1NlY29uZEhhbGZPcGVuKFBhc3NPd25QdHI8V2ViQ29y
ZTo6SURCUGVuZGluZ09wZW5DYWxsPik7Ci0KLSAgICB2aXJ0dWFsIFdlYkNvcmU6OklEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlJiBmYWN0b3J5QmFja2VuZCgpOwotCi0gICAgdm9pZCBvcGVuQ29u
bmVjdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIHVpbnQ2
NF90IHZlcnNpb24pOwotCi0gICAgdm9pZCBlc3RhYmxpc2hEYXRhYmFzZVByb2Nlc3NCYWNrZW5k
KCk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZChXZWJJREJG
YWN0b3J5QmFja2VuZCYsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0KLSAgICBTdHJpbmcgbV9kYXRh
YmFzZU5hbWU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5
T3JpZ2luOwotCi0gICAgLy8gQ29yZUlQQzo6TWVzc2FnZVNlbmRlcgotICAgIHZpcnR1YWwgQ29y
ZUlQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKTsKLSAgICB2aXJ0dWFs
IHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgT1ZFUlJJREUgeyByZXR1cm4g
bV9iYWNrZW5kSWRlbnRpZmllcjsgfQotCi0gICAgdWludDY0X3QgbV9iYWNrZW5kSWRlbnRpZmll
cjsKLQotICAgIFJlZlB0cjxXZWJJREJGYWN0b3J5QmFja2VuZD4gbV9mYWN0b3J5OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0VfUFJPQ0VT
UykKLSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSNlbmRpZiAvLyBXZWJQcm9j
ZXNzSURCRGF0YWJhc2VCYWNrZW5kX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRGF0YWJhc2VzL1dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDQ0YWE2NWYuLmIzNjYyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViVG9EYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiRGF0
YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5oIgogI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
</data>
<flag name="review"
          id="240380"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>