<?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>127123</bug_id>
          
          <creation_ts>2014-01-16 11:02:22 -0800</creation_ts>
          <short_desc>IDB: delete object store support</short_desc>
          <delta_ts>2014-01-16 17:16:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>968819</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-16 11:02:22 -0800</bug_when>
    <thetext>IDB: Support delete object store

In radar &lt;rdar://problem/15779641&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968822</commentid>
    <comment_count>1</comment_count>
      <attachid>221393</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-16 11:05:17 -0800</bug_when>
    <thetext>Created attachment 221393
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968823</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-16 11:07:35 -0800</bug_when>
    <thetext>Attachment 221393 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBTransactionBackendOperations.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h&apos;, u&apos;Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h&apos;, u&apos;Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:381:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968976</commentid>
    <comment_count>3</comment_count>
      <attachid>221393</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-16 15:49:37 -0800</bug_when>
    <thetext>Comment on attachment 221393
Patch v1

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

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:365
&gt; +void UniqueIDBDatabase::deleteObjectStore(const IDBTransactionIdentifier&amp; identifier, int64_t objectStoreID, std::function&lt;void(bool)&gt; successCallback)

I&apos;m not quite sure how we can have a success callback, but no failure callback. Isn&apos;t it just &quot;callback&quot; then?

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:78
&gt;      void changeDatabaseVersion(const IDBTransactionIdentifier&amp;, uint64_t newVersion, std::function&lt;void(bool)&gt; successCallback);
&gt;      void createObjectStore(const IDBTransactionIdentifier&amp;, const WebCore::IDBObjectStoreMetadata&amp;, std::function&lt;void(bool)&gt; successCallback);
&gt; +    void deleteObjectStore(const IDBTransactionIdentifier&amp;, int64_t objectStoreID, std::function&lt;void(bool)&gt; successCallback);

I&apos;m similarly unsure about the existing ones.

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:394
&gt; +        LOG_ERROR(&quot;Attempt to change database version with an establish, in-progress transaction&quot;);

Should that be &quot;established&quot;?

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:412
&gt; +        // FIXME: Execute SQL here to drop all records and indexes related to this object store.

Is there a bug tracking this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968992</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-16 16:50:48 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 221393 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221393&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:365
&gt; &gt; +void UniqueIDBDatabase::deleteObjectStore(const IDBTransactionIdentifier&amp; identifier, int64_t objectStoreID, std::function&lt;void(bool)&gt; successCallback)
&gt; 
&gt; I&apos;m not quite sure how we can have a success callback, but no failure callback. Isn&apos;t it just &quot;callback&quot; then?
&gt; 
&gt; &gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:78
&gt; &gt;      void changeDatabaseVersion(const IDBTransactionIdentifier&amp;, uint64_t newVersion, std::function&lt;void(bool)&gt; successCallback);
&gt; &gt;      void createObjectStore(const IDBTransactionIdentifier&amp;, const WebCore::IDBObjectStoreMetadata&amp;, std::function&lt;void(bool)&gt; successCallback);
&gt; &gt; +    void deleteObjectStore(const IDBTransactionIdentifier&amp;, int64_t objectStoreID, std::function&lt;void(bool)&gt; successCallback);
&gt; 
&gt; I&apos;m similarly unsure about the existing ones.

Will rename them.

&gt; 
&gt; &gt; Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:394
&gt; &gt; +        LOG_ERROR(&quot;Attempt to change database version with an establish, in-progress transaction&quot;);
&gt; 
&gt; Should that be &quot;established&quot;?

Yup

&gt; 
&gt; &gt; Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:412
&gt; &gt; +        // FIXME: Execute SQL here to drop all records and indexes related to this object store.
&gt; 
&gt; Is there a bug tracking this?

