<?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>165000</bug_id>
          
          <creation_ts>2016-11-20 14:18:39 -0800</creation_ts>
          <short_desc>IndexedDB 2.0: Queue up completed requests in the client, handle them one by one</short_desc>
          <delta_ts>2016-11-29 08:05:40 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>160306</blocked>
    
    <blocked>164932</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>1253155</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-20 14:18:39 -0800</bug_when>
    <thetext>IndexedDB 2.0: Queue up completed requests in the client, handle them one by one

Note: Currently we only send one operation to the server at a time, so therefore we only ever have one reply in the client at a time.

But with the patch in https://bugs.webkit.org/show_bug.cgi?id=164932 that will change, and a subtle race is introduced in event handling on the client side.

To resolve that, we&apos;ll need this refactor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253350</commentid>
    <comment_count>1</comment_count>
      <attachid>295329</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-21 23:18:58 -0800</bug_when>
    <thetext>Created attachment 295329
Patch for EWS (not quite for review)

Giving EWS a shot before hitting the sack, hopefully this&apos;ll be ready for review tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253434</commentid>
    <comment_count>2</comment_count>
      <attachid>295349</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-22 20:13:55 -0800</bug_when>
    <thetext>Created attachment 295349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253442</commentid>
    <comment_count>3</comment_count>
      <attachid>295349</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-22 23:06:19 -0800</bug_when>
    <thetext>Comment on attachment 295349
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBTransaction.cpp:265
&gt; +    m_currentlyCompletingRequest = nullptr;

This seems unnecessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253843</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-28 08:53:47 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 295349 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=295349&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBTransaction.cpp:265
&gt; &gt; +    m_currentlyCompletingRequest = nullptr;
&gt; 
&gt; This seems unnecessary

It keeps an assertion valid as we walk the tight loop of things to abort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253867</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-28 10:22:41 -0800</bug_when>
    <thetext>The problems that the EWS bots were seeing on transaction-scheduler-6 were due to a bug in the test.

Fixing that now and giving EWS another pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253871</commentid>
    <comment_count>6</comment_count>
      <attachid>295497</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-28 10:29:03 -0800</bug_when>
    <thetext>Created attachment 295497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254219</commentid>
    <comment_count>7</comment_count>
      <attachid>295584</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-28 23:06:41 -0800</bug_when>
    <thetext>Created attachment 295584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254220</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-28 23:07:58 -0800</bug_when>
    <thetext>Hammered the tests locally with and without this patch, along with a fix for the test that EWS originally had a problem with. Things seem to be good now.

Will let EWS re-run on it before I cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254269</commentid>
    <comment_count>9</comment_count>
      <attachid>295584</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-29 08:05:36 -0800</bug_when>
    <thetext>Comment on attachment 295584
Patch

Clearing flags on attachment: 295584

Committed r209069: &lt;http://trac.webkit.org/changeset/209069&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254270</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-29 08:05:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295329</attachid>
            <date>2016-11-21 23:18:58 -0800</date>
            <delta_ts>2016-11-22 20:13:52 -0800</delta_ts>
            <desc>Patch for EWS (not quite for review)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22151</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5k
ZXggZmJhZDM1Zi4uN2U3MzI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTMwNCw2ICszMDQsOSBAQCBib29sIElEQlJlcXVlc3Q6
OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgICAgICBtX3RyYW5zYWN0aW9uLT5hYm9y
dER1ZVRvRmFpbGVkUmVxdWVzdCgqbV9kb21FcnJvcik7CiAgICAgfQogCisgICAgaWYgKG1fdHJh
bnNhY3Rpb24pCisgICAgICAgIG1fdHJhbnNhY3Rpb24tPmZpbmlzaGVkRGlzcGF0Y2hFdmVudEZv
clJlcXVlc3QoKnRoaXMpOworCiAgICAgcmV0dXJuIGRvbnRQcmV2ZW50RGVmYXVsdDsKIH0KIApA
QCAtNDY1LDEwICs0NjgsMTAgQEAgdm9pZCBJREJSZXF1ZXN0OjpkaWRPcGVuT3JJdGVyYXRlQ3Vy
c29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAgICAgbV9jdXJzb3JSZXF1ZXN0
Tm90aWZpZXIgPSBudWxscHRyOwogICAgIG1fcGVuZGluZ0N1cnNvciA9IG51bGxwdHI7CiAKLSAg
ICByZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOworICAgIGNvbXBsZXRlUmVxdWVzdEFuZERp
c3BhdGNoRXZlbnQocmVzdWx0RGF0YSk7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6cmVxdWVzdENv
bXBsZXRlZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQordm9pZCBJREJSZXF1ZXN0
Ojpjb21wbGV0ZVJlcXVlc3RBbmREaXNwYXRjaEV2ZW50KGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5o
CmluZGV4IGU5NDU4NzIuLjhmNTNkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHVzaW5n
IFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAotICAgIHZv
aWQgcmVxdWVzdENvbXBsZXRlZChjb25zdCBJREJSZXN1bHREYXRhJik7CisgICAgdm9pZCBjb21w
bGV0ZVJlcXVlc3RBbmREaXNwYXRjaEV2ZW50KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAogICAg
IHZvaWQgc2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmKTsKICAgICB2b2lkIHNldFJlc3VsdChj
b25zdCBWZWN0b3I8SURCS2V5RGF0YT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCAzOGRlY2Q1Li41ZjUzNzJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwCkBAIC03NCw4ICs3NCwxMCBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24o
SURCRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mCiAgICAgOiBJ
REJBY3RpdmVET01PYmplY3QoZGF0YWJhc2Uuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAg
ICwgbV9kYXRhYmFzZShkYXRhYmFzZSkKICAgICAsIG1faW5mbyhpbmZvKQotICAgICwgbV9vcGVy
YXRpb25UaW1lcigqdGhpcywgJklEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25UaW1lckZpcmVkKQor
ICAgICwgbV9wZW5kaW5nT3BlcmF0aW9uVGltZXIoKnRoaXMsICZJREJUcmFuc2FjdGlvbjo6cGVu
ZGluZ09wZXJhdGlvblRpbWVyRmlyZWQpCisgICAgLCBtX2NvbXBsZXRlZE9wZXJhdGlvblRpbWVy
KCp0aGlzLCAmSURCVHJhbnNhY3Rpb246OmNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQpCiAg
ICAgLCBtX29wZW5EQlJlcXVlc3QocmVxdWVzdCkKKyAgICAsIG1fY3VycmVudGx5Q29tcGxldGlu
Z1JlcXVlc3QocmVxdWVzdCkKIAogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6SURCVHJhbnNhY3Rpb24gLSAlcyIsIG1faW5mby5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CkBAIC0yNDQsNyArMjQ2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6aW50ZXJuYWxB
Ym9ydCgpCiAKICAgICB0cmFuc2l0aW9uZWRUb0ZpbmlzaGluZyhJbmRleGVkREI6OlRyYW5zYWN0
aW9uU3RhdGU6OkFib3J0aW5nKTsKICAgICAKLSAgICBtX2Fib3J0UXVldWUuc3dhcChtX3RyYW5z
YWN0aW9uT3BlcmF0aW9uUXVldWUpOworICAgIG1fYWJvcnRRdWV1ZS5zd2FwKG1fcGVuZGluZ1Ry
YW5zYWN0aW9uT3BlcmF0aW9uUXVldWUpOwogCiAgICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xp
ZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgbnVsbHB0ciwgJklEQlRyYW5z
YWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMpKTsKIH0KQEAgLTI1MywxOSAr
MjU1LDIzIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1
ZXN0cyhJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0CiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMiKTsKICAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwot
ICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuaXNFbXB0eSgpKTsKKyAgICBB
U1NFUlQobV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5pc0VtcHR5KCkpOwogCiAg
ICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuYWJvcnRUcmFuc2FjdGlvbigqdGhpcyk7
CiAKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRp
b24uaWRlbnRpZmllcigpKSk7CiAgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5yZW1vdmUo
b3BlcmF0aW9uLmlkZW50aWZpZXIoKSk7CiAKKyAgICBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1
ZXN0ID0gbnVsbHB0cjsKKyAgICAKICAgICBJREJFcnJvciBlcnJvcihJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6QWJvcnRFcnJvcik7Ci0gICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX2Fib3J0UXVl
dWUpCi0gICAgICAgIG9wZXJhdGlvbi0+Y29tcGxldGVkKElEQlJlc3VsdERhdGE6OmVycm9yKG9w
ZXJhdGlvbi0+aWRlbnRpZmllcigpLCBlcnJvcikpOworICAgIGZvciAoYXV0byYgb3BlcmF0aW9u
IDogbV9hYm9ydFF1ZXVlKSB7CisgICAgICAgIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3Qg
PSBudWxscHRyOworICAgICAgICBvcGVyYXRpb24tPmRvQ29tcGxldGUoSURCUmVzdWx0RGF0YTo6
ZXJyb3Iob3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIGVycm9yKSk7CisgICAgfQogCiAgICAgLy8g
U2luY2Ugd2UncmUgYWJvcnRpbmcsIGl0IHNob3VsZCBiZSBpbXBvc3NpYmxlIHRvIGhhdmUgcXVl
dWVkIGFueSBmdXJ0aGVyIG9wZXJhdGlvbnMuCi0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25PcGVy
YXRpb25RdWV1ZS5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3BlbmRpbmdUcmFuc2FjdGlvbk9w
ZXJhdGlvblF1ZXVlLmlzRW1wdHkoKSk7CiB9CiAKIGNvbnN0IGNoYXIqIElEQlRyYW5zYWN0aW9u
OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKQEAgLTMzOSwzMCArMzQ1LDMwIEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5z
YWN0aW9uT3BlcmF0aW9uPiYmCiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFw
LmNvbnRhaW5zKG9wZXJhdGlvbi0+aWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAotICAgIG1fdHJhbnNh
Y3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKKyAgICBtX3BlbmRpbmdUcmFu
c2FjdGlvbk9wZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVyYXRpb24pOwogICAgIG1fdHJhbnNhY3Rp
b25PcGVyYXRpb25NYXAuc2V0KG9wZXJhdGlvbi0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKG9wZXJh
dGlvbikpOwogCi0gICAgc2NoZWR1bGVPcGVyYXRpb25UaW1lcigpOworICAgIHNjaGVkdWxlUGVu
ZGluZ09wZXJhdGlvblRpbWVyKCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVkdWxl
T3BlcmF0aW9uVGltZXIoKQordm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVQZW5kaW5nT3Bl
cmF0aW9uVGltZXIoKQogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CiAKLSAgICBpZiAoIW1fb3BlcmF0aW9uVGltZXIuaXNBY3Rp
dmUoKSkKLSAgICAgICAgbV9vcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgaWYg
KCFtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdP
cGVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246
Om9wZXJhdGlvblRpbWVyRmlyZWQoKQordm9pZCBJREJUcmFuc2FjdGlvbjo6cGVuZGluZ09wZXJh
dGlvblRpbWVyRmlyZWQoKQogewotICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
b3BlcmF0aW9uVGltZXJGaXJlZCAoJXApIiwgdGhpcyk7CisgICAgTE9HKEluZGV4ZWREQiwgIklE
QlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCAoJXApIiwgdGhpcyk7CiAg
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgp
KTsKIAogICAgIGlmICghbV9zdGFydGVkT25TZXJ2ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmICghbV90cmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBh
dXRvIG9wZXJhdGlvbiA9IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS50YWtlRmlyc3QoKTsK
KyAgICBpZiAoIW1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuaXNFbXB0eSgpKSB7
CisgICAgICAgIGF1dG8gb3BlcmF0aW9uID0gbV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25R
dWV1ZS50YWtlRmlyc3QoKTsKICAgICAgICAgb3BlcmF0aW9uLT5wZXJmb3JtKCk7CiAKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzc1LDYgKzM4MSw2NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVy
YXRpb25UaW1lckZpcmVkKCkKICAgICAgICAgY29tbWl0KCk7CiB9CiAKK3ZvaWQgSURCVHJhbnNh
Y3Rpb246OmNvbXBsZXRlZE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEsIElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKK3sKKyAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gb3BlcmF0aW9uLm9yaWdpblRocmVhZElEKCkpOworCisgICAg
bV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLmFwcGVuZCh7ICZvcGVyYXRpb24sIGRhdGEgfSk7Cisg
ICAgc2NoZWR1bGVDb21wbGV0ZWRPcGVyYXRpb25UaW1lcigpOworfQorCit2b2lkIElEQlRyYW5z
YWN0aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVyKCkKK3sKKyAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworCisgICAg
aWYgKCFtX2NvbXBsZXRlZE9wZXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fY29t
cGxldGVkT3BlcmF0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIElEQlRyYW5z
YWN0aW9uOjpjb21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBMT0coSW5kZXhl
ZERCLCAiSURCVHJhbnNhY3Rpb246OmNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQgKCVwKSIs
IHRoaXMpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisKKyAgICBpZiAobV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLmlzRW1wdHko
KSB8fCBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLnRha2VGaXJzdCgpOwor
ICAgIGl0ZXJhdG9yLmZpcnN0LT5kb0NvbXBsZXRlKGl0ZXJhdG9yLnNlY29uZCk7CisKKyAgICBp
ZiAoIW1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5pc0VtcHR5KCkgJiYgIW1fY3VycmVudGx5Q29t
cGxldGluZ1JlcXVlc3QpCisgICAgICAgIHNjaGVkdWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIo
KTsKK30KKwordm9pZCBJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KElE
QlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdCkKK3sKKyAgICBB
U1NFUlQoIW1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QpOworCisgICAgcmVxdWVzdC5jb21w
bGV0ZVJlcXVlc3RBbmREaXNwYXRjaEV2ZW50KHJlc3VsdCk7CisKKyAgICBtX2N1cnJlbnRseUNv
bXBsZXRpbmdSZXF1ZXN0ID0gJnJlcXVlc3Q7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb246OmNv
bXBsZXRlQ3Vyc29yUmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHRE
YXRhJiByZXN1bHQpCit7CisgICAgQVNTRVJUKCFtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0
KTsKKworICAgIHJlcXVlc3QuZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihyZXN1bHQpOworCisgICAg
bV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9ICZyZXF1ZXN0OworfQorCit2b2lkIElEQlRy
YW5zYWN0aW9uOjpmaW5pc2hlZERpc3BhdGNoRXZlbnRGb3JSZXF1ZXN0KElEQlJlcXVlc3QmIHJl
cXVlc3QpCit7CisgICAgaWYgKGlzRmluaXNoZWRPckZpbmlzaGluZygpKQorICAgICAgICByZXR1
cm47CisKKyAgICBBU1NFUlRfVU5VU0VEKHJlcXVlc3QsICFtX2N1cnJlbnRseUNvbXBsZXRpbmdS
ZXF1ZXN0IHx8IG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPT0gJnJlcXVlc3QpOworCisg
ICAgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9IG51bGxwdHI7CisgICAgc2NoZWR1bGVD
b21wbGV0ZWRPcGVyYXRpb25UaW1lcigpOworfQorCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb21t
aXQoKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y29tbWl0Iik7CkBA
IC00MjIsNyArNDg5LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQoY29uc3QgSURC
RXJyb3ImIGVycm9yKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2NoZWR1bGVPcGVy
YXRpb25UaW1lcigpOworICAgIHNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRpbWVyKCk7CiB9CiAK
IHZvaWQgSURCVHJhbnNhY3Rpb246Om5vdGlmeURpZEFib3J0KGNvbnN0IElEQkVycm9yJiBlcnJv
cikKQEAgLTcyNCw3ICs3OTEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRPcGVuQ3Vyc29y
T25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RAogICAgIExPRyhJ
bmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkT3BlbkN1cnNvck9uU2VydmVyIik7CiAgICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsK
IAotICAgIHJlcXVlc3QuZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihyZXN1bHREYXRhKTsKKyAgICBj
b21wbGV0ZUN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CiAKIHZvaWQgSURC
VHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNvbnN0IElEQkl0
ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQpAQCAtNzM5LDcgKzgwNiw2IEBAIHZvaWQgSURCVHJhbnNh
Y3Rpb246Oml0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNvbnN0IElEQkl0ZXJhdGVD
dXJzb3JEYXRhCiAgICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigqdGhpcywgKmN1cnNvci5yZXF1ZXN0KCksICZJREJUcmFuc2FjdGlvbjo6
ZGlkSXRlcmF0ZUN1cnNvck9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3JP
blNlcnZlciwgZGF0YSkpOwogfQogCi0vLyBGSVhNRTogY2hhbmdlcyBoZXJlCiB2b2lkIElEQlRy
YW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3JPblNlcnZl
ciIpOwpAQCAtNzUzLDcgKzgxOSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEl0ZXJhdGVD
dXJzb3JPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRJdGVyYXRlQ3Vyc29yT25TZXJ2ZXIiKTsK
ICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOwogCi0gICAgcmVxdWVzdC5kaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKHJlc3VsdERhdGEpOwor
ICAgIGNvbXBsZXRlQ3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKIH0KIAogUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNv
cmRzKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgSW5kZXhlZERCOjpHZXRBbGxUeXBl
IGdldEFsbFR5cGUsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKQEAgLTgwNiw3ICs4NzIsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIoSURCUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdQogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CiAKICAgICBpZiAocmVzdWx0RGF0YS50eXBl
KCkgPT0gSURCUmVzdWx0VHlwZTo6RXJyb3IpIHsKLSAgICAgICAgcmVxdWVzdC5yZXF1ZXN0Q29t
cGxldGVkKHJlc3VsdERhdGEpOworICAgICAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVx
dWVzdCwgcmVzdWx0RGF0YSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgyMiw3ICs4
ODgsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIoSURC
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdQogICAgICAgICBicmVhazsKICAgICB9CiAK
LSAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CisgICAgY29tcGxldGVO
b25jdXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQogCiBSZWY8SURCUmVxdWVz
dD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURC
T2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNv
cmREYXRhKQpAQCAtODkwLDcgKzk1Niw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdldFJl
Y29yZE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhCiAgICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsK
IAogICAgIGlmIChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcikgewot
ICAgICAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CisgICAgICAgIGNv
bXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtOTEwLDcgKzk3Niw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRp
ZEdldFJlY29yZE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERh
CiAgICAgICAgICAgICByZXF1ZXN0LnNldFJlc3VsdFRvVW5kZWZpbmVkKCk7CiAgICAgfQogCi0g
ICAgcmVxdWVzdC5yZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOworICAgIGNvbXBsZXRlTm9u
Y3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKIH0KIAogUmVmPElEQlJlcXVlc3Q+
IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0
U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQpAQCAtOTYx
LDcgKzEwMjcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRHZXRDb3VudE9uU2VydmVyKElE
QlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdAogICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CiAKICAgICByZXF1ZXN0
LnNldFJlc3VsdChyZXN1bHREYXRhLnJlc3VsdEludGVnZXIoKSk7Ci0gICAgcmVxdWVzdC5yZXF1
ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOworICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChy
ZXF1ZXN0LCByZXN1bHREYXRhKTsKIH0KIAogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9u
OjpyZXF1ZXN0RGVsZXRlUmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQk9iamVjdFN0b3JlJiBv
YmplY3RTdG9yZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKQEAgLTk5NCw3ICsxMDYw
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRlUmVjb3JkT25TZXJ2ZXIoSURCUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWwKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwogCiAgICAgcmVxdWVzdC5zZXRSZXN1
bHRUb1VuZGVmaW5lZCgpOwotICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRh
KTsKKyAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9
CiAKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3Rv
cmUoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlKQpAQCAtMTAy
OCw3ICsxMDk0LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkQ2xlYXJPYmplY3RTdG9yZU9u
U2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlIKICAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwogCiAgICAgcmVxdWVz
dC5zZXRSZXN1bHRUb1VuZGVmaW5lZCgpOwotICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChy
ZXN1bHREYXRhKTsKKyAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0
RGF0YSk7CiB9CiAKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9y
QWRkKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgSURCS2V5
KiBrZXksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIEluZGV4ZWREQjo6T2JqZWN0U3Rv
cmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCkBAIC0xMDc0LDcgKzExNDAsNyBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpwdXRPckFkZE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXJhdGlvbgogICAgICAgICAgICAgUmVmUHRyPElEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IHByb3RlY3RlZE9wZXJhdGlvbigmb3BlcmF0aW9uKTsKICAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJyb3Iob3BlcmF0aW9uLmlkZW50aWZp
ZXIoKSwgeyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwo
IkVycm9yIHByZXBhcmluZyBCbG9iL0ZpbGUgZGF0YSB0byBiZSBzdG9yZWQgaW4gb2JqZWN0IHN0
b3JlIikgfSk7CiAgICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNr
KFtwcm90ZWN0ZWRPcGVyYXRpb24gPSBXVEZNb3ZlKHByb3RlY3RlZE9wZXJhdGlvbiksIHJlc3Vs
dCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAg
ICAgICAgICBwcm90ZWN0ZWRPcGVyYXRpb24tPmNvbXBsZXRlZChyZXN1bHQpOworICAgICAgICAg
ICAgICAgIHByb3RlY3RlZE9wZXJhdGlvbi0+ZG9Db21wbGV0ZShyZXN1bHQpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtMTA5Miw3ICsxMTU4LDcgQEAg
dm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0
aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAgICAgICAgLy8gSW4gdGhhdCBjYXNlLCB3ZSBjYW5u
b3Qgc3VjY2Vzc2Z1bGx5IHN0b3JlIHRoaXMgcmVjb3JkLCBzbyB3ZSBjYWxsYmFjayB3aXRoIGFu
IGVycm9yLgogICAgICAgICBhdXRvIHJlc3VsdCA9IElEQlJlc3VsdERhdGE6OmVycm9yKHByb3Rl
Y3RlZE9wZXJhdGlvbi0+aWRlbnRpZmllcigpLCB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtu
b3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgcHJlcGFyaW5nIEJsb2IvRmlsZSBkYXRhIHRv
IGJlIHN0b3JlZCBpbiBvYmplY3Qgc3RvcmUiKSB9KTsKICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHByb3RlY3RlZE9wZXJh
dGlvbiA9IFdURk1vdmUocHJvdGVjdGVkT3BlcmF0aW9uKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1
bHQpXSgpIG11dGFibGUgewotICAgICAgICAgICAgcHJvdGVjdGVkT3BlcmF0aW9uLT5jb21wbGV0
ZWQocmVzdWx0KTsKKyAgICAgICAgICAgIHByb3RlY3RlZE9wZXJhdGlvbi0+ZG9Db21wbGV0ZShy
ZXN1bHQpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTExMDYsNyArMTE3Miw3IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb246OmRpZFB1dE9yQWRkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgSURCUmVzdWx0RGF0CiAgICAgICAgIHJlcXVlc3Quc2V0UmVzdWx0KCpyZXN1bHQp
OwogICAgIGVsc2UKICAgICAgICAgcmVxdWVzdC5zZXRSZXN1bHRUb1VuZGVmaW5lZCgpOwotICAg
IHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRhKTsKKyAgICBjb21wbGV0ZU5vbmN1
cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rp
b246OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQpAQCAt
MTE2Nyw3ICsxMjMzLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRlSW5kZXhPblNl
cnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0RGF0YSwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RGVsZXRlSW5k
ZXhTdWNjZXNzIHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsK
IH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uRGlkQ29tcGxldGUoSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQordm9pZCBJREJUcmFuc2FjdGlvbjo6
b3BlcmF0aW9uRGlkQ29tcGxldGVPbkNsaWVudChJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
aW9uJiBvcGVyYXRpb24pCiB7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAu
Z2V0KG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpID09ICZvcGVyYXRpb24pOwogICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CkBAIC0xMTc1
LDcgKzEyNDEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25EaWRDb21wbGV0ZShJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYQogCiAgICAgbV90cmFuc2FjdGlv
bk9wZXJhdGlvbk1hcC5yZW1vdmUob3BlcmF0aW9uLmlkZW50aWZpZXIoKSk7CiAKLSAgICBzY2hl
ZHVsZU9wZXJhdGlvblRpbWVyKCk7CisgICAgc2NoZWR1bGVQZW5kaW5nT3BlcmF0aW9uVGltZXIo
KTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZXN0YWJsaXNoT25TZXJ2ZXIoKQpAQCAtMTIw
Myw3ICsxMjY5LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVhY3RpdmF0ZSgpCiAgICAgaWYg
KG1fc3RhdGUgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpBY3RpdmUpCiAgICAgICAg
IG1fc3RhdGUgPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkluYWN0aXZlOwogCi0gICAg
c2NoZWR1bGVPcGVyYXRpb25UaW1lcigpOworICAgIHNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRp
bWVyKCk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbm5lY3Rpb25DbG9zZWRGcm9tU2Vy
dmVyKGNvbnN0IElEQkVycm9yJiBlcnJvcikKQEAgLTEyMTUsMTIgKzEyODEsMTQgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6Y29ubmVjdGlvbkNsb3NlZEZyb21TZXJ2ZXIoY29uc3QgSURCRXJyb3Im
IGVycm9yKQogICAgIFZlY3RvcjxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bj4+IG9wZXJhdGlvbnM7CiAgICAgY29weVZhbHVlc1RvVmVjdG9yKG1fdHJhbnNhY3Rpb25PcGVy
YXRpb25NYXAsIG9wZXJhdGlvbnMpOwogCi0gICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBvcGVy
YXRpb25zKQotICAgICAgICBvcGVyYXRpb24tPmNvbXBsZXRlZChJREJSZXN1bHREYXRhOjplcnJv
cihvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgZXJyb3IpKTsKKyAgICBmb3IgKGF1dG8mIG9wZXJh
dGlvbiA6IG9wZXJhdGlvbnMpIHsKKyAgICAgICAgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVz
dCA9IG51bGxwdHI7CisgICAgICAgIG9wZXJhdGlvbi0+ZG9Db21wbGV0ZShJREJSZXN1bHREYXRh
OjplcnJvcihvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgZXJyb3IpKTsKKyAgICB9CiAKICAgICBj
b25uZWN0aW9uUHJveHkoKS5mb3JnZXRBY3RpdmVPcGVyYXRpb25zKG9wZXJhdGlvbnMpOwogCi0g
ICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmNsZWFyKCk7CisgICAgbV9wZW5kaW5nVHJh
bnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5jbGVhcigpOwogICAgIG1fYWJvcnRRdWV1ZS5jbGVhcigp
OwogICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggNTZhMmFl
OC4uNTk0YmE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5oCkBAIC0xMzgsNyArMTM4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFj
dGl2YXRlKCk7CiAgICAgdm9pZCBkZWFjdGl2YXRlKCk7CiAKLSAgICB2b2lkIG9wZXJhdGlvbkRp
ZENvbXBsZXRlKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mKTsKKyAgICB2b2lkIGNv
bXBsZXRlZE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmLCBJREJDbGllbnQ6OlRyYW5zYWN0
aW9uT3BlcmF0aW9uJik7CisgICAgdm9pZCBvcGVyYXRpb25EaWRDb21wbGV0ZU9uQ2xpZW50KElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mKTsKKworICAgIHZvaWQgZmluaXNoZWREaXNw
YXRjaEV2ZW50Rm9yUmVxdWVzdChJREJSZXF1ZXN0Jik7CiAKICAgICBib29sIGlzRmluaXNoZWRP
ckZpbmlzaGluZygpIGNvbnN0OwogICAgIGJvb2wgaXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpGaW5pc2hlZDsgfQpAQCAt
MTU5LDcgKzE2Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hBYm9ydE9yQ29tbWl0KCk7
CiAKICAgICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0
aW9uT3BlcmF0aW9uPiYmKTsKLSAgICB2b2lkIG9wZXJhdGlvblRpbWVyRmlyZWQoKTsKKyAgICB2
b2lkIHBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKCk7CisgICAgdm9pZCBjb21wbGV0ZWRPcGVy
YXRpb25UaW1lckZpcmVkKCk7CiAKICAgICB2b2lkIGZpcmVPbkNvbXBsZXRlKCk7CiAgICAgdm9p
ZCBmaXJlT25BYm9ydCgpOwpAQCAtMjE3LDcgKzIyMSwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBlc3RhYmxpc2hPblNlcnZlcigpOwogCi0gICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlvblRpbWVy
KCk7CisgICAgdm9pZCBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QoSURCUmVxdWVzdCYsIGNvbnN0
IElEQlJlc3VsdERhdGEmKTsKKyAgICB2b2lkIGNvbXBsZXRlQ3Vyc29yUmVxdWVzdChJREJSZXF1
ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpOworCisgICAgdm9pZCBzY2hlZHVsZVBlbmRpbmdP
cGVyYXRpb25UaW1lcigpOworICAgIHZvaWQgc2NoZWR1bGVDb21wbGV0ZWRPcGVyYXRpb25UaW1l
cigpOwogCiAgICAgUmVmPElEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOwogICAgIElEQlRyYW5zYWN0
aW9uSW5mbyBtX2luZm87CkBAIC0yMjgsMTIgKzIzNiwxNCBAQCBwcml2YXRlOgogICAgIElEQkVy
cm9yIG1faWRiRXJyb3I7CiAgICAgUmVmUHRyPERPTUVycm9yPiBtX2RvbUVycm9yOwogCi0gICAg
VGltZXIgbV9vcGVyYXRpb25UaW1lcjsKKyAgICBUaW1lciBtX3BlbmRpbmdPcGVyYXRpb25UaW1l
cjsKKyAgICBUaW1lciBtX2NvbXBsZXRlZE9wZXJhdGlvblRpbWVyOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxUaW1lcj4gbV9hY3RpdmF0aW9uVGltZXI7CiAKICAgICBSZWZQdHI8SURCT3BlbkRCUmVx
dWVzdD4gbV9vcGVuREJSZXF1ZXN0OwogCi0gICAgRGVxdWU8UmVmUHRyPElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24+PiBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWU7CisgICAgRGVx
dWU8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBtX3BlbmRpbmdUcmFu
c2FjdGlvbk9wZXJhdGlvblF1ZXVlOworICAgIERlcXVlPHN0ZDo6cGFpcjxSZWZQdHI8SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4sIElEQlJlc3VsdERhdGE+PiBtX2NvbXBsZXRlZE9u
U2VydmVyUXVldWU7CiAgICAgRGVxdWU8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVy
YXRpb24+PiBtX2Fib3J0UXVldWU7CiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIs
IFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPj4gbV90cmFuc2FjdGlvbk9w
ZXJhdGlvbk1hcDsKIApAQCAtMjQyLDYgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPElEQk9iamVjdFN0b3JlPj4gbV9kZWxldGVkT2JqZWN0
U3RvcmVzOwogCiAgICAgSGFzaFNldDxSZWZQdHI8SURCUmVxdWVzdD4+IG1fb3BlblJlcXVlc3Rz
OworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0Owog
CiAgICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uUHJveHkuY3BwCmluZGV4IDgwNWYzMGUuLjRkYjUwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
UHJveHkuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmNv
bXBsZXRlT3BlcmF0aW9uKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAgICAgaWYg
KCFvcGVyYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG9wZXJhdGlvbi0+cGVyZm9ybUNv
bXBsZXRlT25PcmlnaW5UaHJlYWQocmVzdWx0RGF0YSwgV1RGTW92ZShvcGVyYXRpb24pKTsKKyAg
ICBvcGVyYXRpb24tPnRyYW5zaXRpb25Ub0NvbXBsZXRlKHJlc3VsdERhdGEsIFdURk1vdmUob3Bl
cmF0aW9uKSk7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjphYm9ydE9wZW5BbmRVcGdy
YWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2Fj
dGlvbk9wZXJhdGlvbi5jcHAKaW5kZXggMTZmNzQ3NS4uOGYzNTQ3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNh
Y3Rpb25PcGVyYXRpb24uY3BwCkBAIC00Myw2ICs0Myw4IEBAIFRyYW5zYWN0aW9uT3BlcmF0aW9u
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIElEQlJl
cXVlCiAgICAgICAgIG1faW5kZXhSZWNvcmRUeXBlID0gcmVxdWVzdC5yZXF1ZXN0ZWRJbmRleFJl
Y29yZFR5cGUoKTsKICAgICBpZiAoYXV0byogY3Vyc29yID0gcmVxdWVzdC5wZW5kaW5nQ3Vyc29y
KCkpCiAgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVz
b3VyY2VJZGVudGlmaWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOworCisgICAgbV9p
ZGJSZXF1ZXN0ID0gJnJlcXVlc3Q7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0
aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
VHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCBhMzZlYTRhLi45NjJhYzQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJh
bnNhY3Rpb25PcGVyYXRpb24uaApAQCAtNjEsMjUgKzYxLDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9wZXJmb3JtRnVuY3Rpb24gPSB7IH07CiAgICAgfQogCi0gICAgdm9pZCBwZXJmb3JtQ29tcGxl
dGVPbk9yaWdpblRocmVhZChjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBSZWZQdHI8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+JiYgbGFzdFJlZikKKyAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbXBsZXRl
T25UaGlzVGhyZWFkKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEpCisgICAgeworICAgICAgICBB
U1NFUlQobV9vcmlnaW5UaHJlYWRJRCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgICAgICBtX3Ry
YW5zYWN0aW9uLT5jb21wbGV0ZWRPblNlcnZlcihkYXRhLCAqdGhpcyk7CisgICAgfQorCisgICAg
dm9pZCB0cmFuc2l0aW9uVG9Db21wbGV0ZShjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBSZWZQ
dHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYgcG9zc2libHlMYXN0UmVmKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgICAgICBpZiAobV9vcmlnaW5UaHJlYWRJ
RCA9PSBjdXJyZW50VGhyZWFkKCkpCi0gICAgICAgICAgICBjb21wbGV0ZWQoZGF0YSk7CisgICAg
ICAgICAgICB0cmFuc2l0aW9uVG9Db21wbGV0ZU9uVGhpc1RocmVhZChkYXRhKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT5wZXJmb3JtQ2FsbGJhY2tPbk9yaWdp
blRocmVhZCgqdGhpcywgJlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpjb21wbGV0ZWQsIGRhdGEpOwot
ICAgICAgICAgICAgbV90cmFuc2FjdGlvbi0+Y2FsbEZ1bmN0aW9uT25PcmlnaW5UaHJlYWQoW2xh
c3RSZWYgPSBXVEZNb3ZlKGxhc3RSZWYpXSgpIHsKKyAgICAgICAgICAgIG1fdHJhbnNhY3Rpb24t
PnBlcmZvcm1DYWxsYmFja09uT3JpZ2luVGhyZWFkKCp0aGlzLCAmVHJhbnNhY3Rpb25PcGVyYXRp
b246OnRyYW5zaXRpb25Ub0NvbXBsZXRlT25UaGlzVGhyZWFkLCBkYXRhKTsKKyAgICAgICAgICAg
IG1fdHJhbnNhY3Rpb24tPmNhbGxGdW5jdGlvbk9uT3JpZ2luVGhyZWFkKFtwb3NzaWJseUxhc3RS
ZWYgPSBXVEZNb3ZlKHBvc3NpYmx5TGFzdFJlZildKCkgewogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGNvbXBsZXRlZChjb25zdCBJREJSZXN1bHREYXRhJiBk
YXRhKQorICAgIHZvaWQgZG9Db21wbGV0ZShjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhKQogICAg
IHsKICAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkSUQgPT0gY3VycmVudFRocmVhZCgpKTsK
ICAgICAgICAgQVNTRVJUKG1fY29tcGxldGVGdW5jdGlvbik7CiAgICAgICAgIG1fY29tcGxldGVG
dW5jdGlvbihkYXRhKTsKLSAgICAgICAgbV90cmFuc2FjdGlvbi0+b3BlcmF0aW9uRGlkQ29tcGxl
dGUoKnRoaXMpOworICAgICAgICBtX3RyYW5zYWN0aW9uLT5vcGVyYXRpb25EaWRDb21wbGV0ZU9u
Q2xpZW50KCp0aGlzKTsKIAogICAgICAgICAvLyBtX2NvbXBsZXRlRnVuY3Rpb24gbWlnaHQgYmUg
aG9sZGluZyB0aGUgbGFzdCByZWYgdG8gdGhpcyBUcmFuc2FjdGlvbk9wZXJhdGlvbiwKICAgICAg
ICAgLy8gc28gd2UgbmVlZCB0byBkbyB0aGlzIHRyaWNrIHRvIG51bGwgaXQgb3V0IHdpdGhvdXQg
Zmlyc3QgZGVzdHJveWluZyBpdC4KQEAgLTkxLDYgKzk3LDggQEAgcHVibGljOgogCiAgICAgVGhy
ZWFkSWRlbnRpZmllciBvcmlnaW5UaHJlYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luVGhy
ZWFkSUQ7IH0KIAorICAgIElEQlJlcXVlc3QqIGlkYlJlcXVlc3QoKSB7IHJldHVybiBtX2lkYlJl
cXVlc3QuZ2V0KCk7IH0KKwogcHJvdGVjdGVkOgogICAgIFRyYW5zYWN0aW9uT3BlcmF0aW9uKElE
QlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5z
YWN0aW9uKQpAQCAtMTE4LDYgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgSW5kZXhlZERCOjpJbmRl
eFJlY29yZFR5cGUgaW5kZXhSZWNvcmRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleFJlY29y
ZFR5cGU7IH0KIAogICAgIFRocmVhZElkZW50aWZpZXIgbV9vcmlnaW5UaHJlYWRJRCB7IGN1cnJl
bnRUaHJlYWQoKSB9OworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBtX2lkYlJlcXVlc3Q7CiB9Owog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295349</attachid>
            <date>2016-11-22 20:13:55 -0800</date>
            <delta_ts>2016-11-28 10:29:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165000-20161122201340.patch</filename>
            <type>text/plain</type>
            <size>26302</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRmYjcwNDMxNmNkNjdl
Mjg0ODY0MzE1M2JmNTBhZTk0YmQ0NGU3OS4uZjliMDk3MGQwYzYxZWQ5OGQwYjc5OTdiYjJmNmIx
MzU4ZDkwZDhiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE2LTExLTIyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREIgMi4wOiBR
dWV1ZSB1cCBjb21wbGV0ZWQgcmVxdWVzdHMgaW4gdGhlIGNsaWVudCwgaGFuZGxlIHRoZW0gb25l
IGJ5IG9uZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAoQ292ZXJlZCBleHRlbnNpdmVseSBieSBldmVyeSBleGlzdGluZyB0ZXN0
KS4KKworICAgICAgICBDdXJyZW50bHkgd2hlbiBhIFRyYW5zYWN0aW9uT3BlcmF0aW9uIGNvbXBs
ZXRlcyBvbiB0aGUgc2VydmVyLCBpdCBpbW1lZGlhdGVseSBjb21wbGV0ZXMKKyAgICAgICAgaXRz
ZWxmIG9uIHRoZSBjbGllbnQgc2lkZSwgaW5jbHVkaW5nIHNjaGVkdWxpbmcgYW4gZXZlbnQgZGlz
cGF0Y2ggaWYgbmVjZXNzYXJ5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2Vz
IGl0IHNvIHRoYXQgInNlcnZlciBjb21wbGV0ZWQgb3BlcmF0aW9ucyIgaW5zdGVhZCBxdWV1ZSB1
cCBpbiB0aGUgCisgICAgICAgIElEQlRyYW5zYWN0aW9uIGFuZCBhcmUgImNsaWVudC1zaWRlIGNv
bXBsZXRlZCIgYXN5bmNocm9ub3VzbHksIDEtYnktMS4KKyAgICAgICAgCisgICAgICAgIEN1cnJl
bnRseSB0aGlzIGlzIGEgIm5vIGJlaGF2aW9yIGNoYW5nZSIgYmVjYXVzZSBvbmx5IG9uZSBvcGVy
YXRpb24gaXMgZXZlciBzZW50IHRvCisgICAgICAgIHRoZSBzZXJ2ZXIgYXQgYSB0aW1lLgorICAg
ICAgICAKKyAgICAgICAgQnV0IHRoYXQgd2lsbCBjaGFuZ2Ugd2l0aCBodHRwczovL3dlYmtpdC5v
cmcvYi8xNjQ5MzIKKyAgICAgICAgQW5kIHRoaXMgcGF0Y2ggaXMgYSBwcmUtcmVxdWlzaXRlIGZv
ciB0aGF0LgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpjb21wbGV0ZVJlcXVlc3RBbmREaXNwYXRjaEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnJlcXVlc3RDb21wbGV0ZWQpOiBEZWxl
dGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAg
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uOjppbnRlcm5hbEFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cGVuZGluZ09wZXJhdGlvblRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBs
ZXRlZE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzY2hlZHVs
ZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpjb21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uOjpjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmNvbXBsZXRlQ3Vyc29yUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6ZmluaXNoZWREaXNwYXRjaEV2ZW50Rm9yUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OmRpZE9wZW5DdXJzb3JPblNlcnZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNvck9uU2VydmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRHZXRDb3VudE9uU2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVSZWNvcmRPblNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQ2xlYXJPYmplY3RTdG9y
ZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpwdXRPckFkZE9u
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRQdXRPckFkZE9u
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21w
bGV0ZWRPbkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGVhY3Rp
dmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y29ubmVjdGlvbkNsb3Nl
ZEZyb21TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxl
T3BlcmF0aW9uVGltZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246Om9wZXJhdGlvblRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246Om9wZXJhdGlvbkRpZENvbXBsZXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Ojpjb21wbGV0ZU9wZXJhdGlv
bik6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2Fj
dGlvbk9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0
aW9uT3BlcmF0aW9uOjpUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjp0cmFuc2l0aW9uVG9Db21wbGV0ZU9u
VGhpc1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uOjp0cmFuc2l0aW9uVG9Db21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpkb0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OmlkYlJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6cGVyZm9ybUNvbXBsZXRl
T25PcmlnaW5UaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbjo6Y29tcGxldGVkKTogRGVsZXRlZC4KKwogMjAxNi0xMS0xOCAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJH
TDJdIEltcGxlbWVudCB0ZXhTdG9yYWdlMkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCBmYmFkMzVmYzQ3ZjJjZmUwNjY5ZmQwYzI5
Njg0NDk4ODljNGEwZjVkLi43ZTczMjkyMDMxODgxMThjZmYxNWYyOWFmNzVhMDkxNmRkOTgwZTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNw
cApAQCAtMzA0LDYgKzMwNCw5IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChFdmVu
dCYgZXZlbnQpCiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmFib3J0RHVlVG9GYWlsZWRSZXF1ZXN0
KCptX2RvbUVycm9yKTsKICAgICB9CiAKKyAgICBpZiAobV90cmFuc2FjdGlvbikKKyAgICAgICAg
bV90cmFuc2FjdGlvbi0+ZmluaXNoZWREaXNwYXRjaEV2ZW50Rm9yUmVxdWVzdCgqdGhpcyk7CisK
ICAgICByZXR1cm4gZG9udFByZXZlbnREZWZhdWx0OwogfQogCkBAIC00NjUsMTAgKzQ2OCwxMCBA
QCB2b2lkIElEQlJlcXVlc3Q6OmRpZE9wZW5Pckl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkKICAgICBtX2N1cnNvclJlcXVlc3ROb3RpZmllciA9IG51bGxwdHI7
CiAgICAgbV9wZW5kaW5nQ3Vyc29yID0gbnVsbHB0cjsKIAotICAgIHJlcXVlc3RDb21wbGV0ZWQo
cmVzdWx0RGF0YSk7CisgICAgY29tcGxldGVSZXF1ZXN0QW5kRGlzcGF0Y2hFdmVudChyZXN1bHRE
YXRhKTsKIH0KIAotdm9pZCBJREJSZXF1ZXN0OjpyZXF1ZXN0Q29tcGxldGVkKGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCit2b2lkIElEQlJlcXVlc3Q6OmNvbXBsZXRlUmVxdWVzdEFu
ZERpc3BhdGNoRXZlbnQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggZTk0NTg3MmVhZWM0
YWNiMWNmNjZmYTIxM2JhNDMyNTg4ODA3NWMzNC4uOGY1M2RjOTY0YTE2YTQ0MTk4MDhlNzk2ODNl
OGVlYzljZTk4MGUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRl
ZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCi0gICAgdm9pZCByZXF1ZXN0
Q29tcGxldGVkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKKyAgICB2b2lkIGNvbXBsZXRlUmVxdWVz
dEFuZERpc3BhdGNoRXZlbnQoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogCiAgICAgdm9pZCBzZXRS
ZXN1bHQoY29uc3QgSURCS2V5RGF0YSYpOwogICAgIHZvaWQgc2V0UmVzdWx0KGNvbnN0IFZlY3Rv
cjxJREJLZXlEYXRhPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDM4ZGVjZDUzYjlhYjA4MTJlYjgwOWY1ZmJiM2I2
YmRhMWVjOGIwMWEuLmRmOTA3NjYwZGFjNDQyYzFjMjc5NTcxOTYyYzgxMDgyOGM5MzA1ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHAKQEAgLTc0LDggKzc0LDEwIEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihJ
REJEYXRhYmFzZSYgZGF0YWJhc2UsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYKICAgICA6IElE
QkFjdGl2ZURPTU9iamVjdChkYXRhYmFzZS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAg
LCBtX2RhdGFiYXNlKGRhdGFiYXNlKQogICAgICwgbV9pbmZvKGluZm8pCi0gICAgLCBtX29wZXJh
dGlvblRpbWVyKCp0aGlzLCAmSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvblRpbWVyRmlyZWQpCisg
ICAgLCBtX3BlbmRpbmdPcGVyYXRpb25UaW1lcigqdGhpcywgJklEQlRyYW5zYWN0aW9uOjpwZW5k
aW5nT3BlcmF0aW9uVGltZXJGaXJlZCkKKyAgICAsIG1fY29tcGxldGVkT3BlcmF0aW9uVGltZXIo
KnRoaXMsICZJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVkT3BlcmF0aW9uVGltZXJGaXJlZCkKICAg
ICAsIG1fb3BlbkRCUmVxdWVzdChyZXF1ZXN0KQorICAgICwgbV9jdXJyZW50bHlDb21wbGV0aW5n
UmVxdWVzdChyZXF1ZXN0KQogCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpJREJUcmFuc2FjdGlvbiAtICVzIiwgbV9pbmZvLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKQEAgLTI0NCw3ICsyNDYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjppbnRlcm5hbEFi
b3J0KCkKIAogICAgIHRyYW5zaXRpb25lZFRvRmluaXNoaW5nKEluZGV4ZWREQjo6VHJhbnNhY3Rp
b25TdGF0ZTo6QWJvcnRpbmcpOwogICAgIAotICAgIG1fYWJvcnRRdWV1ZS5zd2FwKG1fdHJhbnNh
Y3Rpb25PcGVyYXRpb25RdWV1ZSk7CisgICAgbV9hYm9ydFF1ZXVlLnN3YXAobV9wZW5kaW5nVHJh
bnNhY3Rpb25PcGVyYXRpb25RdWV1ZSk7CiAKICAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGll
bnQ6OmNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCBudWxscHRyLCAmSURCVHJhbnNh
Y3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cykpOwogfQpAQCAtMjUzLDE5ICsy
NTUsMjMgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNlcnZlckFuZENhbmNlbFJlcXVl
c3RzKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXQKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyIpOwogICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7Ci0g
ICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5pc0VtcHR5KCkpOworICAgIEFT
U0VSVChtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmlzRW1wdHkoKSk7CiAKICAg
ICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5hYm9ydFRyYW5zYWN0aW9uKCp0aGlzKTsK
IAogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRhaW5zKG9wZXJhdGlv
bi5pZGVudGlmaWVyKCkpKTsKICAgICBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLnJlbW92ZShv
cGVyYXRpb24uaWRlbnRpZmllcigpKTsKIAorICAgIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVl
c3QgPSBudWxscHRyOworICAgIAogICAgIElEQkVycm9yIGVycm9yKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpBYm9ydEVycm9yKTsKLSAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG1fYWJvcnRRdWV1
ZSkKLSAgICAgICAgb3BlcmF0aW9uLT5jb21wbGV0ZWQoSURCUmVzdWx0RGF0YTo6ZXJyb3Iob3Bl
cmF0aW9uLT5pZGVudGlmaWVyKCksIGVycm9yKSk7CisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24g
OiBtX2Fib3J0UXVldWUpIHsKKyAgICAgICAgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9
IG51bGxwdHI7CisgICAgICAgIG9wZXJhdGlvbi0+ZG9Db21wbGV0ZShJREJSZXN1bHREYXRhOjpl
cnJvcihvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgZXJyb3IpKTsKKyAgICB9CiAKICAgICAvLyBT
aW5jZSB3ZSdyZSBhYm9ydGluZywgaXQgc2hvdWxkIGJlIGltcG9zc2libGUgdG8gaGF2ZSBxdWV1
ZWQgYW55IGZ1cnRoZXIgb3BlcmF0aW9ucy4KLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbk9wZXJh
dGlvblF1ZXVlLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fcGVuZGluZ1RyYW5zYWN0aW9uT3Bl
cmF0aW9uUXVldWUuaXNFbXB0eSgpKTsKIH0KIAogY29uc3QgY2hhciogSURCVHJhbnNhY3Rpb246
OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApAQCAtMzM5LDMwICszNDUsMzAgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb24+JiYKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAu
Y29udGFpbnMob3BlcmF0aW9uLT5pZGVudGlmaWVyKCkpKTsKICAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwogCi0gICAgbV90cmFuc2Fj
dGlvbk9wZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVyYXRpb24pOworICAgIG1fcGVuZGluZ1RyYW5z
YWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9wZXJhdGlvbik7CiAgICAgbV90cmFuc2FjdGlv
bk9wZXJhdGlvbk1hcC5zZXQob3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIFdURk1vdmUob3BlcmF0
aW9uKSk7CiAKLSAgICBzY2hlZHVsZU9wZXJhdGlvblRpbWVyKCk7CisgICAgc2NoZWR1bGVQZW5k
aW5nT3BlcmF0aW9uVGltZXIoKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVP
cGVyYXRpb25UaW1lcigpCit2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZVBlbmRpbmdPcGVy
YXRpb25UaW1lcigpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKIAotICAgIGlmICghbV9vcGVyYXRpb25UaW1lci5pc0FjdGl2
ZSgpKQotICAgICAgICBtX29wZXJhdGlvblRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBpZiAo
IW1fcGVuZGluZ09wZXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ09w
ZXJhdGlvblRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6
b3BlcmF0aW9uVGltZXJGaXJlZCgpCit2b2lkIElEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0
aW9uVGltZXJGaXJlZCgpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpv
cGVyYXRpb25UaW1lckZpcmVkICglcCkiLCB0aGlzKTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OnBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkICglcCkiLCB0aGlzKTsKICAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkp
OwogCiAgICAgaWYgKCFtX3N0YXJ0ZWRPblNlcnZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1
dG8gb3BlcmF0aW9uID0gbV90cmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLnRha2VGaXJzdCgpOwor
ICAgIGlmICghbV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgYXV0byBvcGVyYXRpb24gPSBtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1
ZXVlLnRha2VGaXJzdCgpOwogICAgICAgICBvcGVyYXRpb24tPnBlcmZvcm0oKTsKIAogICAgICAg
ICByZXR1cm47CkBAIC0zNzUsNiArMzgxLDY3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJh
dGlvblRpbWVyRmlyZWQoKQogICAgICAgICBjb21taXQoKTsKIH0KIAordm9pZCBJREJUcmFuc2Fj
dGlvbjo6b3BlcmF0aW9uQ29tcGxldGVkT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0
YSwgSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQoreworICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcGVyYXRpb24ub3JpZ2luVGhyZWFkSUQoKSk7
CisKKyAgICBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUuYXBwZW5kKHsgJm9wZXJhdGlvbiwgZGF0
YSB9KTsKKyAgICBzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVyKCk7Cit9CisKK3ZvaWQg
SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIoKQoreworICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7
CisKKyAgICBpZiAoIW1fY29tcGxldGVkT3BlcmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAg
ICAgbV9jb21wbGV0ZWRPcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQg
SURCVHJhbnNhY3Rpb246OmNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQoKQoreworICAgIExP
RyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVkT3BlcmF0aW9uVGltZXJGaXJl
ZCAoJXApIiwgdGhpcyk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKworICAgIGlmIChtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUu
aXNFbXB0eSgpIHx8IG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUudGFrZUZp
cnN0KCk7CisgICAgaXRlcmF0b3IuZmlyc3QtPmRvQ29tcGxldGUoaXRlcmF0b3Iuc2Vjb25kKTsK
KworICAgIGlmICghbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLmlzRW1wdHkoKSAmJiAhbV9jdXJy
ZW50bHlDb21wbGV0aW5nUmVxdWVzdCkKKyAgICAgICAgc2NoZWR1bGVDb21wbGV0ZWRPcGVyYXRp
b25UaW1lcigpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjpjb21wbGV0ZU5vbmN1cnNvclJl
cXVlc3QoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0KQor
eworICAgIEFTU0VSVCghbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCk7CisKKyAgICByZXF1
ZXN0LmNvbXBsZXRlUmVxdWVzdEFuZERpc3BhdGNoRXZlbnQocmVzdWx0KTsKKworICAgIG1fY3Vy
cmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPSAmcmVxdWVzdDsKK30KKwordm9pZCBJREJUcmFuc2Fj
dGlvbjo6Y29tcGxldGVDdXJzb3JSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoIW1fY3VycmVudGx5Q29tcGxldGlu
Z1JlcXVlc3QpOworCisgICAgcmVxdWVzdC5kaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKHJlc3VsdCk7
CisKKyAgICBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID0gJnJlcXVlc3Q7Cit9CisKK3Zv
aWQgSURCVHJhbnNhY3Rpb246OmZpbmlzaGVkRGlzcGF0Y2hFdmVudEZvclJlcXVlc3QoSURCUmVx
dWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoaXNGaW5pc2hlZE9yRmluaXNoaW5nKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIEFTU0VSVF9VTlVTRUQocmVxdWVzdCwgIW1fY3VycmVudGx5Q29t
cGxldGluZ1JlcXVlc3QgfHwgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9PSAmcmVxdWVz
dCk7CisKKyAgICBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICBz
Y2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVyKCk7Cit9CisKIHZvaWQgSURCVHJhbnNhY3Rp
b246OmNvbW1pdCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjb21t
aXQiKTsKQEAgLTQyMiw3ICs0ODksNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRTdGFydChj
b25zdCBJREJFcnJvciYgZXJyb3IpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzY2hl
ZHVsZU9wZXJhdGlvblRpbWVyKCk7CisgICAgc2NoZWR1bGVQZW5kaW5nT3BlcmF0aW9uVGltZXIo
KTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6bm90aWZ5RGlkQWJvcnQoY29uc3QgSURCRXJy
b3ImIGVycm9yKQpAQCAtNzI0LDcgKzc5MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZE9w
ZW5DdXJzb3JPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHRECiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRPcGVuQ3Vyc29yT25TZXJ2ZXIi
KTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZElEKCkpOwogCi0gICAgcmVxdWVzdC5kaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKHJlc3VsdERhdGEp
OworICAgIGNvbXBsZXRlQ3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKIH0KIAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImIGN1cnNvciwgY29u
c3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEpCkBAIC03NTMsNyArODIwLDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNvck9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IElEQlJlc3UKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRp
ZEl0ZXJhdGVDdXJzb3JPblNlcnZlciIpOwogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CiAKLSAgICByZXF1ZXN0LmRpZE9wZW5Pckl0
ZXJhdGVDdXJzb3IocmVzdWx0RGF0YSk7CisgICAgY29tcGxldGVDdXJzb3JSZXF1ZXN0KHJlcXVl
c3QsIHJlc3VsdERhdGEpOwogfQogCiBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJl
cXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBJREJP
YmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VE
YXRhLCBJbmRleGVkREI6OkdldEFsbFR5cGUgZ2V0QWxsVHlwZSwgT3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KQpAQCAtODA2LDcgKzg3Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdldEFs
bFJlY29yZHNPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1CiAgICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsK
IAogICAgIGlmIChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcikgewot
ICAgICAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CisgICAgICAgIGNv
bXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtODIyLDcgKzg4OSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRp
ZEdldEFsbFJlY29yZHNPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChy
ZXN1bHREYXRhKTsKKyAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0
RGF0YSk7CiB9CiAKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJl
Y29yZChFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0
IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEpCkBAIC04OTAsNyArOTU3LDcgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgSURCUmVzdWx0RGEKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwogCiAgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09
IElEQlJlc3VsdFR5cGU6OkVycm9yKSB7Ci0gICAgICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRl
ZChyZXN1bHREYXRhKTsKKyAgICAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJlcXVlc3Qs
IHJlc3VsdERhdGEpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MTAsNyArOTc3LDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIoSURCUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGEKICAgICAgICAgICAgIHJlcXVlc3Quc2V0UmVzdWx0
VG9VbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVz
dWx0RGF0YSk7CisgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERh
dGEpOwogfQogCiBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChF
eGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYgcmFuZ2UpCkBAIC05NjEsNyArMTAyOCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rp
b246OmRpZEdldENvdW50T25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVz
dWx0RGF0CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWRJRCgpKTsKIAogICAgIHJlcXVlc3Quc2V0UmVzdWx0KHJlc3VsdERhdGEucmVzdWx0SW50
ZWdlcigpKTsKLSAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CisgICAg
Y29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQogCiBSZWY8
SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRl
JiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmIHJhbmdlKQpAQCAtOTk0LDcgKzEwNjEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRE
ZWxldGVSZWNvcmRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bAog
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQo
KSk7CiAKICAgICByZXF1ZXN0LnNldFJlc3VsdFRvVW5kZWZpbmVkKCk7Ci0gICAgcmVxdWVzdC5y
ZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOworICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVz
dChyZXF1ZXN0LCByZXN1bHREYXRhKTsKIH0KIAogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZShFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RT
dG9yZSYgb2JqZWN0U3RvcmUpCkBAIC0xMDI4LDcgKzEwOTUsNyBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgSURCUgogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CiAKICAgICByZXF1ZXN0LnNldFJlc3VsdFRvVW5kZWZpbmVkKCk7Ci0gICAg
cmVxdWVzdC5yZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOworICAgIGNvbXBsZXRlTm9uY3Vy
c29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKIH0KIAogUmVmPElEQlJlcXVlc3Q+IElE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0
U3RvcmUmIG9iamVjdFN0b3JlLCBJREJLZXkqIGtleSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2
YWx1ZSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkK
QEAgLTEwNzQsNyArMTE0MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2
ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uCiAgICAgICAgICAg
ICBSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4gcHJvdGVjdGVkT3BlcmF0
aW9uKCZvcGVyYXRpb24pOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBJREJSZXN1bHREYXRh
OjplcnJvcihvcGVyYXRpb24uaWRlbnRpZmllcigpLCB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpV
bmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgcHJlcGFyaW5nIEJsb2IvRmlsZSBkYXRh
IHRvIGJlIHN0b3JlZCBpbiBvYmplY3Qgc3RvcmUiKSB9KTsKICAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3Byb3RlY3RlZE9wZXJhdGlvbiA9IFdURk1vdmUo
cHJvdGVjdGVkT3BlcmF0aW9uKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewotICAgICAgICAgICAgICAgIHByb3RlY3RlZE9wZXJhdGlvbi0+Y29t
cGxldGVkKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcHJvdGVjdGVkT3BlcmF0aW9uLT5kb0Nv
bXBsZXRlKHJlc3VsdCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm47CkBAIC0xMDkyLDcgKzExNTksNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpwdXRPckFkZE9u
U2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbgogICAgICAg
ICAvLyBJbiB0aGF0IGNhc2UsIHdlIGNhbm5vdCBzdWNjZXNzZnVsbHkgc3RvcmUgdGhpcyByZWNv
cmQsIHNvIHdlIGNhbGxiYWNrIHdpdGggYW4gZXJyb3IuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0g
SURCUmVzdWx0RGF0YTo6ZXJyb3IocHJvdGVjdGVkT3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIHsg
SURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBw
cmVwYXJpbmcgQmxvYi9GaWxlIGRhdGEgdG8gYmUgc3RvcmVkIGluIG9iamVjdCBzdG9yZSIpIH0p
OwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgcHJvdGVjdGVkT3BlcmF0aW9uID0gV1RGTW92ZShwcm90ZWN0ZWRPcGVyYXRp
b24pLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBw
cm90ZWN0ZWRPcGVyYXRpb24tPmNvbXBsZXRlZChyZXN1bHQpOworICAgICAgICAgICAgcHJvdGVj
dGVkT3BlcmF0aW9uLT5kb0NvbXBsZXRlKHJlc3VsdCk7CiAgICAgICAgIH0pOwogICAgIH0pOwog
fQpAQCAtMTEwNiw3ICsxMTczLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUHV0T3JBZGRP
blNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXQKICAgICAgICAg
cmVxdWVzdC5zZXRSZXN1bHQoKnJlc3VsdCk7CiAgICAgZWxzZQogICAgICAgICByZXF1ZXN0LnNl
dFJlc3VsdFRvVW5kZWZpbmVkKCk7Ci0gICAgcmVxdWVzdC5yZXF1ZXN0Q29tcGxldGVkKHJlc3Vs
dERhdGEpOworICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRh
KTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBvYmplY3RTdG9yZU5hbWUpCkBAIC0xMTY3LDE1ICsxMjM0LDE3IEBAIHZvaWQgSURCVHJh
bnNhY3Rpb246OmRpZERlbGV0ZUluZGV4T25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEsIHJlc3VsdERhdGEudHlwZSgp
ID09IElEQlJlc3VsdFR5cGU6OkRlbGV0ZUluZGV4U3VjY2VzcyB8fCByZXN1bHREYXRhLnR5cGUo
KSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246Om9w
ZXJhdGlvbkRpZENvbXBsZXRlKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJh
dGlvbikKK3ZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50KElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKIHsKKyAgICBMT0coSW5k
ZXhlZERCLCAiSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50Iik7CisK
ICAgICBBU1NFUlQobV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5nZXQob3BlcmF0aW9uLmlkZW50
aWZpZXIoKSkgPT0gJm9wZXJhdGlvbik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG9wZXJhdGlvbi5vcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIG1fdHJhbnNhY3Rpb25PcGVy
YXRpb25NYXAucmVtb3ZlKG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpOwogCi0gICAgc2NoZWR1bGVP
cGVyYXRpb25UaW1lcigpOworICAgIHNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRpbWVyKCk7CiB9
CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmVzdGFibGlzaE9uU2VydmVyKCkKQEAgLTEyMDMsNyAr
MTI3Miw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlYWN0aXZhdGUoKQogICAgIGlmIChtX3N0
YXRlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6QWN0aXZlKQogICAgICAgICBtX3N0
YXRlID0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpJbmFjdGl2ZTsKIAotICAgIHNjaGVk
dWxlT3BlcmF0aW9uVGltZXIoKTsKKyAgICBzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1lcigp
OwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkRnJvbVNlcnZlcihj
b25zdCBJREJFcnJvciYgZXJyb3IpCkBAIC0xMjE1LDEyICsxMjg0LDE0IEBAIHZvaWQgSURCVHJh
bnNhY3Rpb246OmNvbm5lY3Rpb25DbG9zZWRGcm9tU2VydmVyKGNvbnN0IElEQkVycm9yJiBlcnJv
cikKICAgICBWZWN0b3I8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBv
cGVyYXRpb25zOwogICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3RyYW5zYWN0aW9uT3BlcmF0aW9u
TWFwLCBvcGVyYXRpb25zKTsKIAotICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3BlcmF0aW9u
cykKLSAgICAgICAgb3BlcmF0aW9uLT5jb21wbGV0ZWQoSURCUmVzdWx0RGF0YTo6ZXJyb3Iob3Bl
cmF0aW9uLT5pZGVudGlmaWVyKCksIGVycm9yKSk7CisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24g
OiBvcGVyYXRpb25zKSB7CisgICAgICAgIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPSBu
dWxscHRyOworICAgICAgICBvcGVyYXRpb24tPmRvQ29tcGxldGUoSURCUmVzdWx0RGF0YTo6ZXJy
b3Iob3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIGVycm9yKSk7CisgICAgfQogCiAgICAgY29ubmVj
dGlvblByb3h5KCkuZm9yZ2V0QWN0aXZlT3BlcmF0aW9ucyhvcGVyYXRpb25zKTsKIAotICAgIG1f
dHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5jbGVhcigpOworICAgIG1fcGVuZGluZ1RyYW5zYWN0
aW9uT3BlcmF0aW9uUXVldWUuY2xlYXIoKTsKICAgICBtX2Fib3J0UXVldWUuY2xlYXIoKTsKICAg
ICBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDU2YTJhZTgwODE2
NTVjMTg0Njg5MTUzMWRiZTg2Mzg4N2E3NWE2ODYuLmRhMGE4NTMyZjcxYmVkMTNiMDU2Y2YyMzI3
MzU3ODU1MWY2NzZiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtMTM4LDcgKzEzOCwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhY3RpdmF0ZSgpOwogICAgIHZvaWQgZGVhY3RpdmF0ZSgpOwogCi0gICAgdm9pZCBvcGVyYXRp
b25EaWRDb21wbGV0ZShJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJik7CisgICAgdm9p
ZCBvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiwgSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYpOworICAgIHZvaWQgb3BlcmF0aW9uQ29tcGxldGVk
T25DbGllbnQoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYpOworCisgICAgdm9pZCBm
aW5pc2hlZERpc3BhdGNoRXZlbnRGb3JSZXF1ZXN0KElEQlJlcXVlc3QmKTsKIAogICAgIGJvb2wg
aXNGaW5pc2hlZE9yRmluaXNoaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkZpbmlz
aGVkOyB9CkBAIC0xNTksNyArMTYyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaEFib3J0
T3JDb21taXQoKTsKIAogICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVu
dDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYpOwotICAgIHZvaWQgb3BlcmF0aW9uVGltZXJGaXJl
ZCgpOworICAgIHZvaWQgcGVuZGluZ09wZXJhdGlvblRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIGNv
bXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQoKTsKIAogICAgIHZvaWQgZmlyZU9uQ29tcGxldGUo
KTsKICAgICB2b2lkIGZpcmVPbkFib3J0KCk7CkBAIC0yMTcsNyArMjIxLDExIEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGVzdGFibGlzaE9uU2VydmVyKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlT3Bl
cmF0aW9uVGltZXIoKTsKKyAgICB2b2lkIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChJREJSZXF1
ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpOworICAgIHZvaWQgY29tcGxldGVDdXJzb3JSZXF1
ZXN0KElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJik7CisKKyAgICB2b2lkIHNjaGVk
dWxlUGVuZGluZ09wZXJhdGlvblRpbWVyKCk7CisgICAgdm9pZCBzY2hlZHVsZUNvbXBsZXRlZE9w
ZXJhdGlvblRpbWVyKCk7CiAKICAgICBSZWY8SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAg
SURCVHJhbnNhY3Rpb25JbmZvIG1faW5mbzsKQEAgLTIyOCwxMiArMjM2LDE0IEBAIHByaXZhdGU6
CiAgICAgSURCRXJyb3IgbV9pZGJFcnJvcjsKICAgICBSZWZQdHI8RE9NRXJyb3I+IG1fZG9tRXJy
b3I7CiAKLSAgICBUaW1lciBtX29wZXJhdGlvblRpbWVyOworICAgIFRpbWVyIG1fcGVuZGluZ09w
ZXJhdGlvblRpbWVyOworICAgIFRpbWVyIG1fY29tcGxldGVkT3BlcmF0aW9uVGltZXI7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2FjdGl2YXRpb25UaW1lcjsKIAogICAgIFJlZlB0cjxJ
REJPcGVuREJSZXF1ZXN0PiBtX29wZW5EQlJlcXVlc3Q7CiAKLSAgICBEZXF1ZTxSZWZQdHI8SURC
Q2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1
ZTsKKyAgICBEZXF1ZTxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1f
cGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWU7CisgICAgRGVxdWU8c3RkOjpwYWlyPFJl
ZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiwgSURCUmVzdWx0RGF0YT4+IG1f
Y29tcGxldGVkT25TZXJ2ZXJRdWV1ZTsKICAgICBEZXF1ZTxSZWZQdHI8SURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbj4+IG1fYWJvcnRRdWV1ZTsKICAgICBIYXNoTWFwPElEQlJlc291cmNl
SWRlbnRpZmllciwgUmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBtX3Ry
YW5zYWN0aW9uT3BlcmF0aW9uTWFwOwogCkBAIC0yNDIsNiArMjUyLDcgQEAgcHJpdmF0ZToKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8SURCT2JqZWN0U3RvcmU+PiBtX2Rl
bGV0ZWRPYmplY3RTdG9yZXM7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxJREJSZXF1ZXN0Pj4gbV9v
cGVuUmVxdWVzdHM7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IG1fY3VycmVudGx5Q29tcGxldGlu
Z1JlcXVlc3Q7CiAKICAgICBib29sIG1fY29udGV4dFN0b3BwZWQgeyBmYWxzZSB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25u
ZWN0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAKaW5kZXggODA1ZjMwZThkOWI5NjViNGZjNmRmYTNjMzY4
ZDdhNTNlN2FhNWQ1ZS4uNGRiNTBjMGI5MWFjMGQyY2NmZGI0ZmVkYWU2MmY1NWM3ZDQzYjlhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNv
bm5lY3Rpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIElE
QkNvbm5lY3Rpb25Qcm94eTo6Y29tcGxldGVPcGVyYXRpb24oY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKICAgICBpZiAoIW9wZXJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
b3BlcmF0aW9uLT5wZXJmb3JtQ29tcGxldGVPbk9yaWdpblRocmVhZChyZXN1bHREYXRhLCBXVEZN
b3ZlKG9wZXJhdGlvbikpOworICAgIG9wZXJhdGlvbi0+dHJhbnNpdGlvblRvQ29tcGxldGUocmVz
dWx0RGF0YSwgV1RGTW92ZShvcGVyYXRpb24pKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJv
eHk6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcAppbmRleCAxNmY3NDc1YjAzN2U2
Yjg2ZmE0OGM2ODMzOTJlZWMwODgzMjY5MGIzLi44ZjM1NDc1MjJiNmRlZmM4MjgxODY1ZTE1NDMz
ZjVjZGZkMTc0OTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKQEAgLTQzLDYg
KzQzLDggQEAgVHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKElEQlRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCUmVxdWUKICAgICAgICAgbV9pbmRleFJlY29yZFR5
cGUgPSByZXF1ZXN0LnJlcXVlc3RlZEluZGV4UmVjb3JkVHlwZSgpOwogICAgIGlmIChhdXRvKiBj
dXJzb3IgPSByZXF1ZXN0LnBlbmRpbmdDdXJzb3IoKSkKICAgICAgICAgbV9jdXJzb3JJZGVudGlm
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5m
bygpLmlkZW50aWZpZXIoKSk7CisKKyAgICBtX2lkYlJlcXVlc3QgPSAmcmVxdWVzdDsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmluZGV4
IGEzNmVhNGE4MDYwYTFhMDc4ZTU2ZjU1MjRhMGQyYjk5YzljODZiYzkuLjcxYTFlYmFiYjMyMDJi
MzlhY2FkZTc4N2MwNTAwYjlmNzBiMzJiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5o
CkBAIC02MSwyNSArNjEsMzEgQEAgcHVibGljOgogICAgICAgICBtX3BlcmZvcm1GdW5jdGlvbiA9
IHsgfTsKICAgICB9CiAKLSAgICB2b2lkIHBlcmZvcm1Db21wbGV0ZU9uT3JpZ2luVGhyZWFkKGNv
bnN0IElEQlJlc3VsdERhdGEmIGRhdGEsIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBs
YXN0UmVmKQorICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tcGxldGVPblRoaXNUaHJlYWQoY29uc3Qg
SURCUmVzdWx0RGF0YSYgZGF0YSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29yaWdpblRocmVh
ZElEID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgICAgIG1fdHJhbnNhY3Rpb24tPm9wZXJhdGlv
bkNvbXBsZXRlZE9uU2VydmVyKGRhdGEsICp0aGlzKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5z
aXRpb25Ub0NvbXBsZXRlKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEsIFJlZlB0cjxUcmFuc2Fj
dGlvbk9wZXJhdGlvbj4mJiBsYXN0UmVmKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgICAgICBpZiAobV9vcmlnaW5UaHJlYWRJRCA9PSBjdXJyZW50VGhyZWFk
KCkpCi0gICAgICAgICAgICBjb21wbGV0ZWQoZGF0YSk7CisgICAgICAgICAgICB0cmFuc2l0aW9u
VG9Db21wbGV0ZU9uVGhpc1RocmVhZChkYXRhKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBtX3RyYW5zYWN0aW9uLT5wZXJmb3JtQ2FsbGJhY2tPbk9yaWdpblRocmVhZCgqdGhpcywgJlRy
YW5zYWN0aW9uT3BlcmF0aW9uOjpjb21wbGV0ZWQsIGRhdGEpOworICAgICAgICAgICAgbV90cmFu
c2FjdGlvbi0+cGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoKnRoaXMsICZUcmFuc2FjdGlv
bk9wZXJhdGlvbjo6dHJhbnNpdGlvblRvQ29tcGxldGVPblRoaXNUaHJlYWQsIGRhdGEpOwogICAg
ICAgICAgICAgbV90cmFuc2FjdGlvbi0+Y2FsbEZ1bmN0aW9uT25PcmlnaW5UaHJlYWQoW2xhc3RS
ZWYgPSBXVEZNb3ZlKGxhc3RSZWYpXSgpIHsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgdm9pZCBjb21wbGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKKyAg
ICB2b2lkIGRvQ29tcGxldGUoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX29yaWdpblRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSk7CiAgICAgICAg
IEFTU0VSVChtX2NvbXBsZXRlRnVuY3Rpb24pOwogICAgICAgICBtX2NvbXBsZXRlRnVuY3Rpb24o
ZGF0YSk7Ci0gICAgICAgIG1fdHJhbnNhY3Rpb24tPm9wZXJhdGlvbkRpZENvbXBsZXRlKCp0aGlz
KTsKKyAgICAgICAgbV90cmFuc2FjdGlvbi0+b3BlcmF0aW9uQ29tcGxldGVkT25DbGllbnQoKnRo
aXMpOwogCiAgICAgICAgIC8vIG1fY29tcGxldGVGdW5jdGlvbiBtaWdodCBiZSBob2xkaW5nIHRo
ZSBsYXN0IHJlZiB0byB0aGlzIFRyYW5zYWN0aW9uT3BlcmF0aW9uLAogICAgICAgICAvLyBzbyB3
ZSBuZWVkIHRvIGRvIHRoaXMgdHJpY2sgdG8gbnVsbCBpdCBvdXQgd2l0aG91dCBmaXJzdCBkZXN0
cm95aW5nIGl0LgpAQCAtOTEsNiArOTcsOCBAQCBwdWJsaWM6CiAKICAgICBUaHJlYWRJZGVudGlm
aWVyIG9yaWdpblRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UaHJlYWRJRDsgfQog
CisgICAgSURCUmVxdWVzdCogaWRiUmVxdWVzdCgpIHsgcmV0dXJuIG1faWRiUmVxdWVzdC5nZXQo
KTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgVHJhbnNhY3Rpb25PcGVyYXRpb24oSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCkBA
IC0xMTgsNiArMTI2LDcgQEAgcHJpdmF0ZToKICAgICBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlw
ZSBpbmRleFJlY29yZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2luZGV4UmVjb3JkVHlwZTsgfQog
CiAgICAgVGhyZWFkSWRlbnRpZmllciBtX29yaWdpblRocmVhZElEIHsgY3VycmVudFRocmVhZCgp
IH07CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IG1faWRiUmVxdWVzdDsKIH07CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295497</attachid>
            <date>2016-11-28 10:29:03 -0800</date>
            <delta_ts>2016-11-28 23:06:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165000-20161128102839.patch</filename>
            <type>text/plain</type>
            <size>31117</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4OTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1YzNiYTRiMzAxMzFk
NmJlZTU0MzI2MzVkMzY1MGY2MTBiMjdjNC4uMmRkMzgxMjQyOWJkOGQxYzU0NTNlOTZjNGFkMGQ1
NjI1MGY2NWM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE2LTExLTI4ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREIgMi4wOiBR
dWV1ZSB1cCBjb21wbGV0ZWQgcmVxdWVzdHMgaW4gdGhlIGNsaWVudCwgaGFuZGxlIHRoZW0gb25l
IGJ5IG9uZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChDb3ZlcmVkIGV4dGVuc2l2ZWx5IGJ5IGV2ZXJ5IGV4aXN0aW5nIHRl
c3QpLgorCisgICAgICAgIEN1cnJlbnRseSB3aGVuIGEgVHJhbnNhY3Rpb25PcGVyYXRpb24gY29t
cGxldGVzIG9uIHRoZSBzZXJ2ZXIsIGl0IGltbWVkaWF0ZWx5IGNvbXBsZXRlcworICAgICAgICBp
dHNlbGYgb24gdGhlIGNsaWVudCBzaWRlLCBpbmNsdWRpbmcgc2NoZWR1bGluZyBhbiBldmVudCBk
aXNwYXRjaCBpZiBuZWNlc3NhcnkuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGNoYW5n
ZXMgaXQgc28gdGhhdCAic2VydmVyIGNvbXBsZXRlZCBvcGVyYXRpb25zIiBpbnN0ZWFkIHF1ZXVl
IHVwIGluIHRoZSAKKyAgICAgICAgSURCVHJhbnNhY3Rpb24gYW5kIGFyZSAiY2xpZW50LXNpZGUg
Y29tcGxldGVkIiBhc3luY2hyb25vdXNseSwgMS1ieS0xLgorICAgICAgICAKKyAgICAgICAgQ3Vy
cmVudGx5IHRoaXMgaXMgYSAibm8gYmVoYXZpb3IgY2hhbmdlIiBiZWNhdXNlIG9ubHkgb25lIG9w
ZXJhdGlvbiBpcyBldmVyIHNlbnQgdG8KKyAgICAgICAgdGhlIHNlcnZlciBhdCBhIHRpbWUuCisg
ICAgICAgIAorICAgICAgICBCdXQgdGhhdCB3aWxsIGNoYW5nZSB3aXRoIGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE2NDkzMgorICAgICAgICBBbmQgdGhpcyBwYXRjaCBpcyBhIHByZS1yZXF1aXNpdGUg
Zm9yIHRoYXQuCisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpkaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmNvbXBsZXRlUmVxdWVzdEFuZERpc3BhdGNoRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRlZCk6IERl
bGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAg
ICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmludGVybmFsQWJvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRpbWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0aW9uVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29t
cGxldGVkT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVk
dWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OmNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OmNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVDdXJzb3JSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uOjpmaW5pc2hlZERpc3BhdGNoRXZlbnRGb3JSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRTdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkT3BlbkN1cnNvck9uU2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRJdGVyYXRlQ3Vyc29yT25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEdldEFsbFJlY29yZHNPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEdldENvdW50T25TZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZERlbGV0ZVJlY29yZE9uU2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRDbGVhck9iamVjdFN0
b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnB1dE9yQWRk
T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZFB1dE9yQWRk
T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNv
bXBsZXRlZE9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkZWFj
dGl2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjb25uZWN0aW9uQ2xv
c2VkRnJvbVNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2NoZWR1
bGVPcGVyYXRpb25UaW1lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbjo6b3BlcmF0aW9uVGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uRGlkQ29tcGxldGUpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIAorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmNvbXBsZXRlT3BlcmF0
aW9uKToKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OnRyYW5zaXRpb25Ub0NvbXBsZXRl
T25UaGlzVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb246OnRyYW5zaXRpb25Ub0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OmRvQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6aWRiUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpwZXJmb3JtQ29tcGxl
dGVPbk9yaWdpblRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpjb21wbGV0ZWQpOiBEZWxldGVkLgorCiAyMDE2LTExLTI3
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBE
T01SZXF1ZXN0U3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5jcHAKaW5kZXggZmJhZDM1ZmM0N2YyY2ZlMDY2OWZkMGMyOTY4NDQ5ODg5YzRhMGY1
ZC4uN2U3MzI5MjAzMTg4MTE4Y2ZmMTVmMjlhZjc1YTA5MTZkZDk4MGU0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTMwNCw2ICsz
MDQsOSBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAg
ICAgICBtX3RyYW5zYWN0aW9uLT5hYm9ydER1ZVRvRmFpbGVkUmVxdWVzdCgqbV9kb21FcnJvcik7
CiAgICAgfQogCisgICAgaWYgKG1fdHJhbnNhY3Rpb24pCisgICAgICAgIG1fdHJhbnNhY3Rpb24t
PmZpbmlzaGVkRGlzcGF0Y2hFdmVudEZvclJlcXVlc3QoKnRoaXMpOworCiAgICAgcmV0dXJuIGRv
bnRQcmV2ZW50RGVmYXVsdDsKIH0KIApAQCAtNDY1LDEwICs0NjgsMTAgQEAgdm9pZCBJREJSZXF1
ZXN0OjpkaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCiAgICAgbV9jdXJzb3JSZXF1ZXN0Tm90aWZpZXIgPSBudWxscHRyOwogICAgIG1fcGVuZGlu
Z0N1cnNvciA9IG51bGxwdHI7CiAKLSAgICByZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOwor
ICAgIGNvbXBsZXRlUmVxdWVzdEFuZERpc3BhdGNoRXZlbnQocmVzdWx0RGF0YSk7CiB9CiAKLXZv
aWQgSURCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRlZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQordm9pZCBJREJSZXF1ZXN0Ojpjb21wbGV0ZVJlcXVlc3RBbmREaXNwYXRjaEV2ZW50
KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IGU5NDU4NzJlYWVjNGFjYjFjZjY2ZmEyMTNi
YTQzMjU4ODgwNzVjMzQuLjhmNTNkYzk2NGExNmE0NDE5ODA4ZTc5NjgzZThlZWM5Y2U5ODBlMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAg
LTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1
c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAotICAgIHZvaWQgcmVxdWVzdENvbXBsZXRlZChjb25z
dCBJREJSZXN1bHREYXRhJik7CisgICAgdm9pZCBjb21wbGV0ZVJlcXVlc3RBbmREaXNwYXRjaEV2
ZW50KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAogICAgIHZvaWQgc2V0UmVzdWx0KGNvbnN0IElE
QktleURhdGEmKTsKICAgICB2b2lkIHNldFJlc3VsdChjb25zdCBWZWN0b3I8SURCS2V5RGF0YT4m
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcAppbmRleCBiODMyNmFmZDMyMzA0NjEyNmE0MzUzZTU0NDk3YWIwYmUxOTU3NzQzLi4w
MGM5MTMxMTk4NjE1YWNkMjhlZTk5YjMwY2QzZGZiOGRkZjM3YmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC03NCw4
ICs3NCwxMCBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRh
dGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mCiAgICAgOiBJREJBY3RpdmVET01PYmpl
Y3QoZGF0YWJhc2Uuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9kYXRhYmFzZShk
YXRhYmFzZSkKICAgICAsIG1faW5mbyhpbmZvKQotICAgICwgbV9vcGVyYXRpb25UaW1lcigqdGhp
cywgJklEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25UaW1lckZpcmVkKQorICAgICwgbV9wZW5kaW5n
T3BlcmF0aW9uVGltZXIoKnRoaXMsICZJREJUcmFuc2FjdGlvbjo6cGVuZGluZ09wZXJhdGlvblRp
bWVyRmlyZWQpCisgICAgLCBtX2NvbXBsZXRlZE9wZXJhdGlvblRpbWVyKCp0aGlzLCAmSURCVHJh
bnNhY3Rpb246OmNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX29wZW5EQlJl
cXVlc3QocmVxdWVzdCkKKyAgICAsIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QocmVxdWVz
dCkKIAogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rp
b24gLSAlcyIsIG1faW5mby5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC0yNDQs
NyArMjQ2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6aW50ZXJuYWxBYm9ydCgpCiAKICAgICB0
cmFuc2l0aW9uZWRUb0ZpbmlzaGluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFib3J0
aW5nKTsKICAgICAKLSAgICBtX2Fib3J0UXVldWUuc3dhcChtX3RyYW5zYWN0aW9uT3BlcmF0aW9u
UXVldWUpOworICAgIG1fYWJvcnRRdWV1ZS5zd2FwKG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0
aW9uUXVldWUpOwogCiAgICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpjcmVhdGVUcmFu
c2FjdGlvbk9wZXJhdGlvbigqdGhpcywgbnVsbHB0ciwgJklEQlRyYW5zYWN0aW9uOjphYm9ydE9u
U2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMpKTsKIH0KQEAgLTI1MywxOSArMjU1LDIzIEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyhJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMiKTsKICAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwotICAgIEFTU0VSVChtX3Ry
YW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9wZW5kaW5n
VHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5pc0VtcHR5KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+
Y29ubmVjdGlvblByb3h5KCkuYWJvcnRUcmFuc2FjdGlvbigqdGhpcyk7CiAKICAgICBBU1NFUlQo
bV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24uaWRlbnRpZmllcigp
KSk7CiAgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5yZW1vdmUob3BlcmF0aW9uLmlkZW50
aWZpZXIoKSk7CiAKKyAgICBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID0gbnVsbHB0cjsK
KyAgICAKICAgICBJREJFcnJvciBlcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJv
cik7Ci0gICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX2Fib3J0UXVldWUpCi0gICAgICAgIG9w
ZXJhdGlvbi0+Y29tcGxldGVkKElEQlJlc3VsdERhdGE6OmVycm9yKG9wZXJhdGlvbi0+aWRlbnRp
ZmllcigpLCBlcnJvcikpOworICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogbV9hYm9ydFF1ZXVl
KSB7CisgICAgICAgIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPSBudWxscHRyOworICAg
ICAgICBvcGVyYXRpb24tPmRvQ29tcGxldGUoSURCUmVzdWx0RGF0YTo6ZXJyb3Iob3BlcmF0aW9u
LT5pZGVudGlmaWVyKCksIGVycm9yKSk7CisgICAgfQogCiAgICAgLy8gU2luY2Ugd2UncmUgYWJv
cnRpbmcsIGl0IHNob3VsZCBiZSBpbXBvc3NpYmxlIHRvIGhhdmUgcXVldWVkIGFueSBmdXJ0aGVy
IG9wZXJhdGlvbnMuCi0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5pc0Vt
cHR5KCkpOworICAgIEFTU0VSVChtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmlz
RW1wdHkoKSk7CiB9CiAKIGNvbnN0IGNoYXIqIElEQlRyYW5zYWN0aW9uOjphY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QKQEAgLTMzOSwzMCArMzQ1LDMwIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OnNjaGVkdWxlT3BlcmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
PiYmCiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRhaW5zKG9wZXJh
dGlvbi0+aWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAotICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25R
dWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKKyAgICBtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlv
blF1ZXVlLmFwcGVuZChvcGVyYXRpb24pOwogICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAu
c2V0KG9wZXJhdGlvbi0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKG9wZXJhdGlvbikpOwogCi0gICAg
c2NoZWR1bGVPcGVyYXRpb25UaW1lcigpOworICAgIHNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRp
bWVyKCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uVGltZXIo
KQordm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVQZW5kaW5nT3BlcmF0aW9uVGltZXIoKQog
ewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CiAKLSAgICBpZiAoIW1fb3BlcmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAg
bV9vcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgaWYgKCFtX3BlbmRpbmdPcGVy
YXRpb25UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5z
dGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvblRpbWVy
RmlyZWQoKQordm9pZCBJREJUcmFuc2FjdGlvbjo6cGVuZGluZ09wZXJhdGlvblRpbWVyRmlyZWQo
KQogewotICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uVGltZXJG
aXJlZCAoJXApIiwgdGhpcyk7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpw
ZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCAoJXApIiwgdGhpcyk7CiAgICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIGlmICgh
bV9zdGFydGVkT25TZXJ2ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV90cmFuc2Fj
dGlvbk9wZXJhdGlvblF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIG9wZXJhdGlvbiA9
IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS50YWtlRmlyc3QoKTsKKyAgICBpZiAoIW1fcGVu
ZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8g
b3BlcmF0aW9uID0gbV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS50YWtlRmlyc3Qo
KTsKICAgICAgICAgb3BlcmF0aW9uLT5wZXJmb3JtKCk7CiAKICAgICAgICAgcmV0dXJuOwpAQCAt
Mzc1LDYgKzM4MSw2NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25UaW1lckZpcmVk
KCkKICAgICAgICAgY29tbWl0KCk7CiB9CiAKK3ZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlv
bkNvbXBsZXRlZE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEsIElEQkNsaWVudDo6
VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKK3sKKyAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3BlcmF0aW9uLm9yaWdpblRocmVhZElEKCkpOworCisgICAgbV9jb21w
bGV0ZWRPblNlcnZlclF1ZXVlLmFwcGVuZCh7ICZvcGVyYXRpb24sIGRhdGEgfSk7CisgICAgc2No
ZWR1bGVDb21wbGV0ZWRPcGVyYXRpb25UaW1lcigpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9u
OjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVyKCkKK3sKKyAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworCisgICAgaWYgKCFt
X2NvbXBsZXRlZE9wZXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fY29tcGxldGVk
T3BlcmF0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9u
Ojpjb21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246OmNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQgKCVwKSIsIHRoaXMp
OworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CisKKyAgICBpZiAobV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLmlzRW1wdHkoKSB8fCBt
X2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGl0ZXJhdG9yID0gbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLnRha2VGaXJzdCgpOworICAgIGl0
ZXJhdG9yLmZpcnN0LT5kb0NvbXBsZXRlKGl0ZXJhdG9yLnNlY29uZCk7CisKKyAgICBpZiAoIW1f
Y29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5pc0VtcHR5KCkgJiYgIW1fY3VycmVudGx5Q29tcGxldGlu
Z1JlcXVlc3QpCisgICAgICAgIHNjaGVkdWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIoKTsKK30K
Kwordm9pZCBJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KElEQlJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQo
IW1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QpOworCisgICAgcmVxdWVzdC5jb21wbGV0ZVJl
cXVlc3RBbmREaXNwYXRjaEV2ZW50KHJlc3VsdCk7CisKKyAgICBtX2N1cnJlbnRseUNvbXBsZXRp
bmdSZXF1ZXN0ID0gJnJlcXVlc3Q7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb246OmNvbXBsZXRl
Q3Vyc29yUmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHQpCit7CisgICAgQVNTRVJUKCFtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0KTsKKwor
ICAgIHJlcXVlc3QuZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihyZXN1bHQpOworCisgICAgbV9jdXJy
ZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9ICZyZXF1ZXN0OworfQorCit2b2lkIElEQlRyYW5zYWN0
aW9uOjpmaW5pc2hlZERpc3BhdGNoRXZlbnRGb3JSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgaWYgKGlzRmluaXNoZWRPckZpbmlzaGluZygpKQorICAgICAgICByZXR1cm47CisK
KyAgICBBU1NFUlRfVU5VU0VEKHJlcXVlc3QsICFtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0
IHx8IG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPT0gJnJlcXVlc3QpOworCisgICAgbV9j
dXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9IG51bGxwdHI7CisgICAgc2NoZWR1bGVDb21wbGV0
ZWRPcGVyYXRpb25UaW1lcigpOworfQorCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb21taXQoKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y29tbWl0Iik7CkBAIC00MjIs
NyArNDg5LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQoY29uc3QgSURCRXJyb3Im
IGVycm9yKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2NoZWR1bGVPcGVyYXRpb25U
aW1lcigpOworICAgIHNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRpbWVyKCk7CiB9CiAKIHZvaWQg
SURCVHJhbnNhY3Rpb246Om5vdGlmeURpZEFib3J0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKQEAg
LTcyNCw3ICs3OTEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRPcGVuQ3Vyc29yT25TZXJ2
ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RAogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6ZGlkT3BlbkN1cnNvck9uU2VydmVyIik7CiAgICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAotICAg
IHJlcXVlc3QuZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihyZXN1bHREYXRhKTsKKyAgICBjb21wbGV0
ZUN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CiAKIHZvaWQgSURCVHJhbnNh
Y3Rpb246Oml0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNvbnN0IElEQkl0ZXJhdGVD
dXJzb3JEYXRhJiBkYXRhKQpAQCAtNzUzLDcgKzgyMCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OmRpZEl0ZXJhdGVDdXJzb3JPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJS
ZXN1CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRJdGVyYXRlQ3Vyc29y
T25TZXJ2ZXIiKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZElEKCkpOwogCi0gICAgcmVxdWVzdC5kaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKHJl
c3VsdERhdGEpOworICAgIGNvbXBsZXRlQ3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRh
KTsKIH0KIAogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2Jq
ZWN0U3RvcmVSZWNvcmRzKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9i
amVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgSW5kZXhlZERC
OjpHZXRBbGxUeXBlIGdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQpA
QCAtODA2LDcgKzg3Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdldEFsbFJlY29yZHNP
blNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1CiAgICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIGlm
IChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcikgewotICAgICAgICBy
ZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CisgICAgICAgIGNvbXBsZXRlTm9u
Y3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtODIyLDcgKzg4OSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdldEFsbFJl
Y29yZHNPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRh
KTsKKyAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9
CiAKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZChFeGVj
U3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQkdldFJl
Y29yZERhdGEmIGdldFJlY29yZERhdGEpCkBAIC04OTAsNyArOTU3LDcgQEAgdm9pZCBJREJUcmFu
c2FjdGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
SURCUmVzdWx0RGEKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZElEKCkpOwogCiAgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3Vs
dFR5cGU6OkVycm9yKSB7Ci0gICAgICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHRE
YXRhKTsKKyAgICAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERh
dGEpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MTAsNyArOTc3LDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgSURCUmVzdWx0RGEKICAgICAgICAgICAgIHJlcXVlc3Quc2V0UmVzdWx0VG9VbmRlZmlu
ZWQoKTsKICAgICB9CiAKLSAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7
CisgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQog
CiBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChFeGVjU3RhdGUm
IHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYgcmFuZ2UpCkBAIC05NjEsNyArMTAyOCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdl
dENvdW50T25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0CiAg
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgp
KTsKIAogICAgIHJlcXVlc3Quc2V0UmVzdWx0KHJlc3VsdERhdGEucmVzdWx0SW50ZWdlcigpKTsK
LSAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CisgICAgY29tcGxldGVO
b25jdXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQogCiBSZWY8SURCUmVxdWVz
dD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwg
SURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdl
KQpAQCAtOTk0LDcgKzEwNjEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVSZWNv
cmRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bAogICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CiAKICAg
ICByZXF1ZXN0LnNldFJlc3VsdFRvVW5kZWZpbmVkKCk7Ci0gICAgcmVxdWVzdC5yZXF1ZXN0Q29t
cGxldGVkKHJlc3VsdERhdGEpOworICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0
LCByZXN1bHREYXRhKTsKIH0KIAogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0Q2xlYXJPYmplY3RTdG9yZShFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2Jq
ZWN0U3RvcmUpCkBAIC0xMDI4LDcgKzEwOTUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRD
bGVhck9iamVjdFN0b3JlT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUgog
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQo
KSk7CiAKICAgICByZXF1ZXN0LnNldFJlc3VsdFRvVW5kZWZpbmVkKCk7Ci0gICAgcmVxdWVzdC5y
ZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOworICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVz
dChyZXF1ZXN0LCByZXN1bHREYXRhKTsKIH0KIAogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0UHV0T3JBZGQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9i
amVjdFN0b3JlLCBJREJLZXkqIGtleSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgSW5k
ZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKQEAgLTEwNzQs
NyArMTE0MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIoSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uCiAgICAgICAgICAgICBSZWZQdHI8
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4gcHJvdGVjdGVkT3BlcmF0aW9uKCZvcGVy
YXRpb24pOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBJREJSZXN1bHREYXRhOjplcnJvcihv
cGVyYXRpb24uaWRlbnRpZmllcigpLCB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgcHJlcGFyaW5nIEJsb2IvRmlsZSBkYXRhIHRvIGJlIHN0
b3JlZCBpbiBvYmplY3Qgc3RvcmUiKSB9KTsKICAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+cG9zdFRhc2soW3Byb3RlY3RlZE9wZXJhdGlvbiA9IFdURk1vdmUocHJvdGVjdGVk
T3BlcmF0aW9uKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgewotICAgICAgICAgICAgICAgIHByb3RlY3RlZE9wZXJhdGlvbi0+Y29tcGxldGVkKHJl
c3VsdCk7CisgICAgICAgICAgICAgICAgcHJvdGVjdGVkT3BlcmF0aW9uLT5kb0NvbXBsZXRlKHJl
c3VsdCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC0x
MDkyLDcgKzExNTksNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpwdXRPckFkZE9uU2VydmVyKElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbgogICAgICAgICAvLyBJbiB0
aGF0IGNhc2UsIHdlIGNhbm5vdCBzdWNjZXNzZnVsbHkgc3RvcmUgdGhpcyByZWNvcmQsIHNvIHdl
IGNhbGxiYWNrIHdpdGggYW4gZXJyb3IuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0
RGF0YTo6ZXJyb3IocHJvdGVjdGVkT3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIHsgSURCRGF0YWJh
c2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBwcmVwYXJpbmcg
QmxvYi9GaWxlIGRhdGEgdG8gYmUgc3RvcmVkIGluIG9iamVjdCBzdG9yZSIpIH0pOwogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgcHJvdGVjdGVkT3BlcmF0aW9uID0gV1RGTW92ZShwcm90ZWN0ZWRPcGVyYXRpb24pLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBwcm90ZWN0ZWRP
cGVyYXRpb24tPmNvbXBsZXRlZChyZXN1bHQpOworICAgICAgICAgICAgcHJvdGVjdGVkT3BlcmF0
aW9uLT5kb0NvbXBsZXRlKHJlc3VsdCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMTEw
Niw3ICsxMTczLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUHV0T3JBZGRPblNlcnZlcihJ
REJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXQKICAgICAgICAgcmVxdWVzdC5z
ZXRSZXN1bHQoKnJlc3VsdCk7CiAgICAgZWxzZQogICAgICAgICByZXF1ZXN0LnNldFJlc3VsdFRv
VW5kZWZpbmVkKCk7Ci0gICAgcmVxdWVzdC5yZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOwor
ICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKIH0KIAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUpCkBAIC0xMTY3LDE1ICsxMjM0LDE3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OmRpZERlbGV0ZUluZGV4T25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEsIHJlc3VsdERhdGEudHlwZSgpID09IElEQlJl
c3VsdFR5cGU6OkRlbGV0ZUluZGV4U3VjY2VzcyB8fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJS
ZXN1bHRUeXBlOjpFcnJvcik7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkRp
ZENvbXBsZXRlKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKK3Zv
aWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50KElEQkNsaWVudDo6
VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKIHsKKyAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50Iik7CisKICAgICBBU1NF
UlQobV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5nZXQob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkg
PT0gJm9wZXJhdGlvbik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9wZXJh
dGlvbi5vcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAu
cmVtb3ZlKG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpOwogCi0gICAgc2NoZWR1bGVPcGVyYXRpb25U
aW1lcigpOworICAgIHNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRpbWVyKCk7CiB9CiAKIHZvaWQg
SURCVHJhbnNhY3Rpb246OmVzdGFibGlzaE9uU2VydmVyKCkKQEAgLTEyMDMsNyArMTI3Miw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRlYWN0aXZhdGUoKQogICAgIGlmIChtX3N0YXRlID09IElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6QWN0aXZlKQogICAgICAgICBtX3N0YXRlID0gSW5k
ZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpJbmFjdGl2ZTsKIAotICAgIHNjaGVkdWxlT3BlcmF0
aW9uVGltZXIoKTsKKyAgICBzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1lcigpOwogfQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkRnJvbVNlcnZlcihjb25zdCBJREJF
cnJvciYgZXJyb3IpCkBAIC0xMjE1LDEyICsxMjg0LDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OmNvbm5lY3Rpb25DbG9zZWRGcm9tU2VydmVyKGNvbnN0IElEQkVycm9yJiBlcnJvcikKICAgICBW
ZWN0b3I8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBvcGVyYXRpb25z
OwogICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLCBvcGVy
YXRpb25zKTsKIAotICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3BlcmF0aW9ucykKLSAgICAg
ICAgb3BlcmF0aW9uLT5jb21wbGV0ZWQoSURCUmVzdWx0RGF0YTo6ZXJyb3Iob3BlcmF0aW9uLT5p
ZGVudGlmaWVyKCksIGVycm9yKSk7CisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBvcGVyYXRp
b25zKSB7CisgICAgICAgIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPSBudWxscHRyOwor
ICAgICAgICBvcGVyYXRpb24tPmRvQ29tcGxldGUoSURCUmVzdWx0RGF0YTo6ZXJyb3Iob3BlcmF0
aW9uLT5pZGVudGlmaWVyKCksIGVycm9yKSk7CisgICAgfQogCiAgICAgY29ubmVjdGlvblByb3h5
KCkuZm9yZ2V0QWN0aXZlT3BlcmF0aW9ucyhvcGVyYXRpb25zKTsKIAotICAgIG1fdHJhbnNhY3Rp
b25PcGVyYXRpb25RdWV1ZS5jbGVhcigpOworICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0
aW9uUXVldWUuY2xlYXIoKTsKICAgICBtX2Fib3J0UXVldWUuY2xlYXIoKTsKICAgICBtX3RyYW5z
YWN0aW9uT3BlcmF0aW9uTWFwLmNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IGZmMThkODkxNTY0NDI1YTJmZmVm
ZDY4ZWE4NGVlOGI3MGQ1NTFlYTQuLmRmMjIzZTEwNDQ3OWI3N2I4MDZlZDJlMGViMWRmOTI3ZmQz
NGY4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaApAQCAtMTM4LDcgKzEzOCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhY3RpdmF0
ZSgpOwogICAgIHZvaWQgZGVhY3RpdmF0ZSgpOwogCi0gICAgdm9pZCBvcGVyYXRpb25EaWRDb21w
bGV0ZShJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJik7CisgICAgdm9pZCBvcGVyYXRp
b25Db21wbGV0ZWRPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiwgSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYpOworICAgIHZvaWQgb3BlcmF0aW9uQ29tcGxldGVkT25DbGllbnQo
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYpOworCisgICAgdm9pZCBmaW5pc2hlZERp
c3BhdGNoRXZlbnRGb3JSZXF1ZXN0KElEQlJlcXVlc3QmKTsKIAogICAgIGJvb2wgaXNGaW5pc2hl
ZE9yRmluaXNoaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkZpbmlzaGVkOyB9CkBA
IC0xNTksNyArMTYyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaEFib3J0T3JDb21taXQo
KTsKIAogICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb24+JiYpOwotICAgIHZvaWQgb3BlcmF0aW9uVGltZXJGaXJlZCgpOworICAg
IHZvaWQgcGVuZGluZ09wZXJhdGlvblRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIGNvbXBsZXRlZE9w
ZXJhdGlvblRpbWVyRmlyZWQoKTsKIAogICAgIHZvaWQgZmlyZU9uQ29tcGxldGUoKTsKICAgICB2
b2lkIGZpcmVPbkFib3J0KCk7CkBAIC0yMTcsNyArMjIxLDExIEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGVzdGFibGlzaE9uU2VydmVyKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9uVGlt
ZXIoKTsKKyAgICB2b2lkIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChJREJSZXF1ZXN0JiwgY29u
c3QgSURCUmVzdWx0RGF0YSYpOworICAgIHZvaWQgY29tcGxldGVDdXJzb3JSZXF1ZXN0KElEQlJl
cXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJik7CisKKyAgICB2b2lkIHNjaGVkdWxlUGVuZGlu
Z09wZXJhdGlvblRpbWVyKCk7CisgICAgdm9pZCBzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRp
bWVyKCk7CiAKICAgICBSZWY8SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAgSURCVHJhbnNh
Y3Rpb25JbmZvIG1faW5mbzsKQEAgLTIyOCwxMiArMjM2LDE0IEBAIHByaXZhdGU6CiAgICAgSURC
RXJyb3IgbV9pZGJFcnJvcjsKICAgICBSZWZQdHI8RE9NRXJyb3I+IG1fZG9tRXJyb3I7CiAKLSAg
ICBUaW1lciBtX29wZXJhdGlvblRpbWVyOworICAgIFRpbWVyIG1fcGVuZGluZ09wZXJhdGlvblRp
bWVyOworICAgIFRpbWVyIG1fY29tcGxldGVkT3BlcmF0aW9uVGltZXI7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFRpbWVyPiBtX2FjdGl2YXRpb25UaW1lcjsKIAogICAgIFJlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiBtX29wZW5EQlJlcXVlc3Q7CiAKLSAgICBEZXF1ZTxSZWZQdHI8SURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZTsKKyAgICBE
ZXF1ZTxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fcGVuZGluZ1Ry
YW5zYWN0aW9uT3BlcmF0aW9uUXVldWU7CisgICAgRGVxdWU8c3RkOjpwYWlyPFJlZlB0cjxJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiwgSURCUmVzdWx0RGF0YT4+IG1fY29tcGxldGVk
T25TZXJ2ZXJRdWV1ZTsKICAgICBEZXF1ZTxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbj4+IG1fYWJvcnRRdWV1ZTsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmll
ciwgUmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBtX3RyYW5zYWN0aW9u
T3BlcmF0aW9uTWFwOwogCkBAIC0yNDIsNiArMjUyLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8SURCT2JqZWN0U3RvcmU+PiBtX2RlbGV0ZWRPYmpl
Y3RTdG9yZXM7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxJREJSZXF1ZXN0Pj4gbV9vcGVuUmVxdWVz
dHM7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3Q7
CiAKICAgICBib29sIG1fY29udGV4dFN0b3BwZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Qcm94eS5jcHAKaW5kZXggODA1ZjMwZThkOWI5NjViNGZjNmRmYTNjMzY4ZDdhNTNlN2Fh
NWQ1ZS4uNGRiNTBjMGI5MWFjMGQyY2NmZGI0ZmVkYWU2MmY1NWM3ZDQzYjlhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Q
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkNvbm5lY3Rpb25Qcm94eS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIElEQkNvbm5lY3Rp
b25Qcm94eTo6Y29tcGxldGVPcGVyYXRpb24oY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0
YSkKICAgICBpZiAoIW9wZXJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgb3BlcmF0aW9u
LT5wZXJmb3JtQ29tcGxldGVPbk9yaWdpblRocmVhZChyZXN1bHREYXRhLCBXVEZNb3ZlKG9wZXJh
dGlvbikpOworICAgIG9wZXJhdGlvbi0+dHJhbnNpdGlvblRvQ29tcGxldGUocmVzdWx0RGF0YSwg
V1RGTW92ZShvcGVyYXRpb24pKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmFib3J0
T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNh
Y3Rpb25PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcAppbmRleCAxNmY3NDc1YjAzN2U2Yjg2ZmE0OGM2
ODMzOTJlZWMwODgzMjY5MGIzLi44ZjM1NDc1MjJiNmRlZmM4MjgxODY1ZTE1NDMzZjVjZGZkMTc0
OTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
VHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKQEAgLTQzLDYgKzQzLDggQEAg
VHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwgSURCUmVxdWUKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSByZXF1
ZXN0LnJlcXVlc3RlZEluZGV4UmVjb3JkVHlwZSgpOwogICAgIGlmIChhdXRvKiBjdXJzb3IgPSBy
ZXF1ZXN0LnBlbmRpbmdDdXJzb3IoKSkKICAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50
aWZpZXIoKSk7CisKKyAgICBtX2lkYlJlcXVlc3QgPSAmcmVxdWVzdDsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSURCQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmluZGV4IGEzNmVhNGE4
MDYwYTFhMDc4ZTU2ZjU1MjRhMGQyYjk5YzljODZiYzkuLjcxYTFlYmFiYjMyMDJiMzlhY2FkZTc4
N2MwNTAwYjlmNzBiMzJiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBAIC02MSwy
NSArNjEsMzEgQEAgcHVibGljOgogICAgICAgICBtX3BlcmZvcm1GdW5jdGlvbiA9IHsgfTsKICAg
ICB9CiAKLSAgICB2b2lkIHBlcmZvcm1Db21wbGV0ZU9uT3JpZ2luVGhyZWFkKGNvbnN0IElEQlJl
c3VsdERhdGEmIGRhdGEsIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBsYXN0UmVmKQor
ICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tcGxldGVPblRoaXNUaHJlYWQoY29uc3QgSURCUmVzdWx0
RGF0YSYgZGF0YSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29yaWdpblRocmVhZElEID09IGN1
cnJlbnRUaHJlYWQoKSk7CisgICAgICAgIG1fdHJhbnNhY3Rpb24tPm9wZXJhdGlvbkNvbXBsZXRl
ZE9uU2VydmVyKGRhdGEsICp0aGlzKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5zaXRpb25Ub0Nv
bXBsZXRlKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEsIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJh
dGlvbj4mJiBsYXN0UmVmKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAogICAgICAgICBpZiAobV9vcmlnaW5UaHJlYWRJRCA9PSBjdXJyZW50VGhyZWFkKCkpCi0gICAg
ICAgICAgICBjb21wbGV0ZWQoZGF0YSk7CisgICAgICAgICAgICB0cmFuc2l0aW9uVG9Db21wbGV0
ZU9uVGhpc1RocmVhZChkYXRhKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtX3RyYW5z
YWN0aW9uLT5wZXJmb3JtQ2FsbGJhY2tPbk9yaWdpblRocmVhZCgqdGhpcywgJlRyYW5zYWN0aW9u
T3BlcmF0aW9uOjpjb21wbGV0ZWQsIGRhdGEpOworICAgICAgICAgICAgbV90cmFuc2FjdGlvbi0+
cGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoKnRoaXMsICZUcmFuc2FjdGlvbk9wZXJhdGlv
bjo6dHJhbnNpdGlvblRvQ29tcGxldGVPblRoaXNUaHJlYWQsIGRhdGEpOwogICAgICAgICAgICAg
bV90cmFuc2FjdGlvbi0+Y2FsbEZ1bmN0aW9uT25PcmlnaW5UaHJlYWQoW2xhc3RSZWYgPSBXVEZN
b3ZlKGxhc3RSZWYpXSgpIHsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgdm9pZCBjb21wbGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKKyAgICB2b2lkIGRv
Q29tcGxldGUoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX29yaWdpblRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCht
X2NvbXBsZXRlRnVuY3Rpb24pOwogICAgICAgICBtX2NvbXBsZXRlRnVuY3Rpb24oZGF0YSk7Ci0g
ICAgICAgIG1fdHJhbnNhY3Rpb24tPm9wZXJhdGlvbkRpZENvbXBsZXRlKCp0aGlzKTsKKyAgICAg
ICAgbV90cmFuc2FjdGlvbi0+b3BlcmF0aW9uQ29tcGxldGVkT25DbGllbnQoKnRoaXMpOwogCiAg
ICAgICAgIC8vIG1fY29tcGxldGVGdW5jdGlvbiBtaWdodCBiZSBob2xkaW5nIHRoZSBsYXN0IHJl
ZiB0byB0aGlzIFRyYW5zYWN0aW9uT3BlcmF0aW9uLAogICAgICAgICAvLyBzbyB3ZSBuZWVkIHRv
IGRvIHRoaXMgdHJpY2sgdG8gbnVsbCBpdCBvdXQgd2l0aG91dCBmaXJzdCBkZXN0cm95aW5nIGl0
LgpAQCAtOTEsNiArOTcsOCBAQCBwdWJsaWM6CiAKICAgICBUaHJlYWRJZGVudGlmaWVyIG9yaWdp
blRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UaHJlYWRJRDsgfQogCisgICAgSURC
UmVxdWVzdCogaWRiUmVxdWVzdCgpIHsgcmV0dXJuIG1faWRiUmVxdWVzdC5nZXQoKTsgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgVHJhbnNhY3Rpb25PcGVyYXRpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCkBAIC0xMTgsNiAr
MTI2LDcgQEAgcHJpdmF0ZToKICAgICBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSBpbmRleFJl
Y29yZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2luZGV4UmVjb3JkVHlwZTsgfQogCiAgICAgVGhy
ZWFkSWRlbnRpZmllciBtX29yaWdpblRocmVhZElEIHsgY3VycmVudFRocmVhZCgpIH07CisgICAg
UmVmUHRyPElEQlJlcXVlc3Q+IG1faWRiUmVxdWVzdDsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWUyZjM0Yjk4ODYyNWUxYTdmNDkxYjk2MWY4OGZiOWNh
Mjc0ZTMxMC4uODllM2Y4Yzc3NzU4YjdhMDQ4ZDJiODAzNzNlNjgxMjc4M2Y3MmVjNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTExLTI4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBJbmRleGVkREIgMi4wOiBRdWV1ZSB1cCBjb21wbGV0ZWQgcmVxdWVz
dHMgaW4gdGhlIGNsaWVudCwgaGFuZGxlIHRoZW0gb25lIGJ5IG9uZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTAwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNjaGVkdWxlci02LmpzOiBUaGlzIHRlc3QgaGFk
IGEgYnVnIHdoaWNoIHdhcyBtYXNrZWQgYnkgcHJldmlvdXNseQorICAgICAgICAgIHN5bmNocm9u
b3VzIGJlaGF2aW9yLiBGaXggdGhhdCBidWchCisKIDIwMTYtMTEtMjcgIFJ5YW4gSGFkZGFkICA8
cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSBpbnNwZWN0b3IvZG9t
L2dldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZS5odG1sIGZvciBtYWNPUy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJh
bnNhY3Rpb24tc2NoZWR1bGVyLTYuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNjaGVkdWxlci02LmpzCmluZGV4IDNjOGEzNTJi
MThmZDBkNTNkZmNhMzg2MDQzNThhOTk1NDYzN2MwNTYuLjRjNzM0NjE4YmNlMjFhNmY4YmE4ZmVl
MjhmN2Y0YjVhY2M0ZjhhNjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTYuanMKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy90cmFuc2FjdGlvbi1z
Y2hlZHVsZXItNi5qcwpAQCAtMyw2ICszLDEwIEBAIEl0IHZlcmlmaWVzIHRoYXQgdGhlIHJlYWQt
d3JpdGUgZG9lc24ndCBzdGFydCB1bnRpbCBib3RoIHJlYWQtb25seXMgaGF2ZSBmaW5pc2hlCiAK
IGluZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlKTsKIAorZnVuY3Rpb24gbG9nKG1zZykKK3sK
KwlkZWJ1Zyhtc2cpOworfQogCiBmdW5jdGlvbiBkb25lKCkKIHsKQEAgLTEzLDcgKzE3LDcgQEAg
dmFyIGRhdGFiYXNlOwogCiBmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoZXZlbnQpCiB7Ci0gICAg
ZGVidWcoIlVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9u
ICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKyAgICBsb2coIlVwZ3Jh
ZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVy
c2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKIAogICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rp
b24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb247CiAgICAgZGF0YWJhc2UgPSBldmVudC50YXJn
ZXQucmVzdWx0OwpAQCAtMjEsMjIgKzI1LDIyIEBAIGZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZShl
dmVudCkKICAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiZm9vIiwgImJhciIpOwog
CiAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgZGVidWco
InB1dCBGQUlMRUQgLSAiICsgZXZlbnQpOworICAgICAgICBsb2coInB1dCBGQUlMRUQgLSAiICsg
ZXZlbnQpOwogICAgICAgICBkb25lKCk7CiAgICAgfQogICAgIAogICAgIHZlcnNpb25UcmFuc2Fj
dGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgZGVidWcoInZlcnNpb25j
aGFuZ2UgdHJhbnNhY3Rpb24gYWJvcnRlZCIpOworICAgICAgICBsb2coInZlcnNpb25jaGFuZ2Ug
dHJhbnNhY3Rpb24gYWJvcnRlZCIpOwogICAgICAgICBkb25lKCk7CiAgICAgfQogCiAgICAgdmVy
c2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBk
ZWJ1ZygidmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKKyAgICAgICAgbG9n
KCJ2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlZCIpOwogICAgICAgICBjb250aW51
ZVRlc3QoKTsKICAgICB9CiAKICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgIGRlYnVnKCJ2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGVy
cm9yJ2VkIC0gIiArIGV2ZW50KTsKKyAgICAgICAgbG9nKCJ2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0
aW9uIGVycm9yJ2VkIC0gIiArIGV2ZW50KTsKICAgICAgICAgZG9uZSgpOwogICAgIH0KIH0KQEAg
LTUxLDI2ICs1NSwyNiBAQCBmdW5jdGlvbiBjb250aW51ZVRlc3QoKQogICAgIHZhciByZXF1ZXN0
ID0gb2JqZWN0U3RvcmUucHV0KCJiYXoiLCAiZm9vIik7CiAKICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGRlYnVnKCJXcml0ZSBpbiByZWFkd3JpdGUg
dHJhbnNhY3Rpb24gc3VjY2VlZGVkIik7CisgICAgICAgIGxvZygiV3JpdGUgaW4gcmVhZHdyaXRl
IHRyYW5zYWN0aW9uIHN1Y2NlZWRlZCIpOwogICAgIH0KICAgICAKICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBkZWJ1ZygiV3JpdGUgaW4gcmVhZHdyaXRl
IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWRseSBmYWlsZWQiKTsKKyAgICAgICAgbG9nKCJXcml0ZSBp
biByZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZGx5IGZhaWxlZCIpOwogICAgICAgICBk
b25lKCk7CiAgICAgfQogICAgIAogICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihl
dmVudCkgewotICAgICAgICBkZWJ1ZygicmVhZHdyaXRlIHRyYW5zYWN0aW9uIGV4cGVjdGVkbHkg
YWJvcnRlZCIpOworICAgICAgICBsb2coInJlYWR3cml0ZSB0cmFuc2FjdGlvbiBleHBlY3RlZGx5
IGFib3J0ZWQiKTsKICAgICAgICAgZG9uZSgpOwogICAgIH0KIAogICAgIHRyYW5zYWN0aW9uLm9u
Y29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBkZWJ1ZygicmVhZHdyaXRlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlZCIpOworICAgICAgICBsb2coInJlYWR3cml0ZSB0cmFuc2FjdGlv
biBjb21wbGV0ZWQiKTsKICAgICAgICAgZG9uZSgpOwogICAgIH0KIAogICAgIHRyYW5zYWN0aW9u
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBkZWJ1ZygicmVhZHdyaXRlIHRy
YW5zYWN0aW9uIGVycm9yJ2VkIC0gIiArIGV2ZW50KTsKKyAgICAgICAgbG9nKCJyZWFkd3JpdGUg
dHJhbnNhY3Rpb24gZXJyb3InZWQgLSAiICsgZXZlbnQpOwogICAgICAgICBkb25lKCk7CiAgICAg
fQogfQpAQCAtODQsNyArODgsNyBAQCBmdW5jdGlvbiBzdGFydFRyYW5zYWN0aW9uTG9vcCh0cmFu
c2FjdGlvbiwgaXNGaXJzdFRpbWUpCiAgICAgCiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbihldmVudCkgewogICAgICAgICBpZiAoaXNGaXJzdFRpbWUpIHsKLSAgICAgICAgICAgIGRl
YnVnKCJTdGFydGluZyBhIHJlYWRvbmx5IHRyYW5zYWN0aW9uIik7CisgICAgICAgICAgICBsb2co
IlN0YXJ0aW5nIGEgcmVhZG9ubHkgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgICAgIG51bWJlck9m
T3BlblRyYW5zYWN0aW9ucysrOwogICAgICAgICB9CiAgICAgICAgIApAQCAtOTUsMjQgKzk5LDIy
IEBAIGZ1bmN0aW9uIHN0YXJ0VHJhbnNhY3Rpb25Mb29wKHRyYW5zYWN0aW9uLCBpc0ZpcnN0VGlt
ZSkKICAgICB9CiAKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAg
ICAgICBkZWJ1ZygiVW5leHBlY3RlZCByZXF1ZXN0IGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAg
ICAgbG9nKCJVbmV4cGVjdGVkIHJlcXVlc3QgZXJyb3IgLSAiICsgZXZlbnQpOwogICAgICAgICBk
b25lKCk7CiAgICAgfQogCiAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGRlYnVnKCJVbmV4cGVjdGVkIHRyYW5zYWN0aW9uIGVycm9yIC0gIiArIGV2
ZW50KTsKKyAgICAgICAgbG9nKCJVbmV4cGVjdGVkIHRyYW5zYWN0aW9uIGVycm9yIC0gIiArIGV2
ZW50KTsKICAgICAgICAgZG9uZSgpOwogICAgIH0KIAogICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAtLW51bWJlck9mT3BlblRyYW5zYWN0aW9uczsK
LSAgICAgICAgZGVidWcoIlVuZXhwZWN0ZWQgdHJhbnNhY3Rpb24gYWJvcnQgLSAiICsgZXZlbnQp
OworICAgICAgICBsb2coIlVuZXhwZWN0ZWQgdHJhbnNhY3Rpb24gYWJvcnQgLSAiICsgZXZlbnQp
OwogICAgICAgICBkb25lKCk7CiAgICAgfQogCiAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIC0tbnVtYmVyT2ZPcGVuVHJhbnNhY3Rpb25zOwot
ICAgICAgICBkZWJ1ZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGVkIik7CisgICAgICAg
IGxvZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGVkIik7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295584</attachid>
            <date>2016-11-28 23:06:41 -0800</date>
            <delta_ts>2016-11-29 08:05:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165000-20161128230615.patch</filename>
            <type>text/plain</type>
            <size>32115</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4OTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1YzNiYTRiMzAxMzFk
NmJlZTU0MzI2MzVkMzY1MGY2MTBiMjdjNC4uMmRkMzgxMjQyOWJkOGQxYzU0NTNlOTZjNGFkMGQ1
NjI1MGY2NWM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE2LTExLTI4ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREIgMi4wOiBR
dWV1ZSB1cCBjb21wbGV0ZWQgcmVxdWVzdHMgaW4gdGhlIGNsaWVudCwgaGFuZGxlIHRoZW0gb25l
IGJ5IG9uZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChDb3ZlcmVkIGV4dGVuc2l2ZWx5IGJ5IGV2ZXJ5IGV4aXN0aW5nIHRl
c3QpLgorCisgICAgICAgIEN1cnJlbnRseSB3aGVuIGEgVHJhbnNhY3Rpb25PcGVyYXRpb24gY29t
cGxldGVzIG9uIHRoZSBzZXJ2ZXIsIGl0IGltbWVkaWF0ZWx5IGNvbXBsZXRlcworICAgICAgICBp
dHNlbGYgb24gdGhlIGNsaWVudCBzaWRlLCBpbmNsdWRpbmcgc2NoZWR1bGluZyBhbiBldmVudCBk
aXNwYXRjaCBpZiBuZWNlc3NhcnkuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGNoYW5n
ZXMgaXQgc28gdGhhdCAic2VydmVyIGNvbXBsZXRlZCBvcGVyYXRpb25zIiBpbnN0ZWFkIHF1ZXVl
IHVwIGluIHRoZSAKKyAgICAgICAgSURCVHJhbnNhY3Rpb24gYW5kIGFyZSAiY2xpZW50LXNpZGUg
Y29tcGxldGVkIiBhc3luY2hyb25vdXNseSwgMS1ieS0xLgorICAgICAgICAKKyAgICAgICAgQ3Vy
cmVudGx5IHRoaXMgaXMgYSAibm8gYmVoYXZpb3IgY2hhbmdlIiBiZWNhdXNlIG9ubHkgb25lIG9w
ZXJhdGlvbiBpcyBldmVyIHNlbnQgdG8KKyAgICAgICAgdGhlIHNlcnZlciBhdCBhIHRpbWUuCisg
ICAgICAgIAorICAgICAgICBCdXQgdGhhdCB3aWxsIGNoYW5nZSB3aXRoIGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzE2NDkzMgorICAgICAgICBBbmQgdGhpcyBwYXRjaCBpcyBhIHByZS1yZXF1aXNpdGUg
Zm9yIHRoYXQuCisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpkaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmNvbXBsZXRlUmVxdWVzdEFuZERpc3BhdGNoRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRlZCk6IERl
bGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAg
ICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmludGVybmFsQWJvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRpbWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0aW9uVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29t
cGxldGVkT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVk
dWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OmNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OmNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVDdXJzb3JSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uOjpmaW5pc2hlZERpc3BhdGNoRXZlbnRGb3JSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRTdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkT3BlbkN1cnNvck9uU2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRJdGVyYXRlQ3Vyc29yT25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEdldEFsbFJlY29yZHNPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEdldENvdW50T25TZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZERlbGV0ZVJlY29yZE9uU2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRDbGVhck9iamVjdFN0
b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnB1dE9yQWRk
T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZFB1dE9yQWRk
T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNv
bXBsZXRlZE9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkZWFj
dGl2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjb25uZWN0aW9uQ2xv
c2VkRnJvbVNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2NoZWR1
bGVPcGVyYXRpb25UaW1lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbjo6b3BlcmF0aW9uVGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uRGlkQ29tcGxldGUpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIAorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmNvbXBsZXRlT3BlcmF0
aW9uKToKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OnRyYW5zaXRpb25Ub0NvbXBsZXRl
T25UaGlzVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb246OnRyYW5zaXRpb25Ub0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OmRvQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6aWRiUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpwZXJmb3JtQ29tcGxl
dGVPbk9yaWdpblRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpjb21wbGV0ZWQpOiBEZWxldGVkLgorCiAyMDE2LTExLTI3
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBE
T01SZXF1ZXN0U3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5jcHAKaW5kZXggZmJhZDM1ZmM0N2YyY2ZlMDY2OWZkMGMyOTY4NDQ5ODg5YzRhMGY1
ZC4uN2U3MzI5MjAzMTg4MTE4Y2ZmMTVmMjlhZjc1YTA5MTZkZDk4MGU0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTMwNCw2ICsz
MDQsOSBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAg
ICAgICBtX3RyYW5zYWN0aW9uLT5hYm9ydER1ZVRvRmFpbGVkUmVxdWVzdCgqbV9kb21FcnJvcik7
CiAgICAgfQogCisgICAgaWYgKG1fdHJhbnNhY3Rpb24pCisgICAgICAgIG1fdHJhbnNhY3Rpb24t
PmZpbmlzaGVkRGlzcGF0Y2hFdmVudEZvclJlcXVlc3QoKnRoaXMpOworCiAgICAgcmV0dXJuIGRv
bnRQcmV2ZW50RGVmYXVsdDsKIH0KIApAQCAtNDY1LDEwICs0NjgsMTAgQEAgdm9pZCBJREJSZXF1
ZXN0OjpkaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCiAgICAgbV9jdXJzb3JSZXF1ZXN0Tm90aWZpZXIgPSBudWxscHRyOwogICAgIG1fcGVuZGlu
Z0N1cnNvciA9IG51bGxwdHI7CiAKLSAgICByZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOwor
ICAgIGNvbXBsZXRlUmVxdWVzdEFuZERpc3BhdGNoRXZlbnQocmVzdWx0RGF0YSk7CiB9CiAKLXZv
aWQgSURCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRlZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQordm9pZCBJREJSZXF1ZXN0Ojpjb21wbGV0ZVJlcXVlc3RBbmREaXNwYXRjaEV2ZW50
KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IGU5NDU4NzJlYWVjNGFjYjFjZjY2ZmEyMTNi
YTQzMjU4ODgwNzVjMzQuLjhmNTNkYzk2NGExNmE0NDE5ODA4ZTc5NjgzZThlZWM5Y2U5ODBlMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAg
LTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1
c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAotICAgIHZvaWQgcmVxdWVzdENvbXBsZXRlZChjb25z
dCBJREJSZXN1bHREYXRhJik7CisgICAgdm9pZCBjb21wbGV0ZVJlcXVlc3RBbmREaXNwYXRjaEV2
ZW50KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAogICAgIHZvaWQgc2V0UmVzdWx0KGNvbnN0IElE
QktleURhdGEmKTsKICAgICB2b2lkIHNldFJlc3VsdChjb25zdCBWZWN0b3I8SURCS2V5RGF0YT4m
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcAppbmRleCBiODMyNmFmZDMyMzA0NjEyNmE0MzUzZTU0NDk3YWIwYmUxOTU3NzQzLi4w
MGM5MTMxMTk4NjE1YWNkMjhlZTk5YjMwY2QzZGZiOGRkZjM3YmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC03NCw4
ICs3NCwxMCBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRh
dGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mCiAgICAgOiBJREJBY3RpdmVET01PYmpl
Y3QoZGF0YWJhc2Uuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9kYXRhYmFzZShk
YXRhYmFzZSkKICAgICAsIG1faW5mbyhpbmZvKQotICAgICwgbV9vcGVyYXRpb25UaW1lcigqdGhp
cywgJklEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25UaW1lckZpcmVkKQorICAgICwgbV9wZW5kaW5n
T3BlcmF0aW9uVGltZXIoKnRoaXMsICZJREJUcmFuc2FjdGlvbjo6cGVuZGluZ09wZXJhdGlvblRp
bWVyRmlyZWQpCisgICAgLCBtX2NvbXBsZXRlZE9wZXJhdGlvblRpbWVyKCp0aGlzLCAmSURCVHJh
bnNhY3Rpb246OmNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX29wZW5EQlJl
cXVlc3QocmVxdWVzdCkKKyAgICAsIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QocmVxdWVz
dCkKIAogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rp
b24gLSAlcyIsIG1faW5mby5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC0yNDQs
NyArMjQ2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6aW50ZXJuYWxBYm9ydCgpCiAKICAgICB0
cmFuc2l0aW9uZWRUb0ZpbmlzaGluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFib3J0
aW5nKTsKICAgICAKLSAgICBtX2Fib3J0UXVldWUuc3dhcChtX3RyYW5zYWN0aW9uT3BlcmF0aW9u
UXVldWUpOworICAgIG1fYWJvcnRRdWV1ZS5zd2FwKG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0
aW9uUXVldWUpOwogCiAgICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpjcmVhdGVUcmFu
c2FjdGlvbk9wZXJhdGlvbigqdGhpcywgbnVsbHB0ciwgJklEQlRyYW5zYWN0aW9uOjphYm9ydE9u
U2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMpKTsKIH0KQEAgLTI1MywxOSArMjU1LDIzIEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyhJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMiKTsKICAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwotICAgIEFTU0VSVChtX3Ry
YW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9wZW5kaW5n
VHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5pc0VtcHR5KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+
Y29ubmVjdGlvblByb3h5KCkuYWJvcnRUcmFuc2FjdGlvbigqdGhpcyk7CiAKICAgICBBU1NFUlQo
bV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24uaWRlbnRpZmllcigp
KSk7CiAgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5yZW1vdmUob3BlcmF0aW9uLmlkZW50
aWZpZXIoKSk7CiAKKyAgICBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID0gbnVsbHB0cjsK
KyAgICAKICAgICBJREJFcnJvciBlcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJv
cik7Ci0gICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX2Fib3J0UXVldWUpCi0gICAgICAgIG9w
ZXJhdGlvbi0+Y29tcGxldGVkKElEQlJlc3VsdERhdGE6OmVycm9yKG9wZXJhdGlvbi0+aWRlbnRp
ZmllcigpLCBlcnJvcikpOworICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogbV9hYm9ydFF1ZXVl
KSB7CisgICAgICAgIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPSBudWxscHRyOworICAg
ICAgICBvcGVyYXRpb24tPmRvQ29tcGxldGUoSURCUmVzdWx0RGF0YTo6ZXJyb3Iob3BlcmF0aW9u
LT5pZGVudGlmaWVyKCksIGVycm9yKSk7CisgICAgfQogCiAgICAgLy8gU2luY2Ugd2UncmUgYWJv
cnRpbmcsIGl0IHNob3VsZCBiZSBpbXBvc3NpYmxlIHRvIGhhdmUgcXVldWVkIGFueSBmdXJ0aGVy
IG9wZXJhdGlvbnMuCi0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5pc0Vt
cHR5KCkpOworICAgIEFTU0VSVChtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmlz
RW1wdHkoKSk7CiB9CiAKIGNvbnN0IGNoYXIqIElEQlRyYW5zYWN0aW9uOjphY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QKQEAgLTMzOSwzMCArMzQ1LDMwIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OnNjaGVkdWxlT3BlcmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
PiYmCiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRhaW5zKG9wZXJh
dGlvbi0+aWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAotICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25R
dWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKKyAgICBtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlv
blF1ZXVlLmFwcGVuZChvcGVyYXRpb24pOwogICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAu
c2V0KG9wZXJhdGlvbi0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKG9wZXJhdGlvbikpOwogCi0gICAg
c2NoZWR1bGVPcGVyYXRpb25UaW1lcigpOworICAgIHNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRp
bWVyKCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uVGltZXIo
KQordm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVQZW5kaW5nT3BlcmF0aW9uVGltZXIoKQog
ewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CiAKLSAgICBpZiAoIW1fb3BlcmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAg
bV9vcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgaWYgKCFtX3BlbmRpbmdPcGVy
YXRpb25UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5z
dGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvblRpbWVy
RmlyZWQoKQordm9pZCBJREJUcmFuc2FjdGlvbjo6cGVuZGluZ09wZXJhdGlvblRpbWVyRmlyZWQo
KQogewotICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uVGltZXJG
aXJlZCAoJXApIiwgdGhpcyk7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpw
ZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCAoJXApIiwgdGhpcyk7CiAgICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIGlmICgh
bV9zdGFydGVkT25TZXJ2ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV90cmFuc2Fj
dGlvbk9wZXJhdGlvblF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIG9wZXJhdGlvbiA9
IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS50YWtlRmlyc3QoKTsKKyAgICBpZiAoIW1fcGVu
ZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8g
b3BlcmF0aW9uID0gbV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS50YWtlRmlyc3Qo
KTsKICAgICAgICAgb3BlcmF0aW9uLT5wZXJmb3JtKCk7CiAKICAgICAgICAgcmV0dXJuOwpAQCAt
Mzc1LDYgKzM4MSw2NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25UaW1lckZpcmVk
KCkKICAgICAgICAgY29tbWl0KCk7CiB9CiAKK3ZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlv
bkNvbXBsZXRlZE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEsIElEQkNsaWVudDo6
VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKK3sKKyAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3BlcmF0aW9uLm9yaWdpblRocmVhZElEKCkpOworCisgICAgbV9jb21w
bGV0ZWRPblNlcnZlclF1ZXVlLmFwcGVuZCh7ICZvcGVyYXRpb24sIGRhdGEgfSk7CisgICAgc2No
ZWR1bGVDb21wbGV0ZWRPcGVyYXRpb25UaW1lcigpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9u
OjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVyKCkKK3sKKyAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworCisgICAgaWYgKCFt
X2NvbXBsZXRlZE9wZXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fY29tcGxldGVk
T3BlcmF0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9u
Ojpjb21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246OmNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQgKCVwKSIsIHRoaXMp
OworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CisKKyAgICBpZiAobV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLmlzRW1wdHkoKSB8fCBt
X2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGl0ZXJhdG9yID0gbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLnRha2VGaXJzdCgpOworICAgIGl0
ZXJhdG9yLmZpcnN0LT5kb0NvbXBsZXRlKGl0ZXJhdG9yLnNlY29uZCk7CisKKyAgICBpZiAoIW1f
Y29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5pc0VtcHR5KCkgJiYgIW1fY3VycmVudGx5Q29tcGxldGlu
Z1JlcXVlc3QpCisgICAgICAgIHNjaGVkdWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIoKTsKK30K
Kwordm9pZCBJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KElEQlJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQo
IW1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QpOworCisgICAgcmVxdWVzdC5jb21wbGV0ZVJl
cXVlc3RBbmREaXNwYXRjaEV2ZW50KHJlc3VsdCk7CisKKyAgICBtX2N1cnJlbnRseUNvbXBsZXRp
bmdSZXF1ZXN0ID0gJnJlcXVlc3Q7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb246OmNvbXBsZXRl
Q3Vyc29yUmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHQpCit7CisgICAgQVNTRVJUKCFtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0KTsKKwor
ICAgIHJlcXVlc3QuZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihyZXN1bHQpOworCisgICAgbV9jdXJy
ZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9ICZyZXF1ZXN0OworfQorCit2b2lkIElEQlRyYW5zYWN0
aW9uOjpmaW5pc2hlZERpc3BhdGNoRXZlbnRGb3JSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgaWYgKGlzRmluaXNoZWRPckZpbmlzaGluZygpKQorICAgICAgICByZXR1cm47CisK
KyAgICBBU1NFUlRfVU5VU0VEKHJlcXVlc3QsICFtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0
IHx8IG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPT0gJnJlcXVlc3QpOworCisgICAgbV9j
dXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9IG51bGxwdHI7CisgICAgc2NoZWR1bGVDb21wbGV0
ZWRPcGVyYXRpb25UaW1lcigpOworfQorCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb21taXQoKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y29tbWl0Iik7CkBAIC00MjIs
NyArNDg5LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQoY29uc3QgSURCRXJyb3Im
IGVycm9yKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2NoZWR1bGVPcGVyYXRpb25U
aW1lcigpOworICAgIHNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRpbWVyKCk7CiB9CiAKIHZvaWQg
SURCVHJhbnNhY3Rpb246Om5vdGlmeURpZEFib3J0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKQEAg
LTcyNCw3ICs3OTEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRPcGVuQ3Vyc29yT25TZXJ2
ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RAogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6ZGlkT3BlbkN1cnNvck9uU2VydmVyIik7CiAgICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAotICAg
IHJlcXVlc3QuZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihyZXN1bHREYXRhKTsKKyAgICBjb21wbGV0
ZUN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CiAKIHZvaWQgSURCVHJhbnNh
Y3Rpb246Oml0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNvbnN0IElEQkl0ZXJhdGVD
dXJzb3JEYXRhJiBkYXRhKQpAQCAtNzUzLDcgKzgyMCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OmRpZEl0ZXJhdGVDdXJzb3JPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJS
ZXN1CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRJdGVyYXRlQ3Vyc29y
T25TZXJ2ZXIiKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZElEKCkpOwogCi0gICAgcmVxdWVzdC5kaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKHJl
c3VsdERhdGEpOworICAgIGNvbXBsZXRlQ3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRh
KTsKIH0KIAogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2Jq
ZWN0U3RvcmVSZWNvcmRzKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9i
amVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgSW5kZXhlZERC
OjpHZXRBbGxUeXBlIGdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQpA
QCAtODA2LDcgKzg3Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdldEFsbFJlY29yZHNP
blNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1CiAgICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIGlm
IChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcikgewotICAgICAgICBy
ZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CisgICAgICAgIGNvbXBsZXRlTm9u
Y3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtODIyLDcgKzg4OSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdldEFsbFJl
Y29yZHNPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRh
KTsKKyAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9
CiAKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZChFeGVj
U3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQkdldFJl
Y29yZERhdGEmIGdldFJlY29yZERhdGEpCkBAIC04OTAsNyArOTU3LDcgQEAgdm9pZCBJREJUcmFu
c2FjdGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
SURCUmVzdWx0RGEKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZElEKCkpOwogCiAgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3Vs
dFR5cGU6OkVycm9yKSB7Ci0gICAgICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHRE
YXRhKTsKKyAgICAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERh
dGEpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MTAsNyArOTc3LDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgSURCUmVzdWx0RGEKICAgICAgICAgICAgIHJlcXVlc3Quc2V0UmVzdWx0VG9VbmRlZmlu
ZWQoKTsKICAgICB9CiAKLSAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7
CisgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQog
CiBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChFeGVjU3RhdGUm
IHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYgcmFuZ2UpCkBAIC05NjEsNyArMTAyOCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdl
dENvdW50T25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0CiAg
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgp
KTsKIAogICAgIHJlcXVlc3Quc2V0UmVzdWx0KHJlc3VsdERhdGEucmVzdWx0SW50ZWdlcigpKTsK
LSAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CisgICAgY29tcGxldGVO
b25jdXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQogCiBSZWY8SURCUmVxdWVz
dD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwg
SURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdl
KQpAQCAtOTk0LDcgKzEwNjEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVSZWNv
cmRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bAogICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CiAKICAg
ICByZXF1ZXN0LnNldFJlc3VsdFRvVW5kZWZpbmVkKCk7Ci0gICAgcmVxdWVzdC5yZXF1ZXN0Q29t
cGxldGVkKHJlc3VsdERhdGEpOworICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0
LCByZXN1bHREYXRhKTsKIH0KIAogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0Q2xlYXJPYmplY3RTdG9yZShFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2Jq
ZWN0U3RvcmUpCkBAIC0xMDI4LDcgKzEwOTUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRD
bGVhck9iamVjdFN0b3JlT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUgog
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQo
KSk7CiAKICAgICByZXF1ZXN0LnNldFJlc3VsdFRvVW5kZWZpbmVkKCk7Ci0gICAgcmVxdWVzdC5y
ZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOworICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVz
dChyZXF1ZXN0LCByZXN1bHREYXRhKTsKIH0KIAogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0UHV0T3JBZGQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9i
amVjdFN0b3JlLCBJREJLZXkqIGtleSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgSW5k
ZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKQEAgLTEwNzQs
NyArMTE0MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIoSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uCiAgICAgICAgICAgICBSZWZQdHI8
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4gcHJvdGVjdGVkT3BlcmF0aW9uKCZvcGVy
YXRpb24pOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBJREJSZXN1bHREYXRhOjplcnJvcihv
cGVyYXRpb24uaWRlbnRpZmllcigpLCB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgcHJlcGFyaW5nIEJsb2IvRmlsZSBkYXRhIHRvIGJlIHN0
b3JlZCBpbiBvYmplY3Qgc3RvcmUiKSB9KTsKICAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+cG9zdFRhc2soW3Byb3RlY3RlZE9wZXJhdGlvbiA9IFdURk1vdmUocHJvdGVjdGVk
T3BlcmF0aW9uKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgewotICAgICAgICAgICAgICAgIHByb3RlY3RlZE9wZXJhdGlvbi0+Y29tcGxldGVkKHJl
c3VsdCk7CisgICAgICAgICAgICAgICAgcHJvdGVjdGVkT3BlcmF0aW9uLT5kb0NvbXBsZXRlKHJl
c3VsdCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC0x
MDkyLDcgKzExNTksNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpwdXRPckFkZE9uU2VydmVyKElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbgogICAgICAgICAvLyBJbiB0
aGF0IGNhc2UsIHdlIGNhbm5vdCBzdWNjZXNzZnVsbHkgc3RvcmUgdGhpcyByZWNvcmQsIHNvIHdl
IGNhbGxiYWNrIHdpdGggYW4gZXJyb3IuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0
RGF0YTo6ZXJyb3IocHJvdGVjdGVkT3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIHsgSURCRGF0YWJh
c2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBwcmVwYXJpbmcg
QmxvYi9GaWxlIGRhdGEgdG8gYmUgc3RvcmVkIGluIG9iamVjdCBzdG9yZSIpIH0pOwogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgcHJvdGVjdGVkT3BlcmF0aW9uID0gV1RGTW92ZShwcm90ZWN0ZWRPcGVyYXRpb24pLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBwcm90ZWN0ZWRP
cGVyYXRpb24tPmNvbXBsZXRlZChyZXN1bHQpOworICAgICAgICAgICAgcHJvdGVjdGVkT3BlcmF0
aW9uLT5kb0NvbXBsZXRlKHJlc3VsdCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMTEw
Niw3ICsxMTczLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUHV0T3JBZGRPblNlcnZlcihJ
REJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXQKICAgICAgICAgcmVxdWVzdC5z
ZXRSZXN1bHQoKnJlc3VsdCk7CiAgICAgZWxzZQogICAgICAgICByZXF1ZXN0LnNldFJlc3VsdFRv
VW5kZWZpbmVkKCk7Ci0gICAgcmVxdWVzdC5yZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOwor
ICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKIH0KIAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUpCkBAIC0xMTY3LDE1ICsxMjM0LDE3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OmRpZERlbGV0ZUluZGV4T25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEsIHJlc3VsdERhdGEudHlwZSgpID09IElEQlJl
c3VsdFR5cGU6OkRlbGV0ZUluZGV4U3VjY2VzcyB8fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJS
ZXN1bHRUeXBlOjpFcnJvcik7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkRp
ZENvbXBsZXRlKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKK3Zv
aWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50KElEQkNsaWVudDo6
VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKIHsKKyAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50Iik7CisKICAgICBBU1NF
UlQobV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5nZXQob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkg
PT0gJm9wZXJhdGlvbik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9wZXJh
dGlvbi5vcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAu
cmVtb3ZlKG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpOwogCi0gICAgc2NoZWR1bGVPcGVyYXRpb25U
aW1lcigpOworICAgIHNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRpbWVyKCk7CiB9CiAKIHZvaWQg
SURCVHJhbnNhY3Rpb246OmVzdGFibGlzaE9uU2VydmVyKCkKQEAgLTEyMDMsNyArMTI3Miw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRlYWN0aXZhdGUoKQogICAgIGlmIChtX3N0YXRlID09IElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6QWN0aXZlKQogICAgICAgICBtX3N0YXRlID0gSW5k
ZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpJbmFjdGl2ZTsKIAotICAgIHNjaGVkdWxlT3BlcmF0
aW9uVGltZXIoKTsKKyAgICBzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1lcigpOwogfQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkRnJvbVNlcnZlcihjb25zdCBJREJF
cnJvciYgZXJyb3IpCkBAIC0xMjE1LDEyICsxMjg0LDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OmNvbm5lY3Rpb25DbG9zZWRGcm9tU2VydmVyKGNvbnN0IElEQkVycm9yJiBlcnJvcikKICAgICBW
ZWN0b3I8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBvcGVyYXRpb25z
OwogICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLCBvcGVy
YXRpb25zKTsKIAotICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3BlcmF0aW9ucykKLSAgICAg
ICAgb3BlcmF0aW9uLT5jb21wbGV0ZWQoSURCUmVzdWx0RGF0YTo6ZXJyb3Iob3BlcmF0aW9uLT5p
ZGVudGlmaWVyKCksIGVycm9yKSk7CisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBvcGVyYXRp
b25zKSB7CisgICAgICAgIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPSBudWxscHRyOwor
ICAgICAgICBvcGVyYXRpb24tPmRvQ29tcGxldGUoSURCUmVzdWx0RGF0YTo6ZXJyb3Iob3BlcmF0
aW9uLT5pZGVudGlmaWVyKCksIGVycm9yKSk7CisgICAgfQogCiAgICAgY29ubmVjdGlvblByb3h5
KCkuZm9yZ2V0QWN0aXZlT3BlcmF0aW9ucyhvcGVyYXRpb25zKTsKIAotICAgIG1fdHJhbnNhY3Rp
b25PcGVyYXRpb25RdWV1ZS5jbGVhcigpOworICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0
aW9uUXVldWUuY2xlYXIoKTsKICAgICBtX2Fib3J0UXVldWUuY2xlYXIoKTsKICAgICBtX3RyYW5z
YWN0aW9uT3BlcmF0aW9uTWFwLmNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IGZmMThkODkxNTY0NDI1YTJmZmVm
ZDY4ZWE4NGVlOGI3MGQ1NTFlYTQuLmRmMjIzZTEwNDQ3OWI3N2I4MDZlZDJlMGViMWRmOTI3ZmQz
NGY4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaApAQCAtMTM4LDcgKzEzOCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhY3RpdmF0
ZSgpOwogICAgIHZvaWQgZGVhY3RpdmF0ZSgpOwogCi0gICAgdm9pZCBvcGVyYXRpb25EaWRDb21w
bGV0ZShJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJik7CisgICAgdm9pZCBvcGVyYXRp
b25Db21wbGV0ZWRPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiwgSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYpOworICAgIHZvaWQgb3BlcmF0aW9uQ29tcGxldGVkT25DbGllbnQo
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYpOworCisgICAgdm9pZCBmaW5pc2hlZERp
c3BhdGNoRXZlbnRGb3JSZXF1ZXN0KElEQlJlcXVlc3QmKTsKIAogICAgIGJvb2wgaXNGaW5pc2hl
ZE9yRmluaXNoaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkZpbmlzaGVkOyB9CkBA
IC0xNTksNyArMTYyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaEFib3J0T3JDb21taXQo
KTsKIAogICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb24+JiYpOwotICAgIHZvaWQgb3BlcmF0aW9uVGltZXJGaXJlZCgpOworICAg
IHZvaWQgcGVuZGluZ09wZXJhdGlvblRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIGNvbXBsZXRlZE9w
ZXJhdGlvblRpbWVyRmlyZWQoKTsKIAogICAgIHZvaWQgZmlyZU9uQ29tcGxldGUoKTsKICAgICB2
b2lkIGZpcmVPbkFib3J0KCk7CkBAIC0yMTcsNyArMjIxLDExIEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGVzdGFibGlzaE9uU2VydmVyKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9uVGlt
ZXIoKTsKKyAgICB2b2lkIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChJREJSZXF1ZXN0JiwgY29u
c3QgSURCUmVzdWx0RGF0YSYpOworICAgIHZvaWQgY29tcGxldGVDdXJzb3JSZXF1ZXN0KElEQlJl
cXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJik7CisKKyAgICB2b2lkIHNjaGVkdWxlUGVuZGlu
Z09wZXJhdGlvblRpbWVyKCk7CisgICAgdm9pZCBzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRp
bWVyKCk7CiAKICAgICBSZWY8SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAgSURCVHJhbnNh
Y3Rpb25JbmZvIG1faW5mbzsKQEAgLTIyOCwxMiArMjM2LDE0IEBAIHByaXZhdGU6CiAgICAgSURC
RXJyb3IgbV9pZGJFcnJvcjsKICAgICBSZWZQdHI8RE9NRXJyb3I+IG1fZG9tRXJyb3I7CiAKLSAg
ICBUaW1lciBtX29wZXJhdGlvblRpbWVyOworICAgIFRpbWVyIG1fcGVuZGluZ09wZXJhdGlvblRp
bWVyOworICAgIFRpbWVyIG1fY29tcGxldGVkT3BlcmF0aW9uVGltZXI7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFRpbWVyPiBtX2FjdGl2YXRpb25UaW1lcjsKIAogICAgIFJlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiBtX29wZW5EQlJlcXVlc3Q7CiAKLSAgICBEZXF1ZTxSZWZQdHI8SURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZTsKKyAgICBE
ZXF1ZTxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fcGVuZGluZ1Ry
YW5zYWN0aW9uT3BlcmF0aW9uUXVldWU7CisgICAgRGVxdWU8c3RkOjpwYWlyPFJlZlB0cjxJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiwgSURCUmVzdWx0RGF0YT4+IG1fY29tcGxldGVk
T25TZXJ2ZXJRdWV1ZTsKICAgICBEZXF1ZTxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbj4+IG1fYWJvcnRRdWV1ZTsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmll
ciwgUmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBtX3RyYW5zYWN0aW9u
T3BlcmF0aW9uTWFwOwogCkBAIC0yNDIsNiArMjUyLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8SURCT2JqZWN0U3RvcmU+PiBtX2RlbGV0ZWRPYmpl
Y3RTdG9yZXM7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxJREJSZXF1ZXN0Pj4gbV9vcGVuUmVxdWVz
dHM7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3Q7
CiAKICAgICBib29sIG1fY29udGV4dFN0b3BwZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Qcm94eS5jcHAKaW5kZXggODA1ZjMwZThkOWI5NjViNGZjNmRmYTNjMzY4ZDdhNTNlN2Fh
NWQ1ZS4uNGRiNTBjMGI5MWFjMGQyY2NmZGI0ZmVkYWU2MmY1NWM3ZDQzYjlhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Q
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkNvbm5lY3Rpb25Qcm94eS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIElEQkNvbm5lY3Rp
b25Qcm94eTo6Y29tcGxldGVPcGVyYXRpb24oY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0
YSkKICAgICBpZiAoIW9wZXJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgb3BlcmF0aW9u
LT5wZXJmb3JtQ29tcGxldGVPbk9yaWdpblRocmVhZChyZXN1bHREYXRhLCBXVEZNb3ZlKG9wZXJh
dGlvbikpOworICAgIG9wZXJhdGlvbi0+dHJhbnNpdGlvblRvQ29tcGxldGUocmVzdWx0RGF0YSwg
V1RGTW92ZShvcGVyYXRpb24pKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmFib3J0
T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNh
Y3Rpb25PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcAppbmRleCAxNmY3NDc1YjAzN2U2Yjg2ZmE0OGM2
ODMzOTJlZWMwODgzMjY5MGIzLi44ZjM1NDc1MjJiNmRlZmM4MjgxODY1ZTE1NDMzZjVjZGZkMTc0
OTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
VHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKQEAgLTQzLDYgKzQzLDggQEAg
VHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwgSURCUmVxdWUKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSByZXF1
ZXN0LnJlcXVlc3RlZEluZGV4UmVjb3JkVHlwZSgpOwogICAgIGlmIChhdXRvKiBjdXJzb3IgPSBy
ZXF1ZXN0LnBlbmRpbmdDdXJzb3IoKSkKICAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50
aWZpZXIoKSk7CisKKyAgICBtX2lkYlJlcXVlc3QgPSAmcmVxdWVzdDsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSURCQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmluZGV4IGEzNmVhNGE4
MDYwYTFhMDc4ZTU2ZjU1MjRhMGQyYjk5YzljODZiYzkuLjcxYTFlYmFiYjMyMDJiMzlhY2FkZTc4
N2MwNTAwYjlmNzBiMzJiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBAIC02MSwy
NSArNjEsMzEgQEAgcHVibGljOgogICAgICAgICBtX3BlcmZvcm1GdW5jdGlvbiA9IHsgfTsKICAg
ICB9CiAKLSAgICB2b2lkIHBlcmZvcm1Db21wbGV0ZU9uT3JpZ2luVGhyZWFkKGNvbnN0IElEQlJl
c3VsdERhdGEmIGRhdGEsIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBsYXN0UmVmKQor
ICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tcGxldGVPblRoaXNUaHJlYWQoY29uc3QgSURCUmVzdWx0
RGF0YSYgZGF0YSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29yaWdpblRocmVhZElEID09IGN1
cnJlbnRUaHJlYWQoKSk7CisgICAgICAgIG1fdHJhbnNhY3Rpb24tPm9wZXJhdGlvbkNvbXBsZXRl
ZE9uU2VydmVyKGRhdGEsICp0aGlzKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5zaXRpb25Ub0Nv
bXBsZXRlKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEsIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJh
dGlvbj4mJiBsYXN0UmVmKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAogICAgICAgICBpZiAobV9vcmlnaW5UaHJlYWRJRCA9PSBjdXJyZW50VGhyZWFkKCkpCi0gICAg
ICAgICAgICBjb21wbGV0ZWQoZGF0YSk7CisgICAgICAgICAgICB0cmFuc2l0aW9uVG9Db21wbGV0
ZU9uVGhpc1RocmVhZChkYXRhKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtX3RyYW5z
YWN0aW9uLT5wZXJmb3JtQ2FsbGJhY2tPbk9yaWdpblRocmVhZCgqdGhpcywgJlRyYW5zYWN0aW9u
T3BlcmF0aW9uOjpjb21wbGV0ZWQsIGRhdGEpOworICAgICAgICAgICAgbV90cmFuc2FjdGlvbi0+
cGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoKnRoaXMsICZUcmFuc2FjdGlvbk9wZXJhdGlv
bjo6dHJhbnNpdGlvblRvQ29tcGxldGVPblRoaXNUaHJlYWQsIGRhdGEpOwogICAgICAgICAgICAg
bV90cmFuc2FjdGlvbi0+Y2FsbEZ1bmN0aW9uT25PcmlnaW5UaHJlYWQoW2xhc3RSZWYgPSBXVEZN
b3ZlKGxhc3RSZWYpXSgpIHsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgdm9pZCBjb21wbGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKKyAgICB2b2lkIGRv
Q29tcGxldGUoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX29yaWdpblRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCht
X2NvbXBsZXRlRnVuY3Rpb24pOwogICAgICAgICBtX2NvbXBsZXRlRnVuY3Rpb24oZGF0YSk7Ci0g
ICAgICAgIG1fdHJhbnNhY3Rpb24tPm9wZXJhdGlvbkRpZENvbXBsZXRlKCp0aGlzKTsKKyAgICAg
ICAgbV90cmFuc2FjdGlvbi0+b3BlcmF0aW9uQ29tcGxldGVkT25DbGllbnQoKnRoaXMpOwogCiAg
ICAgICAgIC8vIG1fY29tcGxldGVGdW5jdGlvbiBtaWdodCBiZSBob2xkaW5nIHRoZSBsYXN0IHJl
ZiB0byB0aGlzIFRyYW5zYWN0aW9uT3BlcmF0aW9uLAogICAgICAgICAvLyBzbyB3ZSBuZWVkIHRv
IGRvIHRoaXMgdHJpY2sgdG8gbnVsbCBpdCBvdXQgd2l0aG91dCBmaXJzdCBkZXN0cm95aW5nIGl0
LgpAQCAtOTEsNiArOTcsOCBAQCBwdWJsaWM6CiAKICAgICBUaHJlYWRJZGVudGlmaWVyIG9yaWdp
blRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UaHJlYWRJRDsgfQogCisgICAgSURC
UmVxdWVzdCogaWRiUmVxdWVzdCgpIHsgcmV0dXJuIG1faWRiUmVxdWVzdC5nZXQoKTsgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgVHJhbnNhY3Rpb25PcGVyYXRpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCkBAIC0xMTgsNiAr
MTI2LDcgQEAgcHJpdmF0ZToKICAgICBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSBpbmRleFJl
Y29yZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2luZGV4UmVjb3JkVHlwZTsgfQogCiAgICAgVGhy
ZWFkSWRlbnRpZmllciBtX29yaWdpblRocmVhZElEIHsgY3VycmVudFRocmVhZCgpIH07CisgICAg
UmVmUHRyPElEQlJlcXVlc3Q+IG1faWRiUmVxdWVzdDsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDQ2
MWI5YzlmOGMxZTRlZTljNjY4NjkyNTMwY2I4ZDhkOTU2MDAwMGEuLjQyNTQ2ZmI5ZGFhMDQ3ODNm
ZDQ1OTE1MjdjNmMzODdlYWFkZWI3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
Y3BwCkBAIC04MDcsMTEgKzgwNyw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGlkCiAgICAgICAg
IHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiQXR0ZW1wdCB0byBhYm9ydCBhIHRyYW5zYWN0aW9uIHRoYXQgaGFzbid0IGJlZW4gZXN0YWJs
aXNoZWQiKSB9OwogICAgIH0KIAotCi0gICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURC
VHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7Ci0gICAgICAgIEFTU0VSVChtX29yaWdp
bmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSk7CisgICAgaWYgKHRyYW5zYWN0aW9u
LT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlICYmIG1fb3JpZ2lu
YWxEYXRhYmFzZUluZm9CZWZvcmVWZXJzaW9uQ2hhbmdlKQogICAgICAgICBtX2RhdGFiYXNlSW5m
byA9IFdURk1vdmUobV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25DaGFuZ2UpOwot
ICAgIH0KIAogICAgIHJldHVybiB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZTJm
MzRiOTg4NjI1ZTFhN2Y0OTFiOTYxZjg4ZmI5Y2EyNzRlMzEwLi44OWUzZjhjNzc3NThiN2EwNDhk
MmI4MDM3M2U2ODEyNzgzZjcyZWM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTEtMjgg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEluZGV4ZWREQiAy
LjA6IFF1ZXVlIHVwIGNvbXBsZXRlZCByZXF1ZXN0cyBpbiB0aGUgY2xpZW50LCBoYW5kbGUgdGhl
bSBvbmUgYnkgb25lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY1MDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKwor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
c2NoZWR1bGVyLTYuanM6IFRoaXMgdGVzdCBoYWQgYSBidWcgd2hpY2ggd2FzIG1hc2tlZCBieSBw
cmV2aW91c2x5CisgICAgICAgICAgc3luY2hyb25vdXMgYmVoYXZpb3IuIEZpeCB0aGF0IGJ1ZyEK
KwogMjAxNi0xMS0yNyAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZWJhc2VsaW5lIGluc3BlY3Rvci9kb20vZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNG
b3JOb2RlLmh0bWwgZm9yIG1hY09TLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy90cmFuc2FjdGlvbi1zY2hlZHVsZXItNi5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
c2NoZWR1bGVyLTYuanMKaW5kZXggM2M4YTM1MmIxOGZkMGQ1M2RmY2EzODYwNDM1OGE5OTU0NjM3
YzA1Ni4uNGM3MzQ2MThiY2UyMWE2ZjhiYThmZWUyOGY3ZjRiNWFjYzRmOGE2OCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy90cmFuc2Fj
dGlvbi1zY2hlZHVsZXItNi5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXNjaGVkdWxlci02LmpzCkBAIC0zLDYgKzMsMTAg
QEAgSXQgdmVyaWZpZXMgdGhhdCB0aGUgcmVhZC13cml0ZSBkb2Vzbid0IHN0YXJ0IHVudGlsIGJv
dGggcmVhZC1vbmx5cyBoYXZlIGZpbmlzaGUKIAogaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJh
c2UpOwogCitmdW5jdGlvbiBsb2cobXNnKQoreworCWRlYnVnKG1zZyk7Cit9CiAKIGZ1bmN0aW9u
IGRvbmUoKQogewpAQCAtMTMsNyArMTcsNyBAQCB2YXIgZGF0YWJhc2U7CiAKIGZ1bmN0aW9uIHBy
ZXBhcmVEYXRhYmFzZShldmVudCkKIHsKLSAgICBkZWJ1ZygiVXBncmFkZSBuZWVkZWQ6IE9sZCB2
ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50
Lm5ld1ZlcnNpb24pOworICAgIGxvZygiVXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiAr
IGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24p
OwogCiAgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC50cmFuc2FjdGlv
bjsKICAgICBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CkBAIC0yMSwyMiArMjUsMjIg
QEAgZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2ZW50KQogICAgIHZhciByZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUucHV0KCJmb28iLCAiYmFyIik7CiAKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5j
dGlvbihldmVudCkgewotICAgICAgICBkZWJ1ZygicHV0IEZBSUxFRCAtICIgKyBldmVudCk7Cisg
ICAgICAgIGxvZygicHV0IEZBSUxFRCAtICIgKyBldmVudCk7CiAgICAgICAgIGRvbmUoKTsKICAg
ICB9CiAgICAgCiAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVu
dCkgewotICAgICAgICBkZWJ1ZygidmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9ydGVkIik7
CisgICAgICAgIGxvZygidmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9ydGVkIik7CiAgICAg
ICAgIGRvbmUoKTsKICAgICB9CiAKICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGRlYnVnKCJ2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0
aW9uIGNvbXBsZXRlZCIpOworICAgICAgICBsb2coInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24g
Y29tcGxldGVkIik7CiAgICAgICAgIGNvbnRpbnVlVGVzdCgpOwogICAgIH0KIAogICAgIHZlcnNp
b25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgZGVidWco
InZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gZXJyb3InZWQgLSAiICsgZXZlbnQpOworICAgICAg
ICBsb2coInZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gZXJyb3InZWQgLSAiICsgZXZlbnQpOwog
ICAgICAgICBkb25lKCk7CiAgICAgfQogfQpAQCAtNTEsMjYgKzU1LDI2IEBAIGZ1bmN0aW9uIGNv
bnRpbnVlVGVzdCgpCiAgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJheiIsICJm
b28iKTsKIAogICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgZGVidWcoIldyaXRlIGluIHJlYWR3cml0ZSB0cmFuc2FjdGlvbiBzdWNjZWVkZWQiKTsKKyAg
ICAgICAgbG9nKCJXcml0ZSBpbiByZWFkd3JpdGUgdHJhbnNhY3Rpb24gc3VjY2VlZGVkIik7CiAg
ICAgfQogICAgIAogICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAg
ICAgIGRlYnVnKCJXcml0ZSBpbiByZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZGx5IGZh
aWxlZCIpOworICAgICAgICBsb2coIldyaXRlIGluIHJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4
cGVjdGVkbHkgZmFpbGVkIik7CiAgICAgICAgIGRvbmUoKTsKICAgICB9CiAgICAgCiAgICAgdHJh
bnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGRlYnVnKCJyZWFk
d3JpdGUgdHJhbnNhY3Rpb24gZXhwZWN0ZWRseSBhYm9ydGVkIik7CisgICAgICAgIGxvZygicmVh
ZHdyaXRlIHRyYW5zYWN0aW9uIGV4cGVjdGVkbHkgYWJvcnRlZCIpOwogICAgICAgICBkb25lKCk7
CiAgICAgfQogCiAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgICAgIGRlYnVnKCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGVkIik7CisgICAg
ICAgIGxvZygicmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRlZCIpOwogICAgICAgICBkb25l
KCk7CiAgICAgfQogCiAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgICAgIGRlYnVnKCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gZXJyb3InZWQgLSAiICsgZXZl
bnQpOworICAgICAgICBsb2coInJlYWR3cml0ZSB0cmFuc2FjdGlvbiBlcnJvcidlZCAtICIgKyBl
dmVudCk7CiAgICAgICAgIGRvbmUoKTsKICAgICB9CiB9CkBAIC04NCw3ICs4OCw3IEBAIGZ1bmN0
aW9uIHN0YXJ0VHJhbnNhY3Rpb25Mb29wKHRyYW5zYWN0aW9uLCBpc0ZpcnN0VGltZSkKICAgICAK
ICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIGlmIChp
c0ZpcnN0VGltZSkgewotICAgICAgICAgICAgZGVidWcoIlN0YXJ0aW5nIGEgcmVhZG9ubHkgdHJh
bnNhY3Rpb24iKTsKKyAgICAgICAgICAgIGxvZygiU3RhcnRpbmcgYSByZWFkb25seSB0cmFuc2Fj
dGlvbiIpOwogICAgICAgICAgICAgbnVtYmVyT2ZPcGVuVHJhbnNhY3Rpb25zKys7CiAgICAgICAg
IH0KICAgICAgICAgCkBAIC05NSwyNCArOTksMjIgQEAgZnVuY3Rpb24gc3RhcnRUcmFuc2FjdGlv
bkxvb3AodHJhbnNhY3Rpb24sIGlzRmlyc3RUaW1lKQogICAgIH0KIAogICAgIHJlcXVlc3Qub25l
cnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGRlYnVnKCJVbmV4cGVjdGVkIHJlcXVl
c3QgZXJyb3IgLSAiICsgZXZlbnQpOworICAgICAgICBsb2coIlVuZXhwZWN0ZWQgcmVxdWVzdCBl
cnJvciAtICIgKyBldmVudCk7CiAgICAgICAgIGRvbmUoKTsKICAgICB9CiAKICAgICB0cmFuc2Fj
dGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgZGVidWcoIlVuZXhwZWN0
ZWQgdHJhbnNhY3Rpb24gZXJyb3IgLSAiICsgZXZlbnQpOworICAgICAgICBsb2coIlVuZXhwZWN0
ZWQgdHJhbnNhY3Rpb24gZXJyb3IgLSAiICsgZXZlbnQpOwogICAgICAgICBkb25lKCk7CiAgICAg
fQogCiAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAg
IC0tbnVtYmVyT2ZPcGVuVHJhbnNhY3Rpb25zOwotICAgICAgICBkZWJ1ZygiVW5leHBlY3RlZCB0
cmFuc2FjdGlvbiBhYm9ydCAtICIgKyBldmVudCk7CisgICAgICAgIGxvZygiVW5leHBlY3RlZCB0
cmFuc2FjdGlvbiBhYm9ydCAtICIgKyBldmVudCk7CiAgICAgICAgIGRvbmUoKTsKICAgICB9CiAK
ICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
LS1udW1iZXJPZk9wZW5UcmFuc2FjdGlvbnM7Ci0gICAgICAgIGRlYnVnKCJyZWFkb25seSB0cmFu
c2FjdGlvbiBjb21wbGV0ZWQiKTsKKyAgICAgICAgbG9nKCJyZWFkb25seSB0cmFuc2FjdGlvbiBj
b21wbGV0ZWQiKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>