<?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>152397</bug_id>
          
          <creation_ts>2015-12-17 14:35:13 -0800</creation_ts>
          <short_desc>Modern IDB: Refactor open/delete requests to exist in the same queue</short_desc>
          <delta_ts>2015-12-21 10:01:22 -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>Safari 9</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>152415</dependson>
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1150078</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-17 14:35:13 -0800</bug_when>
    <thetext>Modern IDB: Refactor open/delete requests to exist in the same queue

This is a straight &quot;no behavior change&quot; patch, where all existing tests continue to pass.

But it is necessary to fix tests currently skipped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150080</commentid>
    <comment_count>1</comment_count>
      <attachid>267583</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-17 14:37:46 -0800</bug_when>
    <thetext>Created attachment 267583
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150103</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-17 15:30:38 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/194241</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150169</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-17 18:54:05 -0800</bug_when>
    <thetext>This appears to have made multiple tests crash under GuardMalloc. Will roll out.

CRASHING TEST: storage/indexeddb/delete-in-upgradeneeded-close-in-open-success.html
This process is running with libgmalloc.dylib (GuardMalloc) which may have forced the crash due to a memory access error.
 

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x000000010ba998f3 WebCore::IDBServer::UniqueIDBDatabase::operationAndTransactionTimerFired() + 35
1   com.apple.WebCore             	0x000000010aa84c30 WebCore::ThreadTimers::sharedTimerFiredInternal() + 176
2   com.apple.WebCore             	0x000000010aa84b6f WebCore::timerFired(__CFRunLoopTimer*, void*) + 31
3   com.apple.CoreFoundation      	0x00007fff87a6a414 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150171</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-17 18:59:37 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 152415</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150197</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-17 20:57:15 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; This appears to have made multiple tests crash under GuardMalloc. Will roll
&gt; out.

Since standard practice for individual patch authors has never including running tests under GuardMalloc, and since we don&apos;t have GuardMalloc EWS, and since GuardMalloc bots aren&apos;t even on the bot watcher&apos;s dashboard, I object to the policy of rolling out without giving patch authors a reasonable amount of time to take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150198</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-17 21:00:21 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; This appears to have made multiple tests crash under GuardMalloc. Will roll
&gt; &gt; out.
&gt; 
&gt; Since standard practice for individual patch authors has never including
&gt; running tests under GuardMalloc, and since we don&apos;t have GuardMalloc EWS,
&gt; and since GuardMalloc bots aren&apos;t even on the bot watcher&apos;s dashboard, I
&gt; object to the policy of rolling out without giving patch authors a
&gt; reasonable amount of time to take a look.

Especially since this also required the compound rollout of a followup patch. (https://bugs.webkit.org/show_bug.cgi?id=152405)

*sigh*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150207</commentid>
    <comment_count>7</comment_count>
      <attachid>267610</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-17 22:17:35 -0800</bug_when>
    <thetext>Created attachment 267610
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150208</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-17 22:19:04 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created attachment 267610 [details]
&gt; Patch for landing

For posterity:

The GuardMalloc failure was your typical use-after-free, in this case the UniqueIDBDatabase doing something to cause itself to get deleted while in the middle of handling a timer callback.

There&apos;s a few ways to have solved this, and I went with our typical RefPtr&lt;&gt; protector(this) pattern inside the timer callback.

This can be revisited at any future date.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150210</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-17 22:57:06 -0800</bug_when>
    <thetext>&gt; Since standard practice for individual patch authors has never including running tests under GuardMalloc

Rolling out is not a punishment, it has nothing to do with how hard or was it was to avoid the problem. 

This is something that is done for the benefit of others, as flakiness costs everyone a lot of time - from EWS being slower to analyzing induced memory corruption crashes to fluctuations on performance metrics. 

As we add more styles of testing, I expect that we will be only getting more quick to roll back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150211</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-17 22:58:29 -0800</bug_when>
    <thetext>Debug EWS is still orange - there is a streams crash, and IndexedDB flakiness too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150212</commentid>
    <comment_count>11</comment_count>
      <attachid>267610</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-17 23:06:38 -0800</bug_when>
    <thetext>Comment on attachment 267610
Patch for landing

Clearing flags on attachment: 267610

Committed r194263: &lt;http://trac.webkit.org/changeset/194263&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150213</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-17 23:06:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150288</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-18 08:54:50 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Since standard practice for individual patch authors has never including running tests under GuardMalloc
&gt; 
&gt; Rolling out is not a punishment, it has nothing to do with how hard or was
&gt; it was to avoid the problem. 

I didn&apos;t claim it was a punishment.

Last night I could&apos;ve either:
1 - Made a quick fix for the GuardMalloc issues and then get 1 or 2 more bug fixes done
2 - Update past the rollout, build, get a new patch ready, submit it, then have no time to work on addition bug fixes as planned.

I did #2, meaning new bug fixes were not done last night.

&gt; 
&gt; This is something that is done for the benefit of others, as flakiness costs
&gt; everyone a lot of time - from EWS being slower to analyzing induced memory
&gt; corruption crashes to fluctuations on performance metrics. 

I&apos;d wager during the evenings when the pace of work drops off, it would&apos;ve been acceptable to ping for a quick fix instead of insta-rolling out.
 
&gt; As we add more styles of testing, I expect that we will be only getting more
&gt; quick to roll back.

I&apos;ve been blowing this horn for years - EWS in its current state is harmful. See: The automation paradox.

EWS is meant to prevent bad patches from going in, but then after patches go in we have a WHOLE CRAZY AMOUNT of additional reasons why a patch can be rolled out.

As long as EWS doesn&apos;t prevent patches from going in that then might be instantly rolled out, that&apos;s a sign that our infrastructure is simply broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150602</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-19 20:58:07 -0800</bug_when>
    <thetext>&gt; it would&apos;ve been acceptable to ping for a quick fix

In fact, I pinged you on IRC, and you did not respond.

I think that what you are asking for is a much higher level of service than is feasible late in the night - I generally only have a few minutes, so when I ping and don&apos;t get a fix, I may not be able to roll out later.

&gt; 1 - Made a quick fix for the GuardMalloc issues and then get 1 or 2 more bug fixes done

Generally, making a fix while the tree is in a bad state is particularly advisable - it&apos;s too easy to do a less than a great job of fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150751</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-21 10:01:22 -0800</bug_when>
    <thetext>I meant &quot;is NOT particularly advisable&quot;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267583</attachid>
            <date>2015-12-17 14:37:46 -0800</date>
            <delta_ts>2015-12-17 22:17:35 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15672</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNTNiNzMxLi4xODg3NjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTUtMTItMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vZGVybiBJREI6IFJlZmFjdG9yIG9wZW4vZGVsZXRlIHJlcXVlc3RzIHRvIGV4aXN0IGlu
IHRoZSBzYW1lIHF1ZXVlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUyMzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIChSZWZhY3RvciwgYWxsIGV4aXN0aW5nIHRlc3RzIGNvbnRp
bnVlIHRvIHBhc3MpLgorCisgICAgICAgIFRoZSBvcmRlciBiZXR3ZWVuIGluY29taW5nIG9wZW4g
YW5kIGRlbGV0ZSByZXF1ZXN0cyBtYXR0ZXJzLCBhbmQgZWFjaCByZXF1ZXN0CisgICAgICAgIG5l
ZWRzIHRvIGJlIGhhbmRsZWQgaW5kaXZpZHVhbGx5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBw
YXRjaCBkb2VzIHRoZSBhYm92ZSB3aXRob3V0IGNoYW5naW5nIGJlaGF2aW9yIG9uIGV4aXN0aW5n
IHBhc3NpbmcgdGVzdHMsCisgICAgICAgIHdoaWxlIG1vdmluZyBtYW55IGN1cnJlbnRseSBza2lw
cGVkIHRlc3RzIGNsb3NlciB0byBwYXNzaW5nLgorICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJTZXJ2ZXJPcGVyYXRpb246Om5vdGlmeURlbGV0ZVJlcXVlc3RCbG9ja2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyT3BlcmF0aW9uOjpub3Rp
ZnlEaWREZWxldGVEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJT
ZXJ2ZXJPcGVyYXRpb246Omhhc05vdGlmaWVkRGVsZXRlUmVxdWVzdEJsb2NrZWQpOgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6On5VbmlxdWVJREJE
YXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
OjpvcGVuRGF0YWJhc2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2U6OmlzVmVyc2lvbkNoYW5nZUluUHJvZ3Jlc3MpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVu
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OnBlcmZvcm1DdXJyZW50RGVsZXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmhhbmRsZURhdGFiYXNlT3BlcmF0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpoYW5kbGVDdXJy
ZW50T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OmhhbmRsZURlbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjppbnZva2VPcGVyYXRpb25BbmRUcmFuc2FjdGlvblRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Om9wZXJhdGlvbkFuZFRy
YW5zYWN0aW9uVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjptYXliZURlbGV0ZURhdGFiYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKwogMjAxNS0xMi0x
NyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBQ
cmV2ZW50IGZsYXNoaW5nL3N0cm9iaW5nIHJlcGFpbnRzIG9uIGNlcnRhaW4gaGFyZHdhcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlck9wZXJhdGlvbi5jcHAKaW5kZXggMDE5NWUxOC4uZTIyZTU5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlck9wZXJhdGlvbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiSURCUmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU0LDYgKzU1LDIyIEBA
IGJvb2wgSURCU2VydmVyT3BlcmF0aW9uOjppc0RlbGV0ZVJlcXVlc3QoKSBjb25zdAogICAgIHJl
dHVybiBtX3JlcXVlc3REYXRhLmlzRGVsZXRlUmVxdWVzdCgpOwogfQogCit2b2lkIElEQlNlcnZl
ck9wZXJhdGlvbjo6bm90aWZ5RGVsZXRlUmVxdWVzdEJsb2NrZWQodWludDY0X3QgY3VycmVudFZl
cnNpb24pCit7CisgICAgQVNTRVJUKGlzRGVsZXRlUmVxdWVzdCgpKTsKKyAgICBBU1NFUlQoIW1f
bm90aWZpZWREZWxldGVSZXF1ZXN0QmxvY2tlZCk7CisKKyAgICBtX2Nvbm5lY3Rpb24ubm90aWZ5
T3BlbkRCUmVxdWVzdEJsb2NrZWQobV9yZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLCBj
dXJyZW50VmVyc2lvbiwgMCk7CisgICAgbV9ub3RpZmllZERlbGV0ZVJlcXVlc3RCbG9ja2VkID0g
dHJ1ZTsKK30KKwordm9pZCBJREJTZXJ2ZXJPcGVyYXRpb246Om5vdGlmeURpZERlbGV0ZURhdGFi
YXNlKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbykKK3sKKyAgICBBU1NFUlQoaXNEZWxldGVS
ZXF1ZXN0KCkpOworCisgICAgbV9jb25uZWN0aW9uLmRpZERlbGV0ZURhdGFiYXNlKElEQlJlc3Vs
dERhdGE6OmRlbGV0ZURhdGFiYXNlU3VjY2VzcyhtX3JlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlm
aWVyKCksIGluZm8pKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXJPcGVyYXRpb24uaAppbmRleCBhOWY5MTM2Li4zZGVh
NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VydmVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5oCkBAIC0zNCw2ICszNCw5IEBACiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJE
YXRhYmFzZUluZm87CisKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCiBjbGFzcyBJREJTZXJ2ZXJP
cGVyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxJREJTZXJ2ZXJPcGVyYXRpb24+IHsKQEAgLTQ2
LDExICs0OSwxNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc09wZW5SZXF1ZXN0KCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0RlbGV0ZVJlcXVlc3QoKSBjb25zdDsKIAorICAgIHZvaWQgbm90aWZ5RGVsZXRl
UmVxdWVzdEJsb2NrZWQodWludDY0X3QgY3VycmVudFZlcnNpb24pOworICAgIHZvaWQgbm90aWZ5
RGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCRGF0YWJhc2VJbmZvJik7CisgICAgYm9vbCBoYXNO
b3RpZmllZERlbGV0ZVJlcXVlc3RCbG9ja2VkKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmllZERl
bGV0ZVJlcXVlc3RCbG9ja2VkOyB9CisKIHByaXZhdGU6CiAgICAgSURCU2VydmVyT3BlcmF0aW9u
KElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7CiAKICAgICBJ
REJDb25uZWN0aW9uVG9DbGllbnQmIG1fY29ubmVjdGlvbjsKICAgICBJREJSZXF1ZXN0RGF0YSBt
X3JlcXVlc3REYXRhOworCisgICAgYm9vbCBtX25vdGlmaWVkRGVsZXRlUmVxdWVzdEJsb2NrZWQg
eyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcAppbmRleCAxZmNiYjllLi4wMjFhMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAKQEAgLTUxLDYgKzUxLDE1IEBAIFVuaXF1ZUlEQkRhdGFiYXNlOjpVbmlxdWVJREJEYXRh
YmFzZShJREJTZXJ2ZXImIHNlcnZlciwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmCiB7CiB9CiAK
K1VuaXF1ZUlEQkRhdGFiYXNlOjp+VW5pcXVlSURCRGF0YWJhc2UoKQoreworICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6flVuaXF1ZUlEQkRhdGFiYXNlKCkiKTsKKyAgICBB
U1NFUlQoIWhhc0FueVBlbmRpbmdDYWxsYmFja3MoKSk7CisgICAgQVNTRVJUKG1faW5Qcm9ncmVz
c1RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3BlbmRpbmdUcmFuc2FjdGlv
bnMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9vcGVuRGF0YWJhc2VDb25uZWN0aW9ucy5pc0Vt
cHR5KCkpOworfQorCiBjb25zdCBJREJEYXRhYmFzZUluZm8mIFVuaXF1ZUlEQkRhdGFiYXNlOjpp
bmZvKCkgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2RhdGFiYXNlSW5mbyk7CkBAIC02
MCw5ICs2OSw5IEBAIGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgVW5pcXVlSURCRGF0YWJhc2U6Omlu
Zm8oKSBjb25zdAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVjdGlv
bihJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb24sIGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSkKIHsKICAgICBhdXRvIG9wZXJhdGlvbiA9IElEQlNlcnZlck9wZXJhdGlv
bjo6Y3JlYXRlKGNvbm5lY3Rpb24sIHJlcXVlc3REYXRhKTsKLSAgICBtX3BlbmRpbmdPcGVuRGF0
YWJhc2VPcGVyYXRpb25zLmFwcGVuZChXVEY6Om1vdmUob3BlcmF0aW9uKSk7CisgICAgbV9wZW5k
aW5nRGF0YWJhc2VPcGVyYXRpb25zLmFwcGVuZChXVEY6Om1vdmUob3BlcmF0aW9uKSk7CiAKLSAg
ICAvLyBBbiBvcGVuIG9wZXJhdGlvbiBpcyBhbHJlYWR5IGluIHByb2dyZXNzLCBzbyB0aGlzIG9u
ZSBoYXMgdG8gd2FpdC4KKyAgICAvLyBBbiBvcGVuIG9wZXJhdGlvbiBpcyBhbHJlYWR5IGluIHBy
b2dyZXNzLCBzbyB3ZSBjYW4ndCBwb3NzaWJseSBoYW5kbGUgdGhpcyBvbmUgeWV0LgogICAgIGlm
IChtX2lzT3BlbmluZ0JhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC04MywzOSAr
OTIsMTQgQEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6aGFzQW55UGVuZGluZ0NhbGxiYWNrcygp
IGNvbnN0CiAgICAgICAgIHx8ICFtX2NvdW50Q2FsbGJhY2tzLmlzRW1wdHkoKTsKIH0KIAotYm9v
bCBVbmlxdWVJREJEYXRhYmFzZTo6bWF5YmVEZWxldGVEYXRhYmFzZShJREJTZXJ2ZXJPcGVyYXRp
b24qIG5ld2VzdERlbGV0ZU9wZXJhdGlvbikKK2Jvb2wgVW5pcXVlSURCRGF0YWJhc2U6OmlzVmVy
c2lvbkNoYW5nZUluUHJvZ3Jlc3MoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6bWF5YmVEZWxldGVE
YXRhYmFzZSIpOwotCi0gICAgaWYgKGhhc0FueU9wZW5Db25uZWN0aW9ucygpIHx8ICFtX2Nsb3Nl
UGVuZGluZ0RhdGFiYXNlQ29ubmVjdGlvbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIEV4YWN0
bHkgb25jZSwgbm90aWZ5IGFsbCBvcGVuIGNvbm5lY3Rpb25zIG9mIHRoZSBwZW5kaW5nIGRlbGV0
aW9uLgotICAgICAgICBpZiAoIW1faGFzTm90aWZpZWRDb25uZWN0aW9uc09mRGVsZXRlKSB7Ci0g
ICAgICAgICAgICBub3RpZnlDb25uZWN0aW9uc09mVmVyc2lvbkNoYW5nZSgwKTsKLSAgICAgICAg
ICAgIG1faGFzTm90aWZpZWRDb25uZWN0aW9uc09mRGVsZXRlID0gdHJ1ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChuZXdlc3REZWxldGVPcGVyYXRpb24pCi0gICAgICAgICAgICBuZXdlc3RE
ZWxldGVPcGVyYXRpb24tPmNvbm5lY3Rpb24oKS5ub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChu
ZXdlc3REZWxldGVPcGVyYXRpb24tPnJlcXVlc3REYXRhKCkucmVxdWVzdElkZW50aWZpZXIoKSwg
bV9kYXRhYmFzZUluZm8tPnZlcnNpb24oKSwgMCk7Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIEFTU0VSVCghaGFzQW55UGVuZGluZ0NhbGxiYWNrcygpKTsKLSAgICBBU1NF
UlQobV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKG1fcGVu
ZGluZ1RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwotICAgIEFTU0VSVChtX29wZW5EYXRhYmFzZUNv
bm5lY3Rpb25zLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKG1fcGVuZGluZ09wZW5EYXRhYmFzZU9w
ZXJhdGlvbnMuaXNFbXB0eSgpKTsKLQotICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogbV9wZW5k
aW5nRGVsZXRlRGF0YWJhc2VPcGVyYXRpb25zKSB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGFiYXNl
SW5mbyk7Ci0gICAgICAgIEFTU0VSVChvcGVyYXRpb24tPmlzRGVsZXRlUmVxdWVzdCgpKTsKLSAg
ICAgICAgb3BlcmF0aW9uLT5jb25uZWN0aW9uKCkuZGlkRGVsZXRlRGF0YWJhc2UoSURCUmVzdWx0
RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKG9wZXJhdGlvbi0+cmVxdWVzdERhdGEoKS5yZXF1
ZXN0SWRlbnRpZmllcigpLCAqbV9kYXRhYmFzZUluZm8pKTsKLSAgICB9CisjaWZuZGVmIE5ERUJV
RworICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikKKyAgICAgICAgQVNTRVJUKG1f
dmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbik7CisjZW5kaWYKIAotICAgIG1fc2VydmVy
LmRlbGV0ZVVuaXF1ZUlEQkRhdGFiYXNlKCp0aGlzKTsKLQotICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiBtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb247CiB9CiAKIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpCkBAIC0xMjUsNiAr
MTA5LDE0IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJh
dGlvbigpCiAgICAgQVNTRVJUKG1fY3VycmVudE9wZXJhdGlvbik7CiAgICAgQVNTRVJUKG1fY3Vy
cmVudE9wZXJhdGlvbi0+aXNPcGVuUmVxdWVzdCgpKTsKIAorICAgIC8vIElmIHdlIHByZXZpb3Vz
bHkgc3RhcnRlZCBhIHZlcnNpb24gY2hhbmdlIG9wZXJhdGlvbiBidXQgd2VyZSBibG9ja2VkIGJ5
IGhhdmluZyBvcGVuIGNvbm5lY3Rpb25zLAorICAgIC8vIHdlIG1pZ2h0IG5vdyBiZSB1bmJsb2Nr
ZWQuCisgICAgaWYgKG1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbikgeworICAgICAg
ICBpZiAoIW1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uICYmICFoYXNBbnlPcGVuQ29ubmVjdGlv
bnMoKSkKKyAgICAgICAgICAgIHN0YXJ0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyAzLjMuMSBPcGVuaW5nIGEgZGF0YWJhc2UKICAg
ICAvLyBJZiByZXF1ZXN0ZWQgdmVyc2lvbiBpcyB1bmRlZmluZWQsIHRoZW4gbGV0IHJlcXVlc3Rl
ZCB2ZXJzaW9uIGJlIDEgaWYgZGIgd2FzIGNyZWF0ZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXAsCiAg
ICAgLy8gb3IgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBkYiBvdGhlcndpc2UuCkBAIC0xNzYsMjkg
KzE2OCw2NyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudERlbGV0ZU9w
ZXJhdGlvbigpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFz
ZTo6cGVyZm9ybUN1cnJlbnREZWxldGVPcGVyYXRpb24iKTsKIAotICAgIC8vIE5vdCB1c2VkIHll
dC4KKyAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOworICAgIEFTU0VSVChtX2N1cnJlbnRPcGVy
YXRpb24pOworICAgIEFTU0VSVChtX2N1cnJlbnRPcGVyYXRpb24tPmlzRGVsZXRlUmVxdWVzdCgp
KTsKKworICAgIGlmIChoYXNBbnlPcGVuQ29ubmVjdGlvbnMoKSkgeworICAgICAgICAvLyBFeGFj
dGx5IG9uY2UsIG5vdGlmeSBhbGwgb3BlbiBjb25uZWN0aW9ucyBvZiB0aGUgcGVuZGluZyBkZWxl
dGlvbi4KKyAgICAgICAgaWYgKCFtX2hhc05vdGlmaWVkQ29ubmVjdGlvbnNPZkRlbGV0ZSkgewor
ICAgICAgICAgICAgbm90aWZ5Q29ubmVjdGlvbnNPZlZlcnNpb25DaGFuZ2UoMCk7CisgICAgICAg
ICAgICBtX2hhc05vdGlmaWVkQ29ubmVjdGlvbnNPZkRlbGV0ZSA9IHRydWU7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIW1fY3VycmVudE9wZXJhdGlvbi0+aGFzTm90aWZpZWREZWxldGVSZXF1
ZXN0QmxvY2tlZCgpKQorICAgICAgICAgICAgbV9jdXJyZW50T3BlcmF0aW9uLT5ub3RpZnlEZWxl
dGVSZXF1ZXN0QmxvY2tlZChtX2RhdGFiYXNlSW5mby0+dmVyc2lvbigpKTsKKworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKCFoYXNBbnlQZW5kaW5nQ2FsbGJhY2tzKCkpOwor
ICAgIEFTU0VSVChtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMuaXNFbXB0eSgpKTsKKyAgICBBU1NF
UlQobV9wZW5kaW5nVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fb3BlbkRh
dGFiYXNlQ29ubmVjdGlvbnMuaXNFbXB0eSgpKTsKKworICAgIG1fY3VycmVudE9wZXJhdGlvbi0+
bm90aWZ5RGlkRGVsZXRlRGF0YWJhc2UoKm1fZGF0YWJhc2VJbmZvKTsKKyAgICBtX2N1cnJlbnRP
cGVyYXRpb24gPSBudWxscHRyOworICAgIG1faGFzTm90aWZpZWRDb25uZWN0aW9uc09mRGVsZXRl
ID0gZmFsc2U7CisgICAgbV9kZWxldGVQZW5kaW5nID0gZmFsc2U7CisKKyAgICBpZiAobV9wZW5k
aW5nRGF0YWJhc2VPcGVyYXRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zZXJ2ZXIuZGVsZXRl
VW5pcXVlSURCRGF0YWJhc2UoKnRoaXMpOworICAgIGVsc2UKKyAgICAgICAgaW52b2tlT3BlcmF0
aW9uQW5kVHJhbnNhY3Rpb25UaW1lcigpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpo
YW5kbGVEYXRhYmFzZU9wZXJhdGlvbnMoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6aGFuZGxlRGF0
YWJhc2VPcGVyYXRpb25zIik7CisgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJE
YXRhYmFzZTo6aGFuZGxlRGF0YWJhc2VPcGVyYXRpb25zIC0gVGhlcmUgYXJlICV6dSBwZW5kaW5n
IiwgbV9wZW5kaW5nRGF0YWJhc2VPcGVyYXRpb25zLnNpemUoKSk7CiAKLSAgICAvLyBJZiBhIHZl
cnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIGlzIGN1cnJlbnRseSBpbiBwcm9ncmVzcywgbm8gbmV3
IGNvbm5lY3Rpb25zIGNhbiBiZSBvcGVuZWQgcmlnaHQgbm93LgotICAgIC8vIFdlIHdpbGwgdHJ5
IGFnYWluIGxhdGVyLgotICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb24p
CisgICAgaWYgKG1fcGVuZGluZ0RhdGFiYXNlT3BlcmF0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChtX3BlbmRpbmdPcGVuRGF0YWJhc2VPcGVyYXRpb25zLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNv
bm5lY3Rpb24gfHwgbV9jdXJyZW50T3BlcmF0aW9uKSB7CisgICAgICAgIC8vIFdlIGNhbid0IHN0
YXJ0IHRoZSBuZXh0IGRhdGFiYXNlIG9wZXJhdGlvbiBxdWl0ZSB5ZXQsIGJ1dCB3ZSBtaWdodCBu
ZWVkIHRvIG5vdGlmeSBhbGwgb3BlbiBjb25uZWN0aW9ucworICAgICAgICAvLyBhYm91dCBhIHBl
bmRpbmcgZGVsZXRlLgorICAgICAgICBpZiAobV9wZW5kaW5nRGF0YWJhc2VPcGVyYXRpb25zLmZp
cnN0KCktPmlzRGVsZXRlUmVxdWVzdCgpICYmICFtX2hhc05vdGlmaWVkQ29ubmVjdGlvbnNPZkRl
bGV0ZSkgeworICAgICAgICAgICAgbV9oYXNOb3RpZmllZENvbm5lY3Rpb25zT2ZEZWxldGUgPSB0
cnVlOworICAgICAgICAgICAgbm90aWZ5Q29ubmVjdGlvbnNPZlZlcnNpb25DaGFuZ2UoMCk7Cisg
ICAgICAgIH0KKyAgICB9CiAKLSAgICBpZiAobV9jdXJyZW50T3BlcmF0aW9uKQotICAgICAgICBy
ZXR1cm47CisgICAgbV9jdXJyZW50T3BlcmF0aW9uID0gbV9wZW5kaW5nRGF0YWJhc2VPcGVyYXRp
b25zLnRha2VGaXJzdCgpOworICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6
aGFuZGxlRGF0YWJhc2VPcGVyYXRpb25zIC0gUG9wcGVkIGFuIG9wZXJhdGlvbiwgbm93IHRoZXJl
IGFyZSAlenUgcGVuZGluZyIsIG1fcGVuZGluZ0RhdGFiYXNlT3BlcmF0aW9ucy5zaXplKCkpOwog
Ci0gICAgbV9jdXJyZW50T3BlcmF0aW9uID0gbV9wZW5kaW5nT3BlbkRhdGFiYXNlT3BlcmF0aW9u
cy50YWtlRmlyc3QoKTsKKyAgICBoYW5kbGVDdXJyZW50T3BlcmF0aW9uKCk7Cit9CiAKLSAgICAv
LyBGSVhNRTogT25jZSBoYW5kbGVEYXRhYmFzZU9wZXJhdGlvbnMgYWxzbyBoYW5kbGVzIGRlbGV0
ZSBvcGVyYXRpb25zLCByZW1vdmUgdGhpcyBBU1NFUlQuCi0gICAgQVNTRVJUKG1fY3VycmVudE9w
ZXJhdGlvbi0+aXNPcGVuUmVxdWVzdCgpKTsKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmhhbmRs
ZUN1cnJlbnRPcGVyYXRpb24oKQoreworICAgIEFTU0VSVChtX2N1cnJlbnRPcGVyYXRpb24pOwor
CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBwcm90ZWN0b3IodGhpcyk7CiAKICAgICBp
ZiAobV9jdXJyZW50T3BlcmF0aW9uLT5pc09wZW5SZXF1ZXN0KCkpCiAgICAgICAgIHBlcmZvcm1D
dXJyZW50T3Blbk9wZXJhdGlvbigpOwpAQCAtMjA2LDYgKzIzNiw5IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmhhbmRsZURhdGFiYXNlT3BlcmF0aW9ucygpCiAgICAgICAgIHBlcmZvcm1DdXJy
ZW50RGVsZXRlT3BlcmF0aW9uKCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKworICAgIGlmICghbV9jdXJyZW50T3BlcmF0aW9uKQorICAgICAgICBpbnZva2VPcGVy
YXRpb25BbmRUcmFuc2FjdGlvblRpbWVyKCk7CiB9CiAKIGJvb2wgVW5pcXVlSURCRGF0YWJhc2U6
Omhhc0FueU9wZW5Db25uZWN0aW9ucygpIGNvbnN0CkBAIC0yNTYsMTggKzI4OSw4IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmhhbmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9DbGllbnQmIGNv
bm5lY3Rpb24sIGNvbnN0IElECiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJ
REJEYXRhYmFzZTo6aGFuZGxlRGVsZXRlIik7CiAKLSAgICBhdXRvIG9wZXJhdGlvbiA9IElEQlNl
cnZlck9wZXJhdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb24sIHJlcXVlc3REYXRhKTsKLSAgICBhdXRv
KiByYXdPcGVyYXRpb24gPSAmb3BlcmF0aW9uLmdldCgpOwotICAgIG1fcGVuZGluZ0RlbGV0ZURh
dGFiYXNlT3BlcmF0aW9ucy5hcHBlbmQoV1RGOjptb3ZlKG9wZXJhdGlvbikpOwotCi0gICAgLy8g
SWYgYSBkaWZmZXJlbnQgcmVxdWVzdCBoYXMgYWxyZWFkeSBjb21lIGluIHRvIGRlbGV0ZSB0aGlz
IGRhdGFiYXNlLCB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byBkby4KLSAgICAvLyBBIGRlbGV0ZSBp
cyBhbHJlYWR5IGluIHByb2dyZXNzLCBhbmQgdGhpcyByZXF1ZXN0IHdpbGwgYmUgaGFuZGxlZCBh
bG9uZyB3aXRoIGFsbCB0aGUgcmVzdC4KLSAgICBpZiAobV9kZWxldGVQZW5kaW5nKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX2RlbGV0ZVBlbmRpbmcgPSB0cnVlOwotCi0gICAgbWF5YmVEZWxl
dGVEYXRhYmFzZShyYXdPcGVyYXRpb24pOworICAgIG1fcGVuZGluZ0RhdGFiYXNlT3BlcmF0aW9u
cy5hcHBlbmQoSURCU2VydmVyT3BlcmF0aW9uOjpjcmVhdGUoY29ubmVjdGlvbiwgcmVxdWVzdERh
dGEpKTsKKyAgICBoYW5kbGVEYXRhYmFzZU9wZXJhdGlvbnMoKTsKIH0KIAogdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oKQpAQCAtOTM3LDYgKzk2
MCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmVucXVldWVUcmFuc2FjdGlvbihSZWY8VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4mJiB0CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
Omludm9rZU9wZXJhdGlvbkFuZFRyYW5zYWN0aW9uVGltZXIoKQogeworICAgIExPRyhJbmRleGVk
REIsICJVbmlxdWVJREJEYXRhYmFzZTo6aW52b2tlT3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1l
cigpIik7CiAgICAgaWYgKCFtX29wZXJhdGlvbkFuZFRyYW5zYWN0aW9uVGltZXIuaXNBY3RpdmUo
KSkKICAgICAgICAgbV9vcGVyYXRpb25BbmRUcmFuc2FjdGlvblRpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKIH0KQEAgLTk0NSwxOCArOTY5LDEzIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZXJh
dGlvbkFuZFRyYW5zYWN0aW9uVGltZXJGaXJlZCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIiht
YWluKSBVbmlxdWVJREJEYXRhYmFzZTo6b3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1lckZpcmVk
Iik7CiAKLSAgICBoYW5kbGVEYXRhYmFzZU9wZXJhdGlvbnMoKTsKLQotICAgIGlmIChtX2RlbGV0
ZVBlbmRpbmcgJiYgbWF5YmVEZWxldGVEYXRhYmFzZShudWxscHRyKSkKLSAgICAgICAgcmV0dXJu
OworICAgIC8vIFRoZSBjdXJyZW50IG9wZXJhdGlvbiBtaWdodCByZXF1aXJlIG11bHRpcGxlIGF0
dGVtcHRzIHRvIGhhbmRsZSwgc28gdHJ5IHRvCisgICAgLy8gbWFrZSBmdXJ0aGVyIHByb2dyZXNz
IG9uIGl0IG5vdy4KKyAgICBpZiAobV9jdXJyZW50T3BlcmF0aW9uKQorICAgICAgICBoYW5kbGVD
dXJyZW50T3BlcmF0aW9uKCk7CiAKLSAgICAvLyBJZiB0aGUgZGF0YWJhc2Ugd2FzIG5vdCBkZWxl
dGVkIGluIHRoZSBwcmV2aW91cyBzdGVwLCB0cnkgdG8gcnVuIGEgdHJhbnNhY3Rpb24gbm93Lgot
ICAgIGlmIChtX3BlbmRpbmdUcmFuc2FjdGlvbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmICgh
aGFzQW55T3BlbkNvbm5lY3Rpb25zKCkgJiYgbV9jdXJyZW50T3BlcmF0aW9uKSB7Ci0gICAgICAg
ICAgICBzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbigpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgfQorICAgIGlmICghbV9jdXJyZW50T3BlcmF0aW9uKQorICAgICAg
ICBoYW5kbGVEYXRhYmFzZU9wZXJhdGlvbnMoKTsKIAogICAgIGJvb2wgaGFkRGVmZXJyZWRUcmFu
c2FjdGlvbnMgPSBmYWxzZTsKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gdGFrZU5leHRSdW5uYWJs
ZVRyYW5zYWN0aW9uKGhhZERlZmVycmVkVHJhbnNhY3Rpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmgKaW5kZXggMGIyMzk3Ny4uMmQ4ZWRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTcx
LDYgKzcxLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVbmlxdWVJ
REJEYXRhYmFzZShzZXJ2ZXIsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKKyAgICB+VW5pcXVlSURC
RGF0YWJhc2UoKTsKKwogICAgIHZvaWQgb3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0
aW9uVG9DbGllbnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwogCiAgICAgY29uc3QgSURCRGF0
YWJhc2VJbmZvJiBpbmZvKCkgY29uc3Q7CkBAIC0xMDUsMTUgKzEwNywxNiBAQCBwcml2YXRlOgog
ICAgIFVuaXF1ZUlEQkRhdGFiYXNlKElEQlNlcnZlciYsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRp
ZmllciYpOwogICAgIAogICAgIHZvaWQgaGFuZGxlRGF0YWJhc2VPcGVyYXRpb25zKCk7CisgICAg
dm9pZCBoYW5kbGVDdXJyZW50T3BlcmF0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQ3VycmVudE9w
ZW5PcGVyYXRpb24oKTsKICAgICB2b2lkIHBlcmZvcm1DdXJyZW50RGVsZXRlT3BlcmF0aW9uKCk7
CiAgICAgdm9pZCBhZGRPcGVuRGF0YWJhc2VDb25uZWN0aW9uKFJlZjxVbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24+JiYpOwotICAgIGJvb2wgbWF5YmVEZWxldGVEYXRhYmFzZShJREJTZXJ2ZXJP
cGVyYXRpb24qKTsKICAgICBib29sIGhhc0FueU9wZW5Db25uZWN0aW9ucygpIGNvbnN0OwogCiAg
ICAgdm9pZCBzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbigpOwogICAgIHZvaWQgbm90aWZ5
Q29ubmVjdGlvbnNPZlZlcnNpb25DaGFuZ2VGb3JVcGdyYWRlKCk7CiAgICAgdm9pZCBub3RpZnlD
b25uZWN0aW9uc09mVmVyc2lvbkNoYW5nZSh1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKTsKKyAg
ICBib29sIGlzVmVyc2lvbkNoYW5nZUluUHJvZ3Jlc3MoKTsKIAogICAgIHZvaWQgYWN0aXZhdGVU
cmFuc2FjdGlvbkluQmFja2luZ1N0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsK
ICAgICB2b2lkIGluUHJvZ3Jlc3NUcmFuc2FjdGlvbkNvbXBsZXRlZChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImKTsKQEAgLTE3Myw4ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIElEQlNlcnZl
ciYgbV9zZXJ2ZXI7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAg
ICAKLSAgICBEZXF1ZTxSZWY8SURCU2VydmVyT3BlcmF0aW9uPj4gbV9wZW5kaW5nT3BlbkRhdGFi
YXNlT3BlcmF0aW9uczsKLSAgICBEZXF1ZTxSZWY8SURCU2VydmVyT3BlcmF0aW9uPj4gbV9wZW5k
aW5nRGVsZXRlRGF0YWJhc2VPcGVyYXRpb25zOworICAgIERlcXVlPFJlZjxJREJTZXJ2ZXJPcGVy
YXRpb24+PiBtX3BlbmRpbmdEYXRhYmFzZU9wZXJhdGlvbnM7CiAgICAgUmVmUHRyPElEQlNlcnZl
ck9wZXJhdGlvbj4gbV9jdXJyZW50T3BlcmF0aW9uOwogCiAgICAgSGFzaFNldDxSZWZQdHI8VW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uPj4gbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9uczsK
</data>
<flag name="review"
          id="292607"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267610</attachid>
            <date>2015-12-17 22:17:35 -0800</date>
            <delta_ts>2015-12-17 23:06:38 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15721</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0ZGUxMzc0Li42NDhjYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTUtMTItMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vZGVybiBJREI6IFJlZmFjdG9yIG9wZW4vZGVsZXRlIHJlcXVlc3RzIHRvIGV4aXN0IGlu
IHRoZSBzYW1lIHF1ZXVlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUyMzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4K
KworICAgICAgICBObyBuZXcgdGVzdHMgKFJlZmFjdG9yLCBhbGwgZXhpc3RpbmcgdGVzdHMgY29u
dGludWUgdG8gcGFzcykuCisKKyAgICAgICAgVGhlIG9yZGVyIGJldHdlZW4gaW5jb21pbmcgb3Bl
biBhbmQgZGVsZXRlIHJlcXVlc3RzIG1hdHRlcnMsIGFuZCBlYWNoIHJlcXVlc3QKKyAgICAgICAg
bmVlZHMgdG8gYmUgaGFuZGxlZCBpbmRpdmlkdWFsbHkuCisgICAgICAgIAorICAgICAgICBUaGlz
IHBhdGNoIGRvZXMgdGhlIGFib3ZlIHdpdGhvdXQgY2hhbmdpbmcgYmVoYXZpb3Igb24gZXhpc3Rp
bmcgcGFzc2luZyB0ZXN0cywKKyAgICAgICAgd2hpbGUgbW92aW5nIG1hbnkgY3VycmVudGx5IHNr
aXBwZWQgdGVzdHMgY2xvc2VyIHRvIHBhc3NpbmcuCisgICAgCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OklEQlNlcnZlck9wZXJhdGlvbjo6bm90aWZ5RGVsZXRlUmVxdWVzdEJsb2Nr
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXJPcGVyYXRpb246Om5v
dGlmeURpZERlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QlNlcnZlck9wZXJhdGlvbjo6aGFzTm90aWZpZWREZWxldGVSZXF1ZXN0QmxvY2tlZCk6CisKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6flVuaXF1ZUlE
QkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6Om9wZW5EYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6aXNWZXJzaW9uQ2hhbmdlSW5Qcm9ncmVzcyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9w
ZW5PcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUN1cnJlbnREZWxldGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aGFuZGxlRGF0YWJhc2VPcGVyYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmhhbmRsZUN1
cnJlbnRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6aGFuZGxlRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6Omludm9rZU9wZXJhdGlvbkFuZFRyYW5zYWN0aW9uVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6b3BlcmF0aW9uQW5k
VHJhbnNhY3Rpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6Om1heWJlRGVsZXRlRGF0YWJhc2UpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorCiAyMDE1LTEy
LTE3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTk0MjQxIGFuZCByMTk0MjUyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
T3BlcmF0aW9uLmNwcAppbmRleCAwMTk1ZTE4Li5lMjJlNTllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyT3BlcmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyT3Bl
cmF0aW9uLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAKKyNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsNiArNTUsMjIgQEAgYm9vbCBJREJT
ZXJ2ZXJPcGVyYXRpb246OmlzRGVsZXRlUmVxdWVzdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVx
dWVzdERhdGEuaXNEZWxldGVSZXF1ZXN0KCk7CiB9CiAKK3ZvaWQgSURCU2VydmVyT3BlcmF0aW9u
Ojpub3RpZnlEZWxldGVSZXF1ZXN0QmxvY2tlZCh1aW50NjRfdCBjdXJyZW50VmVyc2lvbikKK3sK
KyAgICBBU1NFUlQoaXNEZWxldGVSZXF1ZXN0KCkpOworICAgIEFTU0VSVCghbV9ub3RpZmllZERl
bGV0ZVJlcXVlc3RCbG9ja2VkKTsKKworICAgIG1fY29ubmVjdGlvbi5ub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChtX3JlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCksIGN1cnJlbnRWZXJz
aW9uLCAwKTsKKyAgICBtX25vdGlmaWVkRGVsZXRlUmVxdWVzdEJsb2NrZWQgPSB0cnVlOworfQor
Cit2b2lkIElEQlNlcnZlck9wZXJhdGlvbjo6bm90aWZ5RGlkRGVsZXRlRGF0YWJhc2UoY29uc3Qg
SURCRGF0YWJhc2VJbmZvJiBpbmZvKQoreworICAgIEFTU0VSVChpc0RlbGV0ZVJlcXVlc3QoKSk7
CisKKyAgICBtX2Nvbm5lY3Rpb24uZGlkRGVsZXRlRGF0YWJhc2UoSURCUmVzdWx0RGF0YTo6ZGVs
ZXRlRGF0YWJhc2VTdWNjZXNzKG1fcmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKSwgaW5m
bykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5oCmluZGV4IGE5ZjkxMzYuLjNkZWE1MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXJP
cGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VydmVyT3BlcmF0aW9uLmgKQEAgLTM0LDYgKzM0LDkgQEAKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkRhdGFiYXNlSW5m
bzsKKwogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKIGNsYXNzIElEQlNlcnZlck9wZXJhdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPElEQlNlcnZlck9wZXJhdGlvbj4gewpAQCAtNDYsMTEgKzQ5LDE3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzT3BlblJlcXVlc3QoKSBjb25zdDsKICAgICBib29sIGlz
RGVsZXRlUmVxdWVzdCgpIGNvbnN0OwogCisgICAgdm9pZCBub3RpZnlEZWxldGVSZXF1ZXN0Qmxv
Y2tlZCh1aW50NjRfdCBjdXJyZW50VmVyc2lvbik7CisgICAgdm9pZCBub3RpZnlEaWREZWxldGVE
YXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUluZm8mKTsKKyAgICBib29sIGhhc05vdGlmaWVkRGVs
ZXRlUmVxdWVzdEJsb2NrZWQoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWVkRGVsZXRlUmVxdWVz
dEJsb2NrZWQ7IH0KKwogcHJpdmF0ZToKICAgICBJREJTZXJ2ZXJPcGVyYXRpb24oSURCQ29ubmVj
dGlvblRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKIAogICAgIElEQkNvbm5lY3Rp
b25Ub0NsaWVudCYgbV9jb25uZWN0aW9uOwogICAgIElEQlJlcXVlc3REYXRhIG1fcmVxdWVzdERh
dGE7CisKKyAgICBib29sIG1fbm90aWZpZWREZWxldGVSZXF1ZXN0QmxvY2tlZCB7IGZhbHNlIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3Bw
CmluZGV4IDFmY2JiOWUuLjkxNDA5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAt
NTEsNiArNTEsMTUgQEAgVW5pcXVlSURCRGF0YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKElEQlNl
cnZlciYgc2VydmVyLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWYKIHsKIH0KIAorVW5pcXVlSURC
RGF0YWJhc2U6On5VbmlxdWVJREJEYXRhYmFzZSgpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIlVu
aXF1ZUlEQkRhdGFiYXNlOjp+VW5pcXVlSURCRGF0YWJhc2UoKSAoJXApIiwgdGhpcyk7CisgICAg
QVNTRVJUKCFoYXNBbnlQZW5kaW5nQ2FsbGJhY2tzKCkpOworICAgIEFTU0VSVChtX2luUHJvZ3Jl
c3NUcmFuc2FjdGlvbnMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9wZW5kaW5nVHJhbnNhY3Rp
b25zLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMuaXNF
bXB0eSgpKTsKK30KKwogY29uc3QgSURCRGF0YWJhc2VJbmZvJiBVbmlxdWVJREJEYXRhYmFzZTo6
aW5mbygpIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9kYXRhYmFzZUluZm8pOwpAQCAt
NjAsOSArNjksOSBAQCBjb25zdCBJREJEYXRhYmFzZUluZm8mIFVuaXF1ZUlEQkRhdGFiYXNlOjpp
bmZvKCkgY29uc3QKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5EYXRhYmFzZUNvbm5lY3Rp
b24oSURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uLCBjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEpCiB7CiAgICAgYXV0byBvcGVyYXRpb24gPSBJREJTZXJ2ZXJPcGVyYXRp
b246OmNyZWF0ZShjb25uZWN0aW9uLCByZXF1ZXN0RGF0YSk7Ci0gICAgbV9wZW5kaW5nT3BlbkRh
dGFiYXNlT3BlcmF0aW9ucy5hcHBlbmQoV1RGOjptb3ZlKG9wZXJhdGlvbikpOworICAgIG1fcGVu
ZGluZ0RhdGFiYXNlT3BlcmF0aW9ucy5hcHBlbmQoV1RGOjptb3ZlKG9wZXJhdGlvbikpOwogCi0g
ICAgLy8gQW4gb3BlbiBvcGVyYXRpb24gaXMgYWxyZWFkeSBpbiBwcm9ncmVzcywgc28gdGhpcyBv
bmUgaGFzIHRvIHdhaXQuCisgICAgLy8gQW4gb3BlbiBvcGVyYXRpb24gaXMgYWxyZWFkeSBpbiBw
cm9ncmVzcywgc28gd2UgY2FuJ3QgcG9zc2libHkgaGFuZGxlIHRoaXMgb25lIHlldC4KICAgICBp
ZiAobV9pc09wZW5pbmdCYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKIApAQCAtODMsMzkg
KzkyLDE0IEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2U6Omhhc0FueVBlbmRpbmdDYWxsYmFja3Mo
KSBjb25zdAogICAgICAgICB8fCAhbV9jb3VudENhbGxiYWNrcy5pc0VtcHR5KCk7CiB9CiAKLWJv
b2wgVW5pcXVlSURCRGF0YWJhc2U6Om1heWJlRGVsZXRlRGF0YWJhc2UoSURCU2VydmVyT3BlcmF0
aW9uKiBuZXdlc3REZWxldGVPcGVyYXRpb24pCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlOjppc1Zl
cnNpb25DaGFuZ2VJblByb2dyZXNzKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6Om1heWJlRGVsZXRl
RGF0YWJhc2UiKTsKLQotICAgIGlmIChoYXNBbnlPcGVuQ29ubmVjdGlvbnMoKSB8fCAhbV9jbG9z
ZVBlbmRpbmdEYXRhYmFzZUNvbm5lY3Rpb25zLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBFeGFj
dGx5IG9uY2UsIG5vdGlmeSBhbGwgb3BlbiBjb25uZWN0aW9ucyBvZiB0aGUgcGVuZGluZyBkZWxl
dGlvbi4KLSAgICAgICAgaWYgKCFtX2hhc05vdGlmaWVkQ29ubmVjdGlvbnNPZkRlbGV0ZSkgewot
ICAgICAgICAgICAgbm90aWZ5Q29ubmVjdGlvbnNPZlZlcnNpb25DaGFuZ2UoMCk7Ci0gICAgICAg
ICAgICBtX2hhc05vdGlmaWVkQ29ubmVjdGlvbnNPZkRlbGV0ZSA9IHRydWU7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAobmV3ZXN0RGVsZXRlT3BlcmF0aW9uKQotICAgICAgICAgICAgbmV3ZXN0
RGVsZXRlT3BlcmF0aW9uLT5jb25uZWN0aW9uKCkubm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQo
bmV3ZXN0RGVsZXRlT3BlcmF0aW9uLT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCks
IG1fZGF0YWJhc2VJbmZvLT52ZXJzaW9uKCksIDApOworI2lmbmRlZiBOREVCVUcKKyAgICBpZiAo
bV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pCisgICAgICAgIEFTU0VSVChtX3ZlcnNpb25DaGFu
Z2VEYXRhYmFzZUNvbm5lY3Rpb24pOworI2VuZGlmCiAKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIEFTU0VSVCghaGFzQW55UGVuZGluZ0NhbGxiYWNrcygpKTsKLSAgICBBU1NF
UlQobV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKG1fcGVu
ZGluZ1RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwotICAgIEFTU0VSVChtX29wZW5EYXRhYmFzZUNv
bm5lY3Rpb25zLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKG1fcGVuZGluZ09wZW5EYXRhYmFzZU9w
ZXJhdGlvbnMuaXNFbXB0eSgpKTsKLQotICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogbV9wZW5k
aW5nRGVsZXRlRGF0YWJhc2VPcGVyYXRpb25zKSB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGFiYXNl
SW5mbyk7Ci0gICAgICAgIEFTU0VSVChvcGVyYXRpb24tPmlzRGVsZXRlUmVxdWVzdCgpKTsKLSAg
ICAgICAgb3BlcmF0aW9uLT5jb25uZWN0aW9uKCkuZGlkRGVsZXRlRGF0YWJhc2UoSURCUmVzdWx0
RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKG9wZXJhdGlvbi0+cmVxdWVzdERhdGEoKS5yZXF1
ZXN0SWRlbnRpZmllcigpLCAqbV9kYXRhYmFzZUluZm8pKTsKLSAgICB9Ci0KLSAgICBtX3NlcnZl
ci5kZWxldGVVbmlxdWVJREJEYXRhYmFzZSgqdGhpcyk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gbV92ZXJzaW9uQ2hhbmdlRGF0YWJhc2VDb25uZWN0aW9uOwogfQogCiB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb24oKQpAQCAtMTI1LDYg
KzEwOSwxNCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudE9wZW5PcGVy
YXRpb24oKQogICAgIEFTU0VSVChtX2N1cnJlbnRPcGVyYXRpb24pOwogICAgIEFTU0VSVChtX2N1
cnJlbnRPcGVyYXRpb24tPmlzT3BlblJlcXVlc3QoKSk7CiAKKyAgICAvLyBJZiB3ZSBwcmV2aW91
c2x5IHN0YXJ0ZWQgYSB2ZXJzaW9uIGNoYW5nZSBvcGVyYXRpb24gYnV0IHdlcmUgYmxvY2tlZCBi
eSBoYXZpbmcgb3BlbiBjb25uZWN0aW9ucywKKyAgICAvLyB3ZSBtaWdodCBub3cgYmUgdW5ibG9j
a2VkLgorICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb24pIHsKKyAgICAg
ICAgaWYgKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiAmJiAhaGFzQW55T3BlbkNvbm5lY3Rp
b25zKCkpCisgICAgICAgICAgICBzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gMy4zLjEgT3BlbmluZyBhIGRhdGFiYXNlCiAg
ICAgLy8gSWYgcmVxdWVzdGVkIHZlcnNpb24gaXMgdW5kZWZpbmVkLCB0aGVuIGxldCByZXF1ZXN0
ZWQgdmVyc2lvbiBiZSAxIGlmIGRiIHdhcyBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyBzdGVwLAog
ICAgIC8vIG9yIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgZGIgb3RoZXJ3aXNlLgpAQCAtMTc2LDI5
ICsxNjgsNjcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnREZWxldGVP
cGVyYXRpb24oKQogewogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJh
c2U6OnBlcmZvcm1DdXJyZW50RGVsZXRlT3BlcmF0aW9uIik7CiAKLSAgICAvLyBOb3QgdXNlZCB5
ZXQuCisgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKKyAgICBBU1NFUlQobV9jdXJyZW50T3Bl
cmF0aW9uKTsKKyAgICBBU1NFUlQobV9jdXJyZW50T3BlcmF0aW9uLT5pc0RlbGV0ZVJlcXVlc3Qo
KSk7CisKKyAgICBpZiAoaGFzQW55T3BlbkNvbm5lY3Rpb25zKCkpIHsKKyAgICAgICAgLy8gRXhh
Y3RseSBvbmNlLCBub3RpZnkgYWxsIG9wZW4gY29ubmVjdGlvbnMgb2YgdGhlIHBlbmRpbmcgZGVs
ZXRpb24uCisgICAgICAgIGlmICghbV9oYXNOb3RpZmllZENvbm5lY3Rpb25zT2ZEZWxldGUpIHsK
KyAgICAgICAgICAgIG5vdGlmeUNvbm5lY3Rpb25zT2ZWZXJzaW9uQ2hhbmdlKDApOworICAgICAg
ICAgICAgbV9oYXNOb3RpZmllZENvbm5lY3Rpb25zT2ZEZWxldGUgPSB0cnVlOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFtX2N1cnJlbnRPcGVyYXRpb24tPmhhc05vdGlmaWVkRGVsZXRlUmVx
dWVzdEJsb2NrZWQoKSkKKyAgICAgICAgICAgIG1fY3VycmVudE9wZXJhdGlvbi0+bm90aWZ5RGVs
ZXRlUmVxdWVzdEJsb2NrZWQobV9kYXRhYmFzZUluZm8tPnZlcnNpb24oKSk7CisKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCghaGFzQW55UGVuZGluZ0NhbGxiYWNrcygpKTsK
KyAgICBBU1NFUlQobV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7CisgICAgQVNT
RVJUKG1fcGVuZGluZ1RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX29wZW5E
YXRhYmFzZUNvbm5lY3Rpb25zLmlzRW1wdHkoKSk7CisKKyAgICBtX2N1cnJlbnRPcGVyYXRpb24t
Pm5vdGlmeURpZERlbGV0ZURhdGFiYXNlKCptX2RhdGFiYXNlSW5mbyk7CisgICAgbV9jdXJyZW50
T3BlcmF0aW9uID0gbnVsbHB0cjsKKyAgICBtX2hhc05vdGlmaWVkQ29ubmVjdGlvbnNPZkRlbGV0
ZSA9IGZhbHNlOworICAgIG1fZGVsZXRlUGVuZGluZyA9IGZhbHNlOworCisgICAgaWYgKG1fcGVu
ZGluZ0RhdGFiYXNlT3BlcmF0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgIG1fc2VydmVyLmRlbGV0
ZVVuaXF1ZUlEQkRhdGFiYXNlKCp0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIGludm9rZU9wZXJh
dGlvbkFuZFRyYW5zYWN0aW9uVGltZXIoKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
aGFuZGxlRGF0YWJhc2VPcGVyYXRpb25zKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmhhbmRsZURh
dGFiYXNlT3BlcmF0aW9ucyIpOworICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURC
RGF0YWJhc2U6OmhhbmRsZURhdGFiYXNlT3BlcmF0aW9ucyAtIFRoZXJlIGFyZSAlenUgcGVuZGlu
ZyIsIG1fcGVuZGluZ0RhdGFiYXNlT3BlcmF0aW9ucy5zaXplKCkpOwogCi0gICAgLy8gSWYgYSB2
ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MsIG5vIG5l
dyBjb25uZWN0aW9ucyBjYW4gYmUgb3BlbmVkIHJpZ2h0IG5vdy4KLSAgICAvLyBXZSB3aWxsIHRy
eSBhZ2FpbiBsYXRlci4KLSAgICBpZiAobV92ZXJzaW9uQ2hhbmdlRGF0YWJhc2VDb25uZWN0aW9u
KQorICAgIGlmIChtX3BlbmRpbmdEYXRhYmFzZU9wZXJhdGlvbnMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9wZW5kaW5nT3BlbkRhdGFiYXNlT3BlcmF0aW9ucy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAobV92ZXJzaW9uQ2hhbmdlRGF0YWJhc2VD
b25uZWN0aW9uIHx8IG1fY3VycmVudE9wZXJhdGlvbikgeworICAgICAgICAvLyBXZSBjYW4ndCBz
dGFydCB0aGUgbmV4dCBkYXRhYmFzZSBvcGVyYXRpb24gcXVpdGUgeWV0LCBidXQgd2UgbWlnaHQg
bmVlZCB0byBub3RpZnkgYWxsIG9wZW4gY29ubmVjdGlvbnMKKyAgICAgICAgLy8gYWJvdXQgYSBw
ZW5kaW5nIGRlbGV0ZS4KKyAgICAgICAgaWYgKG1fcGVuZGluZ0RhdGFiYXNlT3BlcmF0aW9ucy5m
aXJzdCgpLT5pc0RlbGV0ZVJlcXVlc3QoKSAmJiAhbV9oYXNOb3RpZmllZENvbm5lY3Rpb25zT2ZE
ZWxldGUpIHsKKyAgICAgICAgICAgIG1faGFzTm90aWZpZWRDb25uZWN0aW9uc09mRGVsZXRlID0g
dHJ1ZTsKKyAgICAgICAgICAgIG5vdGlmeUNvbm5lY3Rpb25zT2ZWZXJzaW9uQ2hhbmdlKDApOwor
ICAgICAgICB9CisgICAgfQogCi0gICAgaWYgKG1fY3VycmVudE9wZXJhdGlvbikKLSAgICAgICAg
cmV0dXJuOworICAgIG1fY3VycmVudE9wZXJhdGlvbiA9IG1fcGVuZGluZ0RhdGFiYXNlT3BlcmF0
aW9ucy50YWtlRmlyc3QoKTsKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6
OmhhbmRsZURhdGFiYXNlT3BlcmF0aW9ucyAtIFBvcHBlZCBhbiBvcGVyYXRpb24sIG5vdyB0aGVy
ZSBhcmUgJXp1IHBlbmRpbmciLCBtX3BlbmRpbmdEYXRhYmFzZU9wZXJhdGlvbnMuc2l6ZSgpKTsK
IAotICAgIG1fY3VycmVudE9wZXJhdGlvbiA9IG1fcGVuZGluZ09wZW5EYXRhYmFzZU9wZXJhdGlv
bnMudGFrZUZpcnN0KCk7CisgICAgaGFuZGxlQ3VycmVudE9wZXJhdGlvbigpOworfQogCi0gICAg
Ly8gRklYTUU6IE9uY2UgaGFuZGxlRGF0YWJhc2VPcGVyYXRpb25zIGFsc28gaGFuZGxlcyBkZWxl
dGUgb3BlcmF0aW9ucywgcmVtb3ZlIHRoaXMgQVNTRVJULgotICAgIEFTU0VSVChtX2N1cnJlbnRP
cGVyYXRpb24tPmlzT3BlblJlcXVlc3QoKSk7Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpoYW5k
bGVDdXJyZW50T3BlcmF0aW9uKCkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50T3BlcmF0aW9uKTsK
KworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gcHJvdGVjdG9yKHRoaXMpOwogCiAgICAg
aWYgKG1fY3VycmVudE9wZXJhdGlvbi0+aXNPcGVuUmVxdWVzdCgpKQogICAgICAgICBwZXJmb3Jt
Q3VycmVudE9wZW5PcGVyYXRpb24oKTsKQEAgLTIwNiw2ICsyMzYsOSBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpoYW5kbGVEYXRhYmFzZU9wZXJhdGlvbnMoKQogICAgICAgICBwZXJmb3JtQ3Vy
cmVudERlbGV0ZU9wZXJhdGlvbigpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisKKyAgICBpZiAoIW1fY3VycmVudE9wZXJhdGlvbikKKyAgICAgICAgaW52b2tlT3Bl
cmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1lcigpOwogfQogCiBib29sIFVuaXF1ZUlEQkRhdGFiYXNl
OjpoYXNBbnlPcGVuQ29ubmVjdGlvbnMoKSBjb25zdApAQCAtMjU2LDE4ICsyODksOCBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpoYW5kbGVEZWxldGUoSURCQ29ubmVjdGlvblRvQ2xpZW50JiBj
b25uZWN0aW9uLCBjb25zdCBJRAogewogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVl
SURCRGF0YWJhc2U6OmhhbmRsZURlbGV0ZSIpOwogCi0gICAgYXV0byBvcGVyYXRpb24gPSBJREJT
ZXJ2ZXJPcGVyYXRpb246OmNyZWF0ZShjb25uZWN0aW9uLCByZXF1ZXN0RGF0YSk7Ci0gICAgYXV0
byogcmF3T3BlcmF0aW9uID0gJm9wZXJhdGlvbi5nZXQoKTsKLSAgICBtX3BlbmRpbmdEZWxldGVE
YXRhYmFzZU9wZXJhdGlvbnMuYXBwZW5kKFdURjo6bW92ZShvcGVyYXRpb24pKTsKLQotICAgIC8v
IElmIGEgZGlmZmVyZW50IHJlcXVlc3QgaGFzIGFscmVhZHkgY29tZSBpbiB0byBkZWxldGUgdGhp
cyBkYXRhYmFzZSwgdGhlcmUncyBub3RoaW5nIGxlZnQgdG8gZG8uCi0gICAgLy8gQSBkZWxldGUg
aXMgYWxyZWFkeSBpbiBwcm9ncmVzcywgYW5kIHRoaXMgcmVxdWVzdCB3aWxsIGJlIGhhbmRsZWQg
YWxvbmcgd2l0aCBhbGwgdGhlIHJlc3QuCi0gICAgaWYgKG1fZGVsZXRlUGVuZGluZykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9kZWxldGVQZW5kaW5nID0gdHJ1ZTsKLQotICAgIG1heWJlRGVs
ZXRlRGF0YWJhc2UocmF3T3BlcmF0aW9uKTsKKyAgICBtX3BlbmRpbmdEYXRhYmFzZU9wZXJhdGlv
bnMuYXBwZW5kKElEQlNlcnZlck9wZXJhdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb24sIHJlcXVlc3RE
YXRhKSk7CisgICAgaGFuZGxlRGF0YWJhc2VPcGVyYXRpb25zKCk7CiB9CiAKIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnN0YXJ0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKCkKQEAgLTkzNyw2ICs5
NjAsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjplbnF1ZXVlVHJhbnNhY3Rpb24oUmVmPFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+JiYgdAogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjppbnZva2VPcGVyYXRpb25BbmRUcmFuc2FjdGlvblRpbWVyKCkKIHsKKyAgICBMT0coSW5kZXhl
ZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6Omludm9rZU9wZXJhdGlvbkFuZFRyYW5zYWN0aW9uVGlt
ZXIoKSIpOwogICAgIGlmICghbV9vcGVyYXRpb25BbmRUcmFuc2FjdGlvblRpbWVyLmlzQWN0aXZl
KCkpCiAgICAgICAgIG1fb3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1lci5zdGFydE9uZVNob3Qo
MCk7CiB9CkBAIC05NDUsMTggKzk2OSwxNSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVy
YXRpb25BbmRUcmFuc2FjdGlvblRpbWVyRmlyZWQoKQogewogICAgIExPRyhJbmRleGVkREIsICIo
bWFpbikgVW5pcXVlSURCRGF0YWJhc2U6Om9wZXJhdGlvbkFuZFRyYW5zYWN0aW9uVGltZXJGaXJl
ZCIpOwogCi0gICAgaGFuZGxlRGF0YWJhc2VPcGVyYXRpb25zKCk7CisgICAgUmVmUHRyPFVuaXF1
ZUlEQkRhdGFiYXNlPiBwcm90ZWN0b3IodGhpcyk7CiAKLSAgICBpZiAobV9kZWxldGVQZW5kaW5n
ICYmIG1heWJlRGVsZXRlRGF0YWJhc2UobnVsbHB0cikpCi0gICAgICAgIHJldHVybjsKKyAgICAv
LyBUaGUgY3VycmVudCBvcGVyYXRpb24gbWlnaHQgcmVxdWlyZSBtdWx0aXBsZSBhdHRlbXB0cyB0
byBoYW5kbGUsIHNvIHRyeSB0bworICAgIC8vIG1ha2UgZnVydGhlciBwcm9ncmVzcyBvbiBpdCBu
b3cuCisgICAgaWYgKG1fY3VycmVudE9wZXJhdGlvbikKKyAgICAgICAgaGFuZGxlQ3VycmVudE9w
ZXJhdGlvbigpOwogCi0gICAgLy8gSWYgdGhlIGRhdGFiYXNlIHdhcyBub3QgZGVsZXRlZCBpbiB0
aGUgcHJldmlvdXMgc3RlcCwgdHJ5IHRvIHJ1biBhIHRyYW5zYWN0aW9uIG5vdy4KLSAgICBpZiAo
bV9wZW5kaW5nVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoIWhhc0FueU9w
ZW5Db25uZWN0aW9ucygpICYmIG1fY3VycmVudE9wZXJhdGlvbikgewotICAgICAgICAgICAgc3Rh
cnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgIH0KKyAgICBpZiAoIW1fY3VycmVudE9wZXJhdGlvbikKKyAgICAgICAgaGFuZGxl
RGF0YWJhc2VPcGVyYXRpb25zKCk7CiAKICAgICBib29sIGhhZERlZmVycmVkVHJhbnNhY3Rpb25z
ID0gZmFsc2U7CiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IHRha2VOZXh0UnVubmFibGVUcmFuc2Fj
dGlvbihoYWREZWZlcnJlZFRyYW5zYWN0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4
IDBiMjM5NzcuLjJkOGVkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC03MSw2ICs3MSw4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVW5pcXVlSURCRGF0YWJh
c2Uoc2VydmVyLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCisgICAgflVuaXF1ZUlEQkRhdGFiYXNl
KCk7CisKICAgICB2b2lkIG9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xp
ZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKIAogICAgIGNvbnN0IElEQkRhdGFiYXNlSW5m
byYgaW5mbygpIGNvbnN0OwpAQCAtMTA1LDE1ICsxMDcsMTYgQEAgcHJpdmF0ZToKICAgICBVbmlx
dWVJREJEYXRhYmFzZShJREJTZXJ2ZXImLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsK
ICAgICAKICAgICB2b2lkIGhhbmRsZURhdGFiYXNlT3BlcmF0aW9ucygpOworICAgIHZvaWQgaGFu
ZGxlQ3VycmVudE9wZXJhdGlvbigpOwogICAgIHZvaWQgcGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0
aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQ3VycmVudERlbGV0ZU9wZXJhdGlvbigpOwogICAgIHZv
aWQgYWRkT3BlbkRhdGFiYXNlQ29ubmVjdGlvbihSZWY8VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uPiYmKTsKLSAgICBib29sIG1heWJlRGVsZXRlRGF0YWJhc2UoSURCU2VydmVyT3BlcmF0aW9u
Kik7CiAgICAgYm9vbCBoYXNBbnlPcGVuQ29ubmVjdGlvbnMoKSBjb25zdDsKIAogICAgIHZvaWQg
c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oKTsKICAgICB2b2lkIG5vdGlmeUNvbm5lY3Rp
b25zT2ZWZXJzaW9uQ2hhbmdlRm9yVXBncmFkZSgpOwogICAgIHZvaWQgbm90aWZ5Q29ubmVjdGlv
bnNPZlZlcnNpb25DaGFuZ2UodWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CisgICAgYm9vbCBp
c1ZlcnNpb25DaGFuZ2VJblByb2dyZXNzKCk7CiAKICAgICB2b2lkIGFjdGl2YXRlVHJhbnNhY3Rp
b25JbkJhY2tpbmdTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CiAgICAgdm9p
ZCBpblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJik7CkBAIC0xNzMsOCArMTc2LDcgQEAgcHJpdmF0ZToKICAgICBJREJTZXJ2ZXImIG1fc2Vy
dmVyOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgCi0gICAg
RGVxdWU8UmVmPElEQlNlcnZlck9wZXJhdGlvbj4+IG1fcGVuZGluZ09wZW5EYXRhYmFzZU9wZXJh
dGlvbnM7Ci0gICAgRGVxdWU8UmVmPElEQlNlcnZlck9wZXJhdGlvbj4+IG1fcGVuZGluZ0RlbGV0
ZURhdGFiYXNlT3BlcmF0aW9uczsKKyAgICBEZXF1ZTxSZWY8SURCU2VydmVyT3BlcmF0aW9uPj4g
bV9wZW5kaW5nRGF0YWJhc2VPcGVyYXRpb25zOwogICAgIFJlZlB0cjxJREJTZXJ2ZXJPcGVyYXRp
b24+IG1fY3VycmVudE9wZXJhdGlvbjsKIAogICAgIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbj4+IG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnM7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>