Radar, yes.  No bugzilla yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969003</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-16 17:14:23 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 221393 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221393&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:365
&gt; &gt; &gt; +void UniqueIDBDatabase::deleteObjectStore(const IDBTransactionIdentifier&amp; identifier, int64_t objectStoreID, std::function&lt;void(bool)&gt; successCallback)
&gt; &gt; 
&gt; &gt; I&apos;m not quite sure how we can have a success callback, but no failure callback. Isn&apos;t it just &quot;callback&quot; then?
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:78
&gt; &gt; &gt;      void changeDatabaseVersion(const IDBTransactionIdentifier&amp;, uint64_t newVersion, std::function&lt;void(bool)&gt; successCallback);
&gt; &gt; &gt;      void createObjectStore(const IDBTransactionIdentifier&amp;, const WebCore::IDBObjectStoreMetadata&amp;, std::function&lt;void(bool)&gt; successCallback);
&gt; &gt; &gt; +    void deleteObjectStore(const IDBTransactionIdentifier&amp;, int64_t objectStoreID, std::function&lt;void(bool)&gt; successCallback);
&gt; &gt; 
&gt; &gt; I&apos;m similarly unsure about the existing ones.
&gt; 
&gt; Will rename them.

Actually not in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969004</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-16 17:16:17 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/162174</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221393</attachid>
            <date>2014-01-16 11:05:17 -0800</date>
            <delta_ts>2014-01-16 15:49:36 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18509</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OTVkZWUzLi5mM2NjZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTQtMDEtMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIElEQjogZGVsZXRlIG9iamVjdCBzdG9yZSBzdXBwb3J0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xNTc3OTY0MT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjcxMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjp0cmFuc2FjdGlv
bik6CisKIDIwMTQtMDEtMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVzZSBLZXllZENvZGluZyBhcyBhIHBlcnNpc3RlbnQgc3RvcmFnZSBtZWNoYW5pc20g
Zm9yIGJsb2JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmgKaW5kZXggZjcxM2E5
ZC4uNmZjMTQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaApAQCAtNjUs
NiArNjUsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIE9WRVJSSURFIEZJTkFMOwogCisgICAg
SURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJh
bnNhY3Rpb24uZ2V0KCk7IH0KICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmpl
Y3RTdG9yZU1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZU1ldGFkYXRhOyB9
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDNiNGZlZS4uNDBmODAyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM2IEBACisyMDE0LTAxLTE2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBJREI6IGRlbGV0ZSBvYmplY3Qgc3RvcmUgc3VwcG9ydAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTU3Nzk2NDE+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI3MTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUGlwZSB0aHJvdWdoIFdlYiAtPiBEYXRhYmFzZSAtPiBXZWIgcHJvY2Vz
cyBtZXNzYWdpbmcgZm9yIGRlbGV0ZSBvYmplY3Qgc3RvcmUuCisgICAgICAgIFBlcmZvcm0gZHJv
cHBpbmcgdGhlIG9iamVjdCBzdG9yZSBpbiB0aGUgYmFja2luZyBzdG9yZS4KKworICAgICAgICAq
IERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmRlbGV0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFi
YXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5k
ZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlSW5C
YWNraW5nU3RvcmUpOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVl
SURCRGF0YWJhc2UuaDoKKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5p
cXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFj
a2luZ1N0b3JlU1FMaXRlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgICogRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxp
dGUuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVj
dGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJD
b25uZWN0aW9uOjpkaWREZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKwogMjAxNC0wMS0xNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgVXNlIEtleWVkQ29kaW5nIGFzIGEgcGVyc2lzdGVudCBzdG9yYWdlIG1lY2hh
bmlzbSBmb3IgYmxvYnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rp
b24uY3BwCmluZGV4IDk2OTliNjUuLjUxOTZkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFz
ZVByb2Nlc3NJREJDb25uZWN0aW9uLmNwcApAQCAtMTY2LDYgKzE2NiwxNyBAQCB2b2lkIERhdGFi
YXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVl
c3RJRCwgaW50NjRfdAogICAgIH0pOwogfQogCit2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5l
Y3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFu
c2FjdGlvbklELCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpCit7CisgICAgQVNTRVJUKG1fdW5pcXVl
SURCRGF0YWJhc2UpOworCisgICAgTE9HKElEQiwgIkRhdGFiYXNlUHJvY2VzcyBkZWxldGVPYmpl
Y3RTdG9yZSByZXF1ZXN0IElEICVsbHUsIG9iamVjdCBzdG9yZSBpZCAlbGxpIiwgcmVxdWVzdElE
LCBvYmplY3RTdG9yZUlEKTsKKyAgICBSZWZQdHI8RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlv
bj4gY29ubmVjdGlvbih0aGlzKTsKKyAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5kZWxldGVPYmpl
Y3RTdG9yZShJREJUcmFuc2FjdGlvbklkZW50aWZpZXIoKnRoaXMsIHRyYW5zYWN0aW9uSUQpLCBv
YmplY3RTdG9yZUlELCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShib29sIHN1Y2Nlc3MpIHsKKyAg
ICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6
RGlkRGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAgfSk7Cit9CisK
IElQQzo6Q29ubmVjdGlvbiogRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6bWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKQogewogICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmgKaW5kZXggOGQz
N2M2Yi4uMzM1NjkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0
aW9uLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJvbGxiYWNrVHJhbnNh
Y3Rpb24odWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQpOwogICAgIHZv
aWQgY2hhbmdlRGF0YWJhc2VWZXJzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFu
c2FjdGlvbklELCB1aW50NjRfdCBuZXdWZXJzaW9uKTsKICAgICB2b2lkIGNyZWF0ZU9iamVjdFN0
b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklELCBXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZU1ldGFkYXRhKTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKHVpbnQ2
NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IG9iamVjdFN0b3Jl
SUQpOwogCiAgICAgUmVmPERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOwogICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
aW5kZXggNjNhMjAwZS4uZDNkNjU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJh
c2VQcm9jZXNzSURCQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzQsNiArMzQsNyBAQCBtZXNz
YWdlcyAtPiBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICAKICAgICBDaGFuZ2VEYXRhYmFzZVZlcnNpb24odWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90
IHRyYW5zYWN0aW9uSUQsIHVpbnQ2NF90IG5ld1ZlcnNpb24pCiAgICAgQ3JlYXRlT2JqZWN0U3Rv
cmUodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBEZWxldGVPYmpl
Y3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRf
dCBvYmplY3RTdG9yZUlEKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0Up
ICYmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApp
bmRleCAzOGMwZGI2Li43Nzc4MTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAt
MzIxLDYgKzMyMSwxMSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDcmVhdGVPYmplY3RT
dG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2VzcykKICAgICBkaWRDb21wbGV0ZUJv
b2xSZXF1ZXN0KHJlcXVlc3RJRCwgc3VjY2Vzcyk7CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmRpZERlbGV0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNz
KQoreworICAgIGRpZENvbXBsZXRlQm9vbFJlcXVlc3QocmVxdWVzdElELCBzdWNjZXNzKTsKK30K
Kwogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVCb29sUmVxdWVzdCh1aW50NjRf
dCByZXF1ZXN0SUQsIGJvb2wgc3VjY2VzcykKIHsKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBy
ZXF1ZXN0ID0gbV9wZW5kaW5nRGF0YWJhc2VUYXNrcy50YWtlKHJlcXVlc3RJRCk7CkBAIC0zNTcs
NiArMzYyLDMzIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpCiAgICAgcG9zdERhdGFiYXNlVGFz
ayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmVJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBpZGVudGlmaWVyLCBtZXRhZGF0YSkpOwog
fQogCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJU
cmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwg
c3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICghbV9hY2NlcHRpbmdOZXdSZXF1ZXN0cykgewor
ICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQVNTRVJUKG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9y
ZUlEKSk7CisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YSA9IG1fbWV0YWRhdGEt
Pm9iamVjdFN0b3Jlcy50YWtlKG9iamVjdFN0b3JlSUQpOworCisgICAgUmVmUHRyPEFzeW5jUmVx
dWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8Ym9vbD46OmNyZWF0ZShbdGhpcywgbWV0
YWRhdGEsIHN1Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNzKSB7CisgICAgICAgIGlmICghc3Vj
Y2VzcykKKyAgICAgICAgICAgIG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5zZXQobWV0YWRhdGEu
aWQsIG1ldGFkYXRhKTsKKyAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3MpOworICAgIH0s
IFt0aGlzLCBtZXRhZGF0YSwgc3VjY2Vzc0NhbGxiYWNrXSgpIHsKKyAgICAgICAgbV9tZXRhZGF0
YS0+b2JqZWN0U3RvcmVzLnNldChtZXRhZGF0YS5pZCwgbWV0YWRhdGEpOworICAgICAgICBzdWNj
ZXNzQ2FsbGJhY2soZmFsc2UpOworICAgIH0pOworCisgICAgdWludDY0X3QgcmVxdWVzdElEID0g
cmVxdWVzdC0+cmVxdWVzdElEKCk7CisgICAgbV9wZW5kaW5nRGF0YWJhc2VUYXNrcy5hZGQocmVx
dWVzdElELCByZXF1ZXN0LnJlbGVhc2UoKSk7CisKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0
ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZUlu
QmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGlkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQpKTsKK30K
Kwogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNv
bnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiBvYmplY3RTdG9yZUlEcywgV2ViQ29yZTo6SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1v
ZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTQyNyw2ICs0NTks
MTYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdT
dG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnMKICAgICBwb3N0TWFpblRocmVhZFRhc2soY3Jl
YXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENyZWF0ZU9iamVjdFN0
b3JlLCByZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKIH0KIAordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
ZGVsZXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0
IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9y
ZUlEKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2JhY2tp
bmdTdG9yZSk7CisKKyAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2Jq
ZWN0U3RvcmUoaWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCk7CisKKyAgICBwb3N0TWFpblRocmVh
ZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0
ZU9iamVjdFN0b3JlLCByZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKK30KKwogU3RyaW5nIFVuaXF1ZUlE
QkRhdGFiYXNlOjphYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdDIvRGF0
YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGQ2NzlkMTEu
LmJlZGNkNTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5k
ZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC03NSw2ICs3NSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2hhbmdlRGF0YWJhc2VWZXJzaW9uKGNvbnN0IElEQlRyYW5zYWN0
aW9uSWRlbnRpZmllciYsIHVpbnQ2NF90IG5ld1ZlcnNpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZChi
b29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKICAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0
IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
TWV0YWRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7Cisg
ICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXIm
LCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vz
c0NhbGxiYWNrKTsKIAogcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlx
dWVJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKQEAgLTExNSw2ICsxMTYsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBjaGFuZ2VEYXRhYmFzZVZlcnNpb25JbkJhY2tpbmdTdG9yZSh1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIHVpbnQ2NF90IG5ld1Zl
cnNpb24pOwogICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGNvbnN0IFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3Jl
SW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklk
ZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpOwogCiAgICAgdm9pZCBzaHV0ZG93bkJh
Y2tpbmdTdG9yZSgpOwogCkBAIC0xMjQsNiArMTI2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlm
aWVyJiwgYm9vbCBzdWNjZXNzKTsKICAgICB2b2lkIGRpZENoYW5nZURhdGFiYXNlVmVyc2lvbih1
aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vzcyk7CiAgICAgdm9pZCBkaWRDcmVhdGVPYmpl
Y3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vzcyk7CisgICAgdm9pZCBkaWRE
ZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vzcyk7CiAgICAg
dm9pZCBkaWRTaHV0ZG93bkJhY2tpbmdTdG9yZSgpOwogICAgIHZvaWQgZGlkQ29tcGxldGVCb29s
UmVxdWVzdCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vzcyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJh
c2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaAppbmRleCAyNWZhMWY3Li5hYmYxODNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1Vu
aXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZS5oCkBAIC01
NCw2ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjaGFuZ2VEYXRhYmFzZVZl
cnNpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgdWludDY0X3QgbmV3VmVyc2lv
bikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJUcmFu
c2FjdGlvbklkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRh
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJUcmFu
c2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxp
dGUuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUv
VW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwCmluZGV4IDBiMDViZjQuLmY3
ZjY2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJE
YXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAKQEAgLTM3NiwxMyArMzc2LDQ2IEBAIGJvb2wg
VW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IElEQlRyYW5zYWN0aW9uCiAgICAgICAgIHx8IHNxbC5iaW5kSW50KDQsIG1ldGFkYXRhLmF1
dG9JbmNyZW1lbnQpICE9IFNRTFJlc3VsdE9rCiAgICAgICAgIHx8IHNxbC5iaW5kSW50NjQoNSwg
bWV0YWRhdGEubWF4SW5kZXhJZCkgIT0gU1FMUmVzdWx0T2sKICAgICAgICAgfHwgc3FsLnN0ZXAo
KSAhPSBTUUxSZXN1bHREb25lKSB7Ci0gICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGFkZCBv
YmplY3Qgc3RvcmUgJyVzJyB0byBpbiBPYmplY3RTdG9yZUluZm8gdGFibGUgKCVpKSAtICVzIiwg
bWV0YWRhdGEubmFtZS51dGY4KCkuZGF0YSgpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9z
cWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBh
ZGQgb2JqZWN0IHN0b3JlICclcycgdG8gT2JqZWN0U3RvcmVJbmZvIHRhYmxlICglaSkgLSAlcyIs
IG1ldGFkYXRhLm5hbWUudXRmOCgpLmRhdGEoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1f
c3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0
b3JlU1FMaXRlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZp
ZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkKK3sKKyAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9zcWxpdGVEQik7CisgICAgQVNTRVJUKG1fc3Fs
aXRlREItPmlzT3BlbigpKTsKKworICAgIFNRTGl0ZUlEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
biA9IG1fdHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9u
IHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7CisgICAgICAgIExPR19FUlJPUigiQXR0
ZW1wdCB0byBjaGFuZ2UgZGF0YWJhc2UgdmVyc2lvbiB3aXRoIGFuIGVzdGFibGlzaCwgaW4tcHJv
Z3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBp
ZiAodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6VmVy
c2lvbkNoYW5nZSkgeworICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gY2hhbmdlIGRhdGFi
YXNlIHZlcnNpb24gZHVyaW5nIGEgbm9uIHZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFNRTGl0ZVN0YXRl
bWVudCBzcWwoKm1fc3FsaXRlREIsIEFTQ0lJTGl0ZXJhbCgiREVMRVRFIEZST00gT2JqZWN0U3Rv
cmVJbmZvIFdIRVJFIGlkID0gPzsiKSk7CisgICAgICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNR
TFJlc3VsdE9rCisgICAgICAgICAgICB8fCBzcWwuYmluZEludDY0KDEsIG9iamVjdFN0b3JlSUQp
ICE9IFNRTFJlc3VsdE9rCisgICAgICAgICAgICB8fCBzcWwuc3RlcCgpICE9IFNRTFJlc3VsdERv
bmUpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGRlbGV0ZSBvYmplY3Qgc3Rv
cmUgaWQgJWxsaSBmcm9tIE9iamVjdFN0b3JlSW5mbyB0YWJsZSAoJWkpIC0gJXMiLCBvYmplY3RT
dG9yZUlELCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNn
KCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHsK
KyAgICAgICAgLy8gRklYTUU6IEV4ZWN1dGUgU1FMIGhlcmUgdG8gZHJvcCBhbGwgcmVjb3JkcyBh
bmQgaW5kZXhlcyByZWxhdGVkIHRvIHRoaXMgb2JqZWN0IHN0b3JlLgorICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5p
cXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3Jl
U1FMaXRlLmgKaW5kZXggY2QxMTk4Yy4uMTIyNzJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNr
aW5nU3RvcmVTUUxpdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5k
ZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oCkBAIC02
Miw2ICs2Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjaGFuZ2VEYXRhYmFzZVZl
cnNpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgdWludDY0X3QgbmV3VmVyc2lv
bikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElE
QlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0
YWRhdGEmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlT2JqZWN0U3RvcmUoY29u
c3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlEKSBPVkVS
UklERTsKIAogcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0
ZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlRGlyZWN0b3J5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0
YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9u
LmNwcAppbmRleCBjOTJkM2YyLi5kODU4ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklE
QlNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0zMjAsOCArMzIwLDMzIEBAIHZvaWQgV2ViSURCU2Vy
dmVyQ29ubmVjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZShJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBj
b25zdCBDbGVhCiB7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGVsZXRlT2Jq
ZWN0U3RvcmUoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgRGVsZXRlT2JqZWN0U3RvcmVP
cGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9y
Pik+IGNvbXBsZXRpb25DYWxsYmFjaykKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGVs
ZXRlT2JqZWN0U3RvcmUoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgRGVsZXRlT2JqZWN0
U3RvcmVPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7CisgICAgUmVmUHRyPEFz
eW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOworCisgICAgc2Vy
dmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2tdKCkgeworICAg
ICAgICBjb21wbGV0aW9uQ2FsbGJhY2soSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgZGVsZXRp
bmcgb2JqZWN0IHN0b3JlIikpOworICAgIH0pOworCisgICAgdWludDY0X3QgcmVxdWVzdElEID0g
c2VydmVyUmVxdWVzdC0+cmVxdWVzdElEKCk7CisgICAgQVNTRVJUKCFtX3NlcnZlclJlcXVlc3Rz
LmNvbnRhaW5zKHJlcXVlc3RJRCkpOworICAgIG1fc2VydmVyUmVxdWVzdHMuYWRkKHJlcXVlc3RJ
RCwgc2VydmVyUmVxdWVzdC5yZWxlYXNlKCkpOworCisgICAgTE9HKElEQiwgIldlYlByb2Nlc3Mg
ZGVsZXRlT2JqZWN0U3RvcmUgcmVxdWVzdCBJRCAlbGx1IiwgcmVxdWVzdElEKTsKKworICAgIHNl
bmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OkRlbGV0ZU9iamVjdFN0
b3JlKHJlcXVlc3RJRCwgb3BlcmF0aW9uLnRyYW5zYWN0aW9uKCktPmlkKCksIG9wZXJhdGlvbi5v
YmplY3RTdG9yZU1ldGFkYXRhKCkuaWQpKTsKK30KKwordm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0
aW9uOjpkaWREZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vz
cykKK3sKKyAgICBMT0coSURCLCAiV2ViUHJvY2VzcyBkaWREZWxldGVPYmplY3RTdG9yZSByZXF1
ZXN0IElEICVsbHUiLCByZXF1ZXN0SUQpOworCisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2Vy
dmVyUmVxdWVzdCA9IG1fc2VydmVyUmVxdWVzdHMudGFrZShyZXF1ZXN0SUQpOworCisgICAgaWYg
KCFzZXJ2ZXJSZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBzZXJ2ZXJSZXF1ZXN0LT5j
b21wbGV0ZVJlcXVlc3Qoc3VjY2VzcyA/IG51bGxwdHIgOiBJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2Nj
dXJlZCBkZWxldGluZyBvYmplY3Qgc3RvcmUiKSk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyQ29u
bmVjdGlvbjo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNv
bnN0IElEQkRhdGFiYXNlQmFja2VuZDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbiYgb3BlcmF0aW9u
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBs
ZXRpb25DYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0
YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5o
CmluZGV4IDM1YjY3NzQuLjc5YmMyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZl
ckNvbm5lY3Rpb24uaApAQCAtMTAxLDYgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
b2xsYmFja1RyYW5zYWN0aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKTsKICAg
ICB2b2lkIGRpZENoYW5nZURhdGFiYXNlVmVyc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wg
c3VjY2Vzcyk7CiAgICAgdm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0
SUQsIGJvb2wgc3VjY2Vzcyk7CisgICAgdm9pZCBkaWREZWxldGVPYmplY3RTdG9yZSh1aW50NjRf
dCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vzcyk7CiAKICAgICB1aW50NjRfdCBtX3NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDQyODU3Y2UuLmUyYTBkNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CkBAIC0zMyw2ICszMyw3IEBAIG1lc3NhZ2VzIC0+IFdlYklEQlNlcnZlckNvbm5lY3Rpb24gTGVn
YWN5UmVjZWl2ZXIgewogCiAgICAgRGlkQ2hhbmdlRGF0YWJhc2VWZXJzaW9uKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCBzdWNjZXNzKQogICAgIERpZENyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90
IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKQorICAgIERpZERlbGV0ZU9iamVjdFN0b3JlKHVpbnQ2
NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQo=
</data>
<flag name="review"
          id="245299"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>