<?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>144211</bug_id>
          
          <creation_ts>2015-04-25 20:28:02 -0700</creation_ts>
          <short_desc>[WebAudio] AudioContext does not remove user-gesture restriction during resume()</short_desc>
          <delta_ts>2015-04-27 14:36:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1088676</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-04-25 20:28:02 -0700</bug_when>
    <thetext>[WebAudio] AudioContext does not remove user-gesture restriction during resume()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088680</commentid>
    <comment_count>1</comment_count>
      <attachid>251668</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-04-25 20:41:12 -0700</bug_when>
    <thetext>Created attachment 251668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088712</commentid>
    <comment_count>2</comment_count>
      <attachid>251675</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-04-25 23:15:08 -0700</bug_when>
    <thetext>Created attachment 251675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089023</commentid>
    <comment_count>3</comment_count>
      <attachid>251742</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-04-27 08:13:22 -0700</bug_when>
    <thetext>Created attachment 251742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089198</commentid>
    <comment_count>4</comment_count>
      <attachid>251742</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-27 14:36:16 -0700</bug_when>
    <thetext>Comment on attachment 251742
Patch

Clearing flags on attachment: 251742

Committed r183424: &lt;http://trac.webkit.org/changeset/183424&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089199</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-27 14:36:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251668</attachid>
            <date>2015-04-25 20:41:12 -0700</date>
            <delta_ts>2015-04-25 23:15:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144211-20150425204005.patch</filename>
            <type>text/plain</type>
            <size>24481</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA3NzY1NTU2YzZiNzk5
YjQ4OGU3NzBmYTE4OGNlZDQ4N2ZlMWFiMi4uOTYyMzA4ZjRhYzRmMzY1MTNjNTRlNWUxNDFmOGY3
N2JhNWJkZjc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE1LTA0LTI1ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdWRpb10gQXVkaW9D
b250ZXh0IGRvZXMgbm90IHJlbW92ZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gZHVyaW5nIHJl
c3VtZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDQyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0czogd2ViYXVkaW8vYXVkaW9jb250ZXh0LXJlc3RyaWN0aW9uLWF1ZGlvYnVmZmVyc291cmNl
bm9kZS1zdGFydC5odG1sCisgICAgICAgICAgICAgICB3ZWJhdWRpby9hdWRpb2NvbnRleHQtcmVz
dHJpY3Rpb24uaHRtbAorCisgICAgICAgIEJlZm9yZSB0aGUgaW50cm9kdWN0aW9uIG9mIHJlc3Vt
ZSgpLCBzdXNwZW5kKCksIGFuZCBzdG9wKCksIEF1ZGlvQ29udGV4dHMgd2hpY2ggcmVxdWlyZWQK
KyAgICAgICAgYSB1c2VyLWdlc3R1cmUgd291bGQgc3RhcnQgbm9ybWFsbHksIGJ1dCB3b3VsZCBl
ZmZlY3RpdmVseSBtdXRlIHRoZWlyIG91dHB1dHMuIE5vdyB0aGF0CisgICAgICAgIHRoZSBBdWRp
b0NvbnRleHQncyBzdGF0ZSBwcm9wZXJ0eSBpcyBleHBvc2VkIHRvIEphdmFTY3JpcHQsIHRoZSBB
dWRpb0NvbnRleHQgc2hvdWxkIHN0YXkKKyAgICAgICAgaW4gdGhlICJzdXNwZW5kZWQiIHN0YXRl
IHVudGlsIHRoZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gaXMgbGlmdGVkLgorCisgICAgICAg
IEFkZCBhIG5ldyBtZXRob2QsIHdpbGxCZWdpblBsYXliYWNrKCkgd2hpY2ggY2hlY2tzIGFuZCBw
b3RlbnRpYWxseSBjbGVhcnMgdGhlIGNvbnRleHQncworICAgICAgICBiZWhhdmlvciByZXN0cmlj
dGlvbnMgYmVmb3JlIGNoZWNraW5nIHdpdGggdGhlIE1lZGlhU2Vzc2lvbi4gQ2FsbCB0aGlzIG5l
dyB3aWxsQmVnaW5QbGF5YmFjaygpCisgICAgICAgIG1ldGhvZCB3aGVuIHRoZSBzdGF0ZSB3b3Vs
ZCB0cmFuc2l0aW9uIHRvICJydW5uaW5nIi4KKworICAgICAgICBCZWNhdXNlIHRoZXkgbWF5IGJl
IGNhbGxlZCBiZWZvcmUgYW55IG5vZGVzIGFyZSBjcmVhdGVkLCBtYWtlIHN1cmUgdG8gY2FsbCBs
YXp5SW5pdGlhbGl6ZSgpCisgICAgICAgIGZyb20gd2l0aGluIHRoZSBKUy1leHBvc2VkIHJlc3Vt
ZVBsYXliYWNrKCksIHN1c3BlbmRQbGF5YmFjaygpLCBhbmQgc3RvcFBsYXliYWNrKCkgbWV0aG9k
cy4KKworICAgICAgICBJbnN0ZWFkIG9mIGNsZWFyaW5nIHRoZSBiZWhhdmlvciByZXN0cmljdGlv
bnMgZGlyZWN0bHksIHNjaGVkdWxlZCBBdWRpb05vZGVzIHNob3VsZCBpbnN0ZWFkCisgICAgICAg
IGNhbGwgYSBuZXcgbWV0aG9kIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpLiBCZWNhdXNlIGV4aXN0
aW5nIHNpdGVzIHdpbGwgY2FsbCBBdWRpb05vZGUuc3RhcnQoKQorICAgICAgICBpbnNpZGUgYSB1
c2VyLWdlc3R1cmUgaGFuZGxlciB0byBjbGVhciB0aGUgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9u
LCBjYWxsIHN0YXJ0UmVuZGVyaW5nKCkKKyAgICAgICAgZnJvbSBub2RlV2lsbEJlZ2luUGxheWJh
Y2soKS4gQnV0IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBBdWRpb05vZGUuc3RhcnQoKSB0byByZXN1
bWUgcGxheWJhY2sKKyAgICAgICAgdW5jb25kaXRpb25hbGx5LCBvbmx5IGRvIHNvIHdoZW4gdGhl
IHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBpcyBzZXQuCisKKyAgICAgICAgTm93IHRoYXQgYW4g
QXVkaW9Db250ZXh0IHdpbGwgbm90IHRyYW5zaXRpb24gdG8gInJ1bm5pbmciIHN0YXRlIHdpdGhv
dXQgYSB1c2VyLWdlc3R1cmUgKGlmCisgICAgICAgIHRoYXQgcmVzdHJpY3Rpb24gaXMgc2V0KSwg
dGhlcmUncyBubyByZWFzb24gdG8gY2hlY2sgZm9yIHRoYXQgcmVzdHJpY3Rpb24gZnJvbSBpbnNp
ZGUKKyAgICAgICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUuCisKKyAgICAgICAgQWRkIHNvbWUgaW50
ZXJuYWwgbWV0aG9kcyB0byBzZXQgYW5kIGNsZWFyIEF1ZGlvQ29udGV4dCBCZWhhdmlvclJlc3Ry
aWN0aW9ucyBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVm
ZmVyU291cmNlTm9kZTo6c3RhcnRQbGF5aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om5vZGVX
aWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OndpbGxC
ZWdpblBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6d2lsbFBhdXNl
UGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdGFydFJlbmRlcmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmRDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6cmVzdW1lQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNsb3NlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Nv
bnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpiZWhhdmlvclJl
c3RyaWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnVzZXJHZXN0dXJl
UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6
cGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OnJlbmRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlOjpzdGFydCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaWRsOgorCiAyMDE1LTA0LTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBhIHNldHRpbmcgJiByZXN0cmljdGlvbiB3aGljaCBwcmV2ZW50cyBu
b24taW50ZXJhY3RpdnRlIHBsYXliYWNrIG9mIGF1ZGlibGUgbWVkaWEgZWxlbWVudHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291
cmNlTm9kZS5jcHAKaW5kZXggMmY3ODFiZGYyMDYzNDQ3MjFkMzM3YmQzODNjY2JmZThjZWM2Y2Ey
ZS4uNjI3YjAxZDg0NjBjODM2ZDg0NDJiMjRlZjVmNTAyZWUxNzExODVhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmNwcApAQCAtNDY5LDggKzQ2OSw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpz
dGFydFBsYXlpbmcoQnVmZmVyUGxheWJhY2tNb2RlIHBsYXliYWNrTW9kZSwgZG91YmxlCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChTY3JpcHRDb250cm9sbGVyOjpw
cm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKLSAgICAgICAgY29udGV4dCgpLT5yZW1vdmVCZWhhdmlv
clJlc3RyaWN0aW9uKEF1ZGlvQ29udGV4dDo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFy
dFJlc3RyaWN0aW9uKTsKKyAgICBjb250ZXh0KCktPm5vZGVXaWxsQmVnaW5QbGF5YmFjaygpOwog
CiAgICAgaWYgKG1fcGxheWJhY2tTdGF0ZSAhPSBVTlNDSEVEVUxFRF9TVEFURSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDdiM2Q4MGFmNmFmZjU1YzgwZmE4ZWQwY2Jj
NzU1MzY5YmQ2MzMxYTUuLmQyM2I1MTBmZTUyYTM4MTE2ODNmZDdjMWNjOGUyOTEyZjFmYTAxNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAKQEAgLTk4NSwxOCArOTg1LDY0IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEF1ZGlvQ29u
dGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faXNTdG9w
U2NoZWR1bGVkID8gMCA6IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwogfQogCi12b2lkIEF1ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcoKQordm9pZCBBdWRpb0Nv
bnRleHQ6Om5vZGVXaWxsQmVnaW5QbGF5YmFjaygpCiB7Ci0gICAgaWYgKFNjcmlwdENvbnRyb2xs
ZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQorICAgIC8vIENhbGxlZCBieSBzY2hlZHVsZWQg
QXVkaW9Ob2RlcyB3aGVuIGNsaWVudHMgc2NoZWR1bGUgdGhlaXIgc3RhcnQgdGltZXMuCisgICAg
Ly8gUHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZiBzdXNwZW5kKCksIHJlc3VtZSgpLCBhbmQg
c3RvcCgpLCBzdGFydGluZworICAgIC8vIGEgc2NoZWR1bGVkIEF1ZGlvTm9kZSB3b3VsZCByZW1v
dmUgdGhlIHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiwgaWYgcHJlc2VudCwKKyAgICAvLyBhbmQg
d291bGQgdGh1cyB1bm11dGUgdGhlIGNvbnRleHQuIE5vdyB0aGF0IEF1ZGlvQ29udGV4dCBzdGF5
cyBpbiB0aGUKKyAgICAvLyAic3VzcGVuZGVkIiBzdGF0ZSBpZiBhIHVzZXItZ2VzdHVyZSByZXN0
cmljdGlvbiBpcyBwcmVzZW50LCBzdGFydGluZyBhCisgICAgLy8gc2NoZWR1bGUgQXVkaW9Ob2Rl
IHNob3VsZCBzZXQgdGhlIHN0YXRlIHRvICJydW5uaW5nIiwgYnV0IG9ubHkgaWYgdGhlCisgICAg
Ly8gdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9uIGlzIHNldC4KKyAgICBpZiAodXNlckdlc3R1cmVS
ZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkKKyAgICAgICAgc3RhcnRSZW5kZXJpbmcoKTsKK30KKwor
Ym9vbCBBdWRpb0NvbnRleHQ6OndpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICBpZiAodXNlckdl
c3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBpZiAoIVNjcmlwdENvbnRy
b2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEF1ZGlvQ29udGV4dDo6UmVxdWly
ZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CiAKICAgICBpZiAo
cGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgewogICAgICAgICBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3Rh
cnRNZWRpYSgpKQorICAgICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7
CiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQXVk
aW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJlbW92ZUJlaGF2
aW9yUmVzdHJpY3Rpb24oQXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0
YXJ0UmVzdHJpY3Rpb24pOwogICAgIH0KKworICAgIHJldHVybiBtX21lZGlhU2Vzc2lvbi0+Y2xp
ZW50V2lsbEJlZ2luUGxheWJhY2soKTsKK30KKworYm9vbCBBdWRpb0NvbnRleHQ6OndpbGxQYXVz
ZVBsYXliYWNrKCkKK3sKKyAgICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQo
KSkgeworICAgICAgICBpZiAoIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZW1vdmVCZWhhdmlvclJl
c3RyaWN0aW9uKEF1ZGlvQ29udGV4dDo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJl
c3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICBpZiAocGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlv
U3RhcnQoKSkgeworICAgICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAg
ICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgICAgICAgICBk
b2N1bWVudCgpLT5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlv
bihBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlv
bik7CisgICAgfQorICAgIAorICAgIHJldHVybiBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbFBh
dXNlUGxheWJhY2soKTsKK30KKwordm9pZCBBdWRpb0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKCkK
K3sKKyAgICBpZiAoIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKwogICAg
IGRlc3RpbmF0aW9uKCktPnN0YXJ0UmVuZGVyaW5nKCk7CiAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1
bm5pbmcpOwogfQpAQCAtMTA3Nyw5ICsxMTIzLDExIEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdXNw
ZW5kQ29udGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrLCBzdGQ6OmZ1
CiAKICAgICBhZGRSZWFjdGlvbihTdGF0ZTo6U3VzcGVuZGVkLCBzdWNjZXNzQ2FsbGJhY2spOwog
Ci0gICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKSkKKyAg
ICBpZiAoIXdpbGxQYXVzZVBsYXliYWNrKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGxhenlJ
bml0aWFsaXplKCk7CisKICAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBzdHJvbmdUaGlzKHRoaXMp
OwogICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFtzdHJvbmdUaGlzXSB7CiAgICAgICAg
IHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOwpAQCAtMTEwOCw5ICsxMTU2
LDExIEBAIHZvaWQgQXVkaW9Db250ZXh0OjpyZXN1bWVDb250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiBzdWNjZXNzQ2FsbGJhY2ssIHN0ZDo6ZnVuCiAKICAgICBhZGRSZWFjdGlvbihTdGF0ZTo6
UnVubmluZywgc3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIGlmICghbV9tZWRpYVNlc3Npb24tPmNs
aWVudFdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgaWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCiAgICAgUmVmUHRyPEF1
ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVz
dW1lKFtzdHJvbmdUaGlzXSB7CiAgICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRlOjpS
dW5uaW5nKTsKQEAgLTExMzMsNiArMTE4Myw4IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpjbG9zZUNv
bnRleHQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxsYmFjaywgc3RkOjpmdW5jCiAK
ICAgICBhZGRSZWFjdGlvbihTdGF0ZTo6Q2xvc2VkLCBzdWNjZXNzQ2FsbGJhY2spOwogCisgICAg
bGF6eUluaXRpYWxpemUoKTsKKwogICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXMo
dGhpcyk7CiAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPmNsb3NlKFtzdHJvbmdUaGlzLCBzdWNjZXNz
Q2FsbGJhY2tdIHsKICAgICAgICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7
CkBAIC0xMTUyLDYgKzEyMDQsOCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZFBsYXliYWNr
KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGxhenlJbml0aWFsaXplKCk7CisKICAg
ICBSZWZQdHI8QXVkaW9Db250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIG1fZGVzdGluYXRp
b25Ob2RlLT5zdXNwZW5kKFtzdHJvbmdUaGlzXSB7CiAgICAgICAgIGJvb2wgaW50ZXJydXB0ZWQg
PSBzdHJvbmdUaGlzLT5tX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBNZWRpYVNlc3Npb246Oklu
dGVycnVwdGVkOwpAQCAtMTE2OSw2ICsxMjIzLDExIEBAIHZvaWQgQXVkaW9Db250ZXh0OjptYXlS
ZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIGlmICghd2lsbEJlZ2luUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bGF6eUluaXRpYWxpemUoKTsKKwogICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXMo
dGhpcyk7CiAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbc3Ryb25nVGhpc10gewogICAg
ICAgICBzdHJvbmdUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA4OTQwNTIwOTI5MDNk
NTg1Y2NmMzhiMTZlNDE3YWNlMTExZTZhZGE5Li4xZmEwNWYzZjZhODcwZmY1NTU2ZTIwMzMzMjc5
YTJkYmNjN2E0MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmgKQEAgLTI1MSwxNCArMjUxLDE0IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHR5
cGVkZWYgdW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7CiAKLSAgICBib29sIHVzZXJHZXN0
dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGlvbnMg
JiBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247IH0KLSAgICBib29s
IHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN0
cmljdGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247IH0K
LQorICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIGJlaGF2aW9yUmVzdHJpY3Rpb25zKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXN0cmljdGlvbnM7IH0KICAgICB2b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rp
b24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgfD0g
cmVzdHJpY3Rpb247IH0KICAgICB2b2lkIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZp
b3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0
aW9uOyB9CiAKICAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCk7CiAKKyAgICB2b2lk
IG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpOworCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQXVk
aW9Db250ZXh0KERvY3VtZW50Jik7CiAgICAgQXVkaW9Db250ZXh0KERvY3VtZW50JiwgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVS
YXRlKTsKQEAgLTI3MSw2ICsyNzEsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxhenlJbml0aWFs
aXplKCk7CiAgICAgdm9pZCB1bmluaXRpYWxpemUoKTsKIAorICAgIGJvb2wgd2lsbEJlZ2luUGxh
eWJhY2soKTsKKyAgICBib29sIHdpbGxQYXVzZVBsYXliYWNrKCk7CisKKyAgICBib29sIHVzZXJH
ZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGlv
bnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247IH0KKyAgICBi
b29sIHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247
IH0KKwogICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVw
dGVkLCBDbG9zZWQgfTsKICAgICB2b2lkIHNldFN0YXRlKFN0YXRlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cAppbmRleCBhZmVhNDE2MjhhMWZhNzBjYWQwYzIwZjczZGViMjk5YTFlNGQyNWU5Li42NjQ4NmUx
MjQ0NTc2OWY5MDdjZTJiZDdkOGVkYmY3NDUzZDM0NGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAt
NjgsMTggKzY4LDYgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKEF1ZGlvQnVz
KiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChjb250ZXh0KCktPnVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0
YXJ0KCkpIHsKLSAgICAgICAgZGVzdGluYXRpb25CdXMtPnplcm8oKTsKLSAgICAgICAgc2V0SXNT
aWxlbnQodHJ1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoY29udGV4dCgp
LT5wYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7Ci0gICAgICAgIGRlc3RpbmF0
aW9uQnVzLT56ZXJvKCk7Ci0gICAgICAgIHNldElzU2lsZW50KHRydWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCiAgICAgLy8gTGV0IHRoZSBjb250ZXh0IHRha2UgY2FyZSBvZiBhbnkgYnVz
aW5lc3MgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCiAgICAgY29udGV4dCgp
LT5oYW5kbGVQcmVSZW5kZXJUYXNrcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKaW5kZXgg
ZmU2YTM0ZDFhNDdhYzU3OTgzZDAxMmJmZTM4M2QwZWU1OGE5MWU1ZC4uNzIzYjk4OGQ5NGVhMThh
OWU0ODgwYTM0NmRkNTllMzE1ZmQ0NTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcApAQCAt
MTQ2LDggKzE0Niw3IEBAIHZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpzdGFydChkb3Vi
bGUgd2hlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAotICAgIGlmIChTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkK
LSAgICAgICAgY29udGV4dCgpLT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEF1ZGlvQ29udGV4
dDo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICBjb250
ZXh0KCktPm5vZGVXaWxsQmVnaW5QbGF5YmFjaygpOwogCiAgICAgaWYgKG1fcGxheWJhY2tTdGF0
ZSAhPSBVTlNDSEVEVUxFRF9TVEFURSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDFiYTU5ZmI2NjdlM2NhYjdm
MDM3MDdiMDUwMjFkZWVjYmJiNTM1ZmEuLmVlN2Y2NDk4NmRhZmM2YWI5NDExMDc3Yzg0OThhNjc5
ZGJlMDliNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQW5pbWF0aW9uQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCisjaW5jbHVk
ZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5o
IgpAQCAtMjYyOSw2ICsyNjMwLDMzIEBAIGJvb2wgSW50ZXJuYWxzOjplbGVtZW50SXNCbG9ja2lu
Z0Rpc3BsYXlTbGVlcChFbGVtZW50KiBlbGVtZW50KSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxF
KFZJREVPKQogCisjaWYgRU5BQkxFKFdFQl9BVURJTykKK3ZvaWQgSW50ZXJuYWxzOjpzZXRBdWRp
b0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcg
JnJlc3RyaWN0aW9uc1N0cmluZywgRXhjZXB0aW9uQ29kZSAmZWMpCit7CisgICAgaWYgKCFjb250
ZXh0KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQXVkaW9Db250ZXh0OjpCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmlj
dGlvbnMgPSBjb250ZXh0LT5iZWhhdmlvclJlc3RyaWN0aW9ucygpOworICAgIGNvbnRleHQtPnJl
bW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsKKworICAgIHJlc3RyaWN0aW9u
cyA9IEhUTUxNZWRpYVNlc3Npb246Ok5vUmVzdHJpY3Rpb25zOworCisgICAgVmVjdG9yPFN0cmlu
Zz4gcmVzdHJpY3Rpb25zQXJyYXk7CisgICAgcmVzdHJpY3Rpb25zU3RyaW5nLnNwbGl0KCcsJywg
ZmFsc2UsIHJlc3RyaWN0aW9uc0FycmF5KTsKKyAgICBmb3IgKGF1dG8mIHJlc3RyaWN0aW9uU3Ry
aW5nIDogcmVzdHJpY3Rpb25zQXJyYXkpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHJlc3RyaWN0aW9uU3RyaW5nLCAiTm9SZXN0cmljdGlvbnMiKSkKKyAgICAgICAgICAgIHJlc3Ry
aWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6Ok5vUmVzdHJpY3Rpb25zOworICAgICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJSZXF1aXJlVXNlckdlc3R1cmVGb3JB
dWRpb1N0YXJ0IikpCisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gQXVkaW9Db250ZXh0OjpS
ZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247CisgICAgICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShyZXN0cmljdGlvblN0cmluZywgIlJlcXVpcmVQYWdlQ29uc2VudEZv
ckF1ZGlvU3RhcnQiKSkKKyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6
OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKKyAgICB9CisgICAg
Y29udGV4dC0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihyZXN0cmljdGlvbnMpOworfQorI2VuZGlm
CisKIHZvaWQgSW50ZXJuYWxzOjpzaW11bGF0ZVN5c3RlbVNsZWVwKCkgY29uc3QKIHsKICNpZiBF
TkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAyOWM2MzkyNDAx
ODYwZTYwMWU3Y2Q5NmNkYTc5YTFkMjA0MGNhMDVkLi4wNDYyNWZlNjQ2YzAyYzc3ZmVhMDJkMTFk
NjAyYWJmNzRmM2U3NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQxLDYg
KzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBdWRpb0NvbnRleHQ7CiBj
bGFzcyBDbGllbnRSZWN0OwogY2xhc3MgQ2xpZW50UmVjdExpc3Q7CiBjbGFzcyBET01TdHJpbmdM
aXN0OwpAQCAtMzc0LDYgKzM3NSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbGVtZW50SXNCbG9j
a2luZ0Rpc3BsYXlTbGVlcChFbGVtZW50KikgY29uc3Q7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShX
RUJfQVVESU8pCisgICAgdm9pZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiByZXN0cmljdGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsKKyNlbmRp
ZgorCiAgICAgdm9pZCBzaW11bGF0ZVN5c3RlbVNsZWVwKCkgY29uc3Q7CiAgICAgdm9pZCBzaW11
bGF0ZVN5c3RlbVdha2UoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CmluZGV4IDljZmNiOGM0NTlmOWU5ZDVkNDExMzVlOWE0NjBiM2FkYWM5YmZmMjguLmIyNDQzYTY0
MWQ1NmQyMjA5MTgyNmVmZGZkYmYyNDNlZWVhNWFjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKQEAgLTMzNyw2ICszMzcsNyBAQCBlbnVtIFJlc291cmNlTG9hZFByaW9yaXR5
IHsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJCYWNr
Z3JvdW5kKCk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQg
c2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUsIERPTVN0cmlu
ZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25hbD1WSURFTywgUmFpc2VzRXhjZXB0aW9u
XSB2b2lkIHNldE1lZGlhRWxlbWVudFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50IGVsZW1l
bnQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOworICAgIFtDb25kaXRpb25hbD1XRUJfQVVESU8s
IFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9D
b250ZXh0IGNvbnRleHQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25h
bD1WSURFTywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChE
T01TdHJpbmcgY29tbWFuZCk7CiAgICAgCiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lkIHNp
bXVsYXRlU3lzdGVtU2xlZXAoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxOTg3NzBmOGEzMWM0MWI2Y2QzOTNjYWRlZTdj
OTU1ZWM1MjkzZjNiLi40MzRlMjE1NWUwZDdhMjY4ZDg5NmY3YjgyMDgxMTVkNzYwYTkyODM1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDQtMjUgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1ZGlvXSBBdWRpb0NvbnRleHQgZG9lcyBub3QgcmVt
b3ZlIHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBkdXJpbmcgcmVzdW1lKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDIxMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViYXVkaW8vYXVkaW9jb250
ZXh0LXJlc3RyaWN0aW9uLWF1ZGlvYnVmZmVyc291cmNlbm9kZS1zdGFydC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi1hdWRp
b2J1ZmZlcnNvdXJjZW5vZGUtc3RhcnQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViYXVkaW8v
YXVkaW9jb250ZXh0LXJlc3RyaWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViYXVkaW8vYXVkaW9jb250ZXh0LXJlc3RyaWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHdlYmF1ZGlvL3Jlc291cmNlcy9hdWRpby10ZXN0aW5nLmpzOgorICAgICAgICAocnVuV2l0aEtl
eURvd24pOgorCiAyMDE1LTA0LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFtXSzJdIENvb2tpZXMgc2V0IGR1cmluZyBtZWRpYSBsb2FkaW5nIGFyZSBub3Qg
YWRkZWQgdG8gY29va2llIHN0b3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9h
dWRpb2NvbnRleHQtcmVzdHJpY3Rpb24tYXVkaW9idWZmZXJzb3VyY2Vub2RlLXN0YXJ0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi1h
dWRpb2J1ZmZlcnNvdXJjZW5vZGUtc3RhcnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmNjBm
NjYxOTljYWIwNzFmNWRmZTNjZDdlOTRhOTdjZGZmOTM5ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtcmVzdHJpY3Rpb24tYXVkaW9idWZmZXJz
b3VyY2Vub2RlLXN0YXJ0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitCYXNpYyB0ZXN0
cyBmb3IgQXVkaW9Ob2RlIEFQSS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNT
IGNvbnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKK25vZGUuY29ubmVjdChjb250ZXh0LmRlc3Rp
bmF0aW9uKQorUEFTUyBjb250ZXh0LnN0YXRlIGlzICJzdXNwZW5kZWQiCitDYWxsaW5nIGNvbnRl
eHQucmVzdW1lKCkgd2l0aG91dCBhIHVzZXIgZ2VzdHVyZQorV2FpdCBmb3IgMTAwbXMKK0NhbGxp
bmcgbm9kZS5zdGFydCgpIHdpdGggYSB1c2VyIGdlc3R1cmUKK1BBU1MgY29udGV4dC5yZXN1bWUo
KSAod2l0aG91dCBhIHVzZXIgZ2VzdHVyZSkgcHJvbWlzZSByZXNvbHZlZAorUEFTUyBjb250ZXh0
LnN0YXRlIGlzICJydW5uaW5nIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29u
dGV4dC1yZXN0cmljdGlvbi1hdWRpb2J1ZmZlcnNvdXJjZW5vZGUtc3RhcnQuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi1hdWRpb2J1ZmZlcnNvdXJj
ZW5vZGUtc3RhcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjFkZmNjOTFhOGM2NmEwODdiZWMzMTFhZjkz
MGRhMmUzNmFjNWEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVk
aW9jb250ZXh0LXJlc3RyaWN0aW9uLWF1ZGlvYnVmZmVyc291cmNlbm9kZS1zdGFydC5odG1sCkBA
IC0wLDAgKzEsNjkgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignQmFzaWMg
dGVzdHMgZm9yIEF1ZGlvTm9kZSBBUEkuJyk7CisKK3ZhciBjb250ZXh0ID0gbnVsbDsKK3ZhciBu
b2RlID0gbnVsbDsKK3ZhciBjYWxsZWRSZXN1bWVXaXRoVXNlckdlc3R1cmUgPSBmYWxzZTsKKwor
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIH0KKworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
IGNvbnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250ZXh0KCk7CisKKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhj
b250ZXh0LCAnUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydCcpOworCisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuc3RhdGUnLCAnInN1c3BlbmRlZCInKTsKKworICAgIG5vZGUgPSBjb250ZXh0
LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworICAgIGV2YWxBbmRMb2coJ25vZGUuY29ubmVjdChjb250
ZXh0LmRlc3RpbmF0aW9uKScpOworCisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInN1
c3BlbmRlZCInKTsKKworICAgIGRlYnVnKCdDYWxsaW5nIGNvbnRleHQucmVzdW1lKCkgd2l0aG91
dCBhIHVzZXIgZ2VzdHVyZScpOworICAgIGNvbnRleHQucmVzdW1lKCkudGhlbihub1VzZXJHZXN0
dXJlUmVzdW1lU3VjY2VlZGVkLCBub1VzZXJHZXN0dXJlUmVzdW1lRmFpbGVkKTsKKworICAgIGRl
YnVnKCdXYWl0IGZvciAxMDBtcycpOworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eworICAgICAgICBydW5XaXRoS2V5RG93bihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRlYnVn
KCdDYWxsaW5nIG5vZGUuc3RhcnQoKSB3aXRoIGEgdXNlciBnZXN0dXJlJyk7CisgICAgICAgICAg
ICBub2RlLnN0YXJ0KCk7CisgICAgICAgIH0pOworICAgIH0sIDEwMCk7Cit9CisKK2Z1bmN0aW9u
IG5vVXNlckdlc3R1cmVSZXN1bWVGYWlsZWQoKSB7CisgICAgdGVzdEZhaWxlZCgnY29udGV4dC5y
ZXN1bWUoKSAod2l0aG91dCBhIHVzZXIgZ2VzdHVyZSkgcHJvbWlzZSByZWplY3RlZCcpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBub1VzZXJHZXN0dXJlUmVzdW1lU3VjY2Vl
ZGVkKCkgeworICAgIHRlc3RQYXNzZWQoJ2NvbnRleHQucmVzdW1lKCkgKHdpdGhvdXQgYSB1c2Vy
IGdlc3R1cmUpIHByb21pc2UgcmVzb2x2ZWQnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0
ZScsICcicnVubmluZyInKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOwor
Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vYXVkaW9jb250ZXh0LXJlc3RyaWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWM0ZDZmZGMyMDdjMjNhMmU5Yjk0Y2Y5ZmQ1MDkzMTgxNzBiNWE4OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorQmFzaWMgdGVzdHMgZm9yIEF1ZGlvTm9kZSBBUEku
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBjb250ZXh0LnN0YXRlIGlzICJz
dXNwZW5kZWQiCitub2RlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbikKK1BBU1MgY29udGV4
dC5zdGF0ZSBpcyAic3VzcGVuZGVkIgorQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgpIHdpdGhvdXQg
YSB1c2VyIGdlc3R1cmUKK1dhaXQgZm9yIDEwMG1zCitDYWxsaW5nIGNvbnRleHQucmVzdW1lKCkg
d2l0aCBhIHVzZXIgZ2VzdHVyZQorUEFTUyBjb250ZXh0LnJlc3VtZSgpICh3aXRob3V0IGEgdXNl
ciBnZXN0dXJlKSBwcm9taXNlIHJlc29sdmVkCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInJ1bm5p
bmciCitQQVNTIGNvbnRleHQucmVzdW1lKCkgKHdpdGggYSB1c2VyIGdlc3R1cmUpIHByb21pc2Ug
cmVzb2x2ZWQKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAicnVubmluZyIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtcmVzdHJpY3Rpb24uaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjZjFj
ZjJmZDY3OTZhYmVlNGIxZjQ0ZjA0YTQzNjAxYzNjYmM2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtcmVzdHJpY3Rpb24uaHRtbApAQCAtMCww
ICsxLDg1IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ0Jhc2ljIHRlc3Rz
IGZvciBBdWRpb05vZGUgQVBJLicpOworCit2YXIgY29udGV4dCA9IG51bGw7Cit2YXIgbm9kZSA9
IG51bGw7Cit2YXIgY2FsbGVkUmVzdW1lV2l0aFVzZXJHZXN0dXJlID0gZmFsc2U7CisKK2Z1bmN0
aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB9CisKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb250
ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgpOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgIGludGVybmFscy5zZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoY29udGV4
dCwgJ1JlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnQnKTsKKworICAgIHNob3VsZEJlKCdj
b250ZXh0LnN0YXRlJywgJyJzdXNwZW5kZWQiJyk7CisKKyAgICBub2RlID0gY29udGV4dC5jcmVh
dGVCdWZmZXJTb3VyY2UoKTsKKyAgICBldmFsQW5kTG9nKCdub2RlLmNvbm5lY3QoY29udGV4dC5k
ZXN0aW5hdGlvbiknKTsKKworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJzdXNwZW5k
ZWQiJyk7CisKKyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgpIHdpdGhvdXQgYSB1
c2VyIGdlc3R1cmUnKTsKKyAgICBjb250ZXh0LnJlc3VtZSgpLnRoZW4obm9Vc2VyR2VzdHVyZVJl
c3VtZVN1Y2NlZWRlZCwgbm9Vc2VyR2VzdHVyZVJlc3VtZUZhaWxlZCk7CisKKyAgICBkZWJ1Zygn
V2FpdCBmb3IgMTAwbXMnKTsKKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkZWJ1ZygnQ2Fs
bGluZyBjb250ZXh0LnJlc3VtZSgpIHdpdGggYSB1c2VyIGdlc3R1cmUnKTsKKyAgICAgICAgICAg
IGNvbnRleHQucmVzdW1lKCkudGhlbihyZXN1bWVTdWNjZWVkZWQsIHJlc3VtZUZhaWxlZCk7Cisg
ICAgICAgICAgICBjYWxsZWRSZXN1bWVXaXRoVXNlckdlc3R1cmUgPSB0cnVlOworICAgICAgICB9
KTsKKyAgICB9LCAxMDApOworfQorCitmdW5jdGlvbiBub1VzZXJHZXN0dXJlUmVzdW1lRmFpbGVk
KCkgeworICAgIHRlc3RGYWlsZWQoJ2NvbnRleHQucmVzdW1lKCkgKHdpdGhvdXQgYSB1c2VyIGdl
c3R1cmUpIHByb21pc2UgcmVqZWN0ZWQnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVu
Y3Rpb24gbm9Vc2VyR2VzdHVyZVJlc3VtZVN1Y2NlZWRlZCgpIHsKKyAgICBpZiAoIWNhbGxlZFJl
c3VtZVdpdGhVc2VyR2VzdHVyZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCdjb250ZXh0LnJlc3Vt
ZSgpICh3aXRob3V0IGEgdXNlciBnZXN0dXJlKSBzdWNlZWRlZCBpbmNvcnJlY3RseS4nKTsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGVzdFBh
c3NlZCgnY29udGV4dC5yZXN1bWUoKSAod2l0aG91dCBhIHVzZXIgZ2VzdHVyZSkgcHJvbWlzZSBy
ZXNvbHZlZCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJydW5uaW5nIicpOwor
fQorCitmdW5jdGlvbiByZXN1bWVGYWlsZWQoKSB7CisgICAgdGVzdEZhaWxlZCgnY29udGV4dC5y
ZXN1bWUoKSAod2l0aCBhIHVzZXIgZ2VzdHVyZSkgcHJvbWlzZSByZWplY3RlZCcpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiByZXN1bWVTdWNjZWVkZWQoKSB7CisgICAgdGVz
dFBhc3NlZCgnY29udGV4dC5yZXN1bWUoKSAod2l0aCBhIHVzZXIgZ2VzdHVyZSkgcHJvbWlzZSBy
ZXNvbHZlZCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJydW5uaW5nIicpOwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvYXVk
aW8tdGVzdGluZy5qcyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9hdWRpby10ZXN0
aW5nLmpzCmluZGV4IDlkM2UwYzYxM2FlZDcxMzU0MDI0OTg1NzI2ZjljNjA5YTNjZjM3ZDQuLjM0
ODgyNzkxODkyOGJlMDQ2MTk4MjJjYzM5ZjdlMTc0YmU1YTllY2IgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9hdWRpby10ZXN0aW5nLmpzCisrKyBiL0xheW91dFRl
c3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9hdWRpby10ZXN0aW5nLmpzCkBAIC0xOTAsMyArMTkwLDIz
IEBAIGZ1bmN0aW9uIHNob3VsZFRocm93VHlwZUVycm9yKGZ1bmMsIHRleHQpIHsKICAgICAgICAg
dGVzdEZhaWxlZCh0ZXh0ICsgIiBzaG91bGQgdGhyb3cgVHlwZUVycm9yLiIpOwogICAgIH0KIH0K
KworZnVuY3Rpb24gcnVuV2l0aEtleURvd24oZm4pIAoreworICAgIC8vIEZJWE1FOiBXS1RSIGRv
ZXMgbm90IHlldCBzdXBwb3J0IHRoZSBrZXlEb3duKCkgbWVzc2FnZS4gIERvIGEgbW91c2VEb3du
IGhlcmUKKyAgICAvLyBpbnN0ZWFkIHVudGlsIGtleURvd24gc3VwcG9ydCBpcyBhZGRlZC4KKyAg
ICB2YXIgZXZlbnROYW1lID0gIXdpbmRvdy50ZXN0UnVubmVyIHx8IGV2ZW50U2VuZGVyLmtleURv
d24gPyAna2V5cHJlc3MnIDogJ21vdXNlZG93bicKKworICAgIGZ1bmN0aW9uIHRodW5rKCkgewor
ICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGh1bmssIGZh
bHNlKTsKKyAgICAgICAgZm4oKTsKKyAgICB9CisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWUsIHRodW5rLCBmYWxzZSk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgaWYgKGV2ZW50U2VuZGVyLmtleURvd24pCisgICAgICAgICAgICBldmVudFNl
bmRlci5rZXlEb3duKCIgIiwgW10pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICB9Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251675</attachid>
            <date>2015-04-25 23:15:08 -0700</date>
            <delta_ts>2015-04-27 08:13:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144211-20150425231401.patch</filename>
            <type>text/plain</type>
            <size>24432</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFmZTZiNmJiNWFjOTVj
NDkwYWNkMzQ3MjNiYjhkMGM4MWEwMmU3Ni4uZmI4NjkwOTRkMDg2ZmFhNWM0MjdhYWIzODFiYWUw
NmZjMmM0ZTRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE1LTA0LTI1ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdWRpb10gQXVkaW9D
b250ZXh0IGRvZXMgbm90IHJlbW92ZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gZHVyaW5nIHJl
c3VtZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDQyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0czogd2ViYXVkaW8vYXVkaW9jb250ZXh0LXJlc3RyaWN0aW9uLWF1ZGlvYnVmZmVyc291cmNl
bm9kZS1zdGFydC5odG1sCisgICAgICAgICAgICAgICB3ZWJhdWRpby9hdWRpb2NvbnRleHQtcmVz
dHJpY3Rpb24uaHRtbAorCisgICAgICAgIEJlZm9yZSB0aGUgaW50cm9kdWN0aW9uIG9mIHJlc3Vt
ZSgpLCBzdXNwZW5kKCksIGFuZCBzdG9wKCksIEF1ZGlvQ29udGV4dHMgd2hpY2ggcmVxdWlyZWQK
KyAgICAgICAgYSB1c2VyLWdlc3R1cmUgd291bGQgc3RhcnQgbm9ybWFsbHksIGJ1dCB3b3VsZCBl
ZmZlY3RpdmVseSBtdXRlIHRoZWlyIG91dHB1dHMuIE5vdyB0aGF0CisgICAgICAgIHRoZSBBdWRp
b0NvbnRleHQncyBzdGF0ZSBwcm9wZXJ0eSBpcyBleHBvc2VkIHRvIEphdmFTY3JpcHQsIHRoZSBB
dWRpb0NvbnRleHQgc2hvdWxkIHN0YXkKKyAgICAgICAgaW4gdGhlICJzdXNwZW5kZWQiIHN0YXRl
IHVudGlsIHRoZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gaXMgbGlmdGVkLgorCisgICAgICAg
IEFkZCBhIG5ldyBtZXRob2QsIHdpbGxCZWdpblBsYXliYWNrKCkgd2hpY2ggY2hlY2tzIGFuZCBw
b3RlbnRpYWxseSBjbGVhcnMgdGhlIGNvbnRleHQncworICAgICAgICBiZWhhdmlvciByZXN0cmlj
dGlvbnMgYmVmb3JlIGNoZWNraW5nIHdpdGggdGhlIE1lZGlhU2Vzc2lvbi4gQ2FsbCB0aGlzIG5l
dyB3aWxsQmVnaW5QbGF5YmFjaygpCisgICAgICAgIG1ldGhvZCB3aGVuIHRoZSBzdGF0ZSB3b3Vs
ZCB0cmFuc2l0aW9uIHRvICJydW5uaW5nIi4KKworICAgICAgICBCZWNhdXNlIHRoZXkgbWF5IGJl
IGNhbGxlZCBiZWZvcmUgYW55IG5vZGVzIGFyZSBjcmVhdGVkLCBtYWtlIHN1cmUgdG8gY2FsbCBs
YXp5SW5pdGlhbGl6ZSgpCisgICAgICAgIGZyb20gd2l0aGluIHRoZSBKUy1leHBvc2VkIHJlc3Vt
ZVBsYXliYWNrKCksIHN1c3BlbmRQbGF5YmFjaygpLCBhbmQgc3RvcFBsYXliYWNrKCkgbWV0aG9k
cy4KKworICAgICAgICBJbnN0ZWFkIG9mIGNsZWFyaW5nIHRoZSBiZWhhdmlvciByZXN0cmljdGlv
bnMgZGlyZWN0bHksIHNjaGVkdWxlZCBBdWRpb05vZGVzIHNob3VsZCBpbnN0ZWFkCisgICAgICAg
IGNhbGwgYSBuZXcgbWV0aG9kIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpLiBCZWNhdXNlIGV4aXN0
aW5nIHNpdGVzIHdpbGwgY2FsbCBBdWRpb05vZGUuc3RhcnQoKQorICAgICAgICBpbnNpZGUgYSB1
c2VyLWdlc3R1cmUgaGFuZGxlciB0byBjbGVhciB0aGUgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9u
LCBjYWxsIHN0YXJ0UmVuZGVyaW5nKCkKKyAgICAgICAgZnJvbSBub2RlV2lsbEJlZ2luUGxheWJh
Y2soKS4gQnV0IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBBdWRpb05vZGUuc3RhcnQoKSB0byByZXN1
bWUgcGxheWJhY2sKKyAgICAgICAgdW5jb25kaXRpb25hbGx5LCBvbmx5IGRvIHNvIHdoZW4gdGhl
IHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBpcyBzZXQuCisKKyAgICAgICAgTm93IHRoYXQgYW4g
QXVkaW9Db250ZXh0IHdpbGwgbm90IHRyYW5zaXRpb24gdG8gInJ1bm5pbmciIHN0YXRlIHdpdGhv
dXQgYSB1c2VyLWdlc3R1cmUgKGlmCisgICAgICAgIHRoYXQgcmVzdHJpY3Rpb24gaXMgc2V0KSwg
dGhlcmUncyBubyByZWFzb24gdG8gY2hlY2sgZm9yIHRoYXQgcmVzdHJpY3Rpb24gZnJvbSBpbnNp
ZGUKKyAgICAgICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUuCisKKyAgICAgICAgQWRkIHNvbWUgaW50
ZXJuYWwgbWV0aG9kcyB0byBzZXQgYW5kIGNsZWFyIEF1ZGlvQ29udGV4dCBCZWhhdmlvclJlc3Ry
aWN0aW9ucyBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVm
ZmVyU291cmNlTm9kZTo6c3RhcnRQbGF5aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om5vZGVX
aWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OndpbGxC
ZWdpblBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6d2lsbFBhdXNl
UGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdGFydFJlbmRlcmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmRDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6cmVzdW1lQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNsb3NlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Nv
bnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpiZWhhdmlvclJl
c3RyaWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnVzZXJHZXN0dXJl
UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6
cGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OnJlbmRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlOjpzdGFydCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaWRsOgorCiAyMDE1LTA0LTI0ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4K
IAogICAgICAgICBBbmltYXRpb25Db250cm9sbGVyOjpzY3JvbGxXYXNVcGRhdGVkKCkgc2hvd3Mg
dXAgaW4gc2Nyb2xsaW5nIHByb2ZpbGVzIG9uIHBhZ2VzIHRoYXQgZG9uJ3QgdXNlIHNjcm9sbCB0
cmlnZ2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDJmNzgxYmRmMjA2MzQ0NzIxZDMzN2JkMzgz
Y2NiZmU4Y2VjNmNhMmUuLjYyN2IwMWQ4NDYwYzgzNmQ4NDQyYjI0ZWY1ZjUwMmVlMTcxMTg1YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQ2OSw4ICs0NjksNyBAQCB2b2lkIEF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6c3RhcnRQbGF5aW5nKEJ1ZmZlclBsYXliYWNrTW9kZSBwbGF5YmFja01vZGUs
IGRvdWJsZQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoU2NyaXB0
Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCi0gICAgICAgIGNvbnRleHQoKS0+
cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihBdWRpb0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVy
ZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgY29udGV4dCgpLT5ub2RlV2lsbEJlZ2lu
UGxheWJhY2soKTsKIAogICAgIGlmIChtX3BsYXliYWNrU3RhdGUgIT0gVU5TQ0hFRFVMRURfU1RB
VEUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCA3YjNkODBhZjZhZmY1
NWM4MGZhOGVkMGNiYzc1NTM2OWJkNjMzMWE1Li5kMjNiNTEwZmU1MmEzODExNjgzZmQ3YzFjYzhl
MjkxMmYxZmEwMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCkBAIC05ODUsMTggKzk4NSw2NCBAQCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBBdWRpb0NvbnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgIHJl
dHVybiBtX2lzU3RvcFNjaGVkdWxlZCA/IDAgOiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKIH0KIAotdm9pZCBBdWRpb0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKCkK
K3ZvaWQgQXVkaW9Db250ZXh0Ojpub2RlV2lsbEJlZ2luUGxheWJhY2soKQogewotICAgIGlmIChT
Y3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAgICAvLyBDYWxsZWQg
Ynkgc2NoZWR1bGVkIEF1ZGlvTm9kZXMgd2hlbiBjbGllbnRzIHNjaGVkdWxlIHRoZWlyIHN0YXJ0
IHRpbWVzLgorICAgIC8vIFByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2Ygc3VzcGVuZCgpLCBy
ZXN1bWUoKSwgYW5kIHN0b3AoKSwgc3RhcnRpbmcKKyAgICAvLyBhIHNjaGVkdWxlZCBBdWRpb05v
ZGUgd291bGQgcmVtb3ZlIHRoZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24sIGlmIHByZXNlbnQs
CisgICAgLy8gYW5kIHdvdWxkIHRodXMgdW5tdXRlIHRoZSBjb250ZXh0LiBOb3cgdGhhdCBBdWRp
b0NvbnRleHQgc3RheXMgaW4gdGhlCisgICAgLy8gInN1c3BlbmRlZCIgc3RhdGUgaWYgYSB1c2Vy
LWdlc3R1cmUgcmVzdHJpY3Rpb24gaXMgcHJlc2VudCwgc3RhcnRpbmcgYQorICAgIC8vIHNjaGVk
dWxlIEF1ZGlvTm9kZSBzaG91bGQgc2V0IHRoZSBzdGF0ZSB0byAicnVubmluZyIsIGJ1dCBvbmx5
IGlmIHRoZQorICAgIC8vIHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBpcyBzZXQuCisgICAgaWYg
KHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpCisgICAgICAgIHN0YXJ0UmVuZGVy
aW5nKCk7Cit9CisKK2Jvb2wgQXVkaW9Db250ZXh0Ojp3aWxsQmVnaW5QbGF5YmFjaygpCit7Cisg
ICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYg
KCFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihBdWRpb0Nv
bnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAg
fQogCiAgICAgaWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKICAgICAg
ICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKLSAgICAgICAgaWYgKHBhZ2UgJiYg
IXBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkKKyAgICAgICAgaWYgKHBhZ2UgJiYgIXBhZ2UtPmNhblN0
YXJ0TWVkaWEoKSkgewogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRkTWVkaWFDYW5TdGFydExp
c3RlbmVyKHRoaXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW1vdmVCZWhhdmlvclJl
c3RyaWN0aW9uKEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJl
c3RyaWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25z
ZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKICAgICB9CisKKyAgICByZXR1cm4gbV9tZWRp
YVNlc3Npb24tPmNsaWVudFdpbGxCZWdpblBsYXliYWNrKCk7Cit9CisKK2Jvb2wgQXVkaW9Db250
ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjaygpCit7CisgICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRG
b3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYgKCFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNz
aW5nVXNlckdlc3R1cmUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVt
b3ZlQmVoYXZpb3JSZXN0cmljdGlvbihBdWRpb0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZv
ckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisgICAgaWYgKHBhZ2VDb25zZW50UmVx
dWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkt
PnBhZ2UoKTsKKyAgICAgICAgaWYgKHBhZ2UgJiYgIXBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkgewor
ICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKHRoaXMpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJlbW92ZUJlaGF2
aW9yUmVzdHJpY3Rpb24oQXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0
YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbV9tZWRpYVNlc3Npb24t
PmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCk7Cit9CisKK3ZvaWQgQXVkaW9Db250ZXh0OjpzdGFy
dFJlbmRlcmluZygpCit7CisgICAgaWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBkZXN0aW5hdGlvbigpLT5zdGFydFJlbmRlcmluZygpOwogICAgIHNldFN0
YXRlKFN0YXRlOjpSdW5uaW5nKTsKIH0KQEAgLTEwNzcsOSArMTEyMywxMSBAQCB2b2lkIEF1ZGlv
Q29udGV4dDo6c3VzcGVuZENvbnRleHQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxs
YmFjaywgc3RkOjpmdQogCiAgICAgYWRkUmVhY3Rpb24oU3RhdGU6OlN1c3BlbmRlZCwgc3VjY2Vz
c0NhbGxiYWNrKTsKIAotICAgIGlmICghbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxQYXVzZVBs
YXliYWNrKCkpCisgICAgaWYgKCF3aWxsUGF1c2VQbGF5YmFjaygpKQogICAgICAgICByZXR1cm47
CiAKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCiAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ry
b25nVGhpcyh0aGlzKTsKICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3VzcGVuZChbc3Ryb25nVGhp
c10gewogICAgICAgICBzdHJvbmdUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKQEAg
LTExMDgsOSArMTE1NiwxMSBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1lQ29udGV4dChzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrLCBzdGQ6OmZ1bgogCiAgICAgYWRkUmVh
Y3Rpb24oU3RhdGU6OlJ1bm5pbmcsIHN1Y2Nlc3NDYWxsYmFjayk7CiAKLSAgICBpZiAoIW1fbWVk
aWFTZXNzaW9uLT5jbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpKQorICAgIGlmICghd2lsbEJlZ2lu
UGxheWJhY2soKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgbGF6eUluaXRpYWxpemUoKTsKKwog
ICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAgbV9kZXN0aW5h
dGlvbk5vZGUtPnJlc3VtZShbc3Ryb25nVGhpc10gewogICAgICAgICBzdHJvbmdUaGlzLT5zZXRT
dGF0ZShTdGF0ZTo6UnVubmluZyk7CkBAIC0xMTMzLDYgKzExODMsOCBAQCB2b2lkIEF1ZGlvQ29u
dGV4dDo6Y2xvc2VDb250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2ss
IHN0ZDo6ZnVuYwogCiAgICAgYWRkUmVhY3Rpb24oU3RhdGU6OkNsb3NlZCwgc3VjY2Vzc0NhbGxi
YWNrKTsKIAorICAgIGxhenlJbml0aWFsaXplKCk7CisKICAgICBSZWZQdHI8QXVkaW9Db250ZXh0
PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIG1fZGVzdGluYXRpb25Ob2RlLT5jbG9zZShbc3Ryb25n
VGhpcywgc3VjY2Vzc0NhbGxiYWNrXSB7CiAgICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0
YXRlOjpDbG9zZWQpOwpAQCAtMTE1Miw2ICsxMjA0LDggQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN1
c3BlbmRQbGF5YmFjaygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBsYXp5SW5pdGlh
bGl6ZSgpOworCiAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAg
ICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3VzcGVuZChbc3Ryb25nVGhpc10gewogICAgICAgICBib29s
IGludGVycnVwdGVkID0gc3Ryb25nVGhpcy0+bV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gTWVk
aWFTZXNzaW9uOjpJbnRlcnJ1cHRlZDsKQEAgLTExNjksNiArMTIyMywxMSBAQCB2b2lkIEF1ZGlv
Q29udGV4dDo6bWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAoIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKICAgICBSZWZQdHI8QXVkaW9Db250ZXh0
PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3N0cm9u
Z1RoaXNdIHsKICAgICAgICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXgg
ODk0MDUyMDkyOTAzZDU4NWNjZjM4YjE2ZTQxN2FjZTExMWU2YWRhOS4uMWZhMDVmM2Y2YTg3MGZm
NTU1NmUyMDMzMzI3OWEyZGJjYzdhNDE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0yNTEsMTQgKzI1MSwxNCBAQCBwdWJsaWM6CiAg
ICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rpb25zOwogCi0gICAg
Ym9vbCB1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9u
OyB9Ci0gICAgYm9vbCBwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJl
c3RyaWN0aW9uOyB9Ci0KKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9CiAgICAgdm9pZCBhZGRCZWhh
dmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVz
dHJpY3Rpb25zIHw9IHJlc3RyaWN0aW9uOyB9CiAgICAgdm9pZCByZW1vdmVCZWhhdmlvclJlc3Ry
aWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25z
ICY9IH5yZXN0cmljdGlvbjsgfQogCiAgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgp
OwogCisgICAgdm9pZCBub2RlV2lsbEJlZ2luUGxheWJhY2soKTsKKwogcHJvdGVjdGVkOgogICAg
IGV4cGxpY2l0IEF1ZGlvQ29udGV4dChEb2N1bWVudCYpOwogICAgIEF1ZGlvQ29udGV4dChEb2N1
bWVudCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywg
ZmxvYXQgc2FtcGxlUmF0ZSk7CkBAIC0yNzEsNiArMjcxLDEyIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBsYXp5SW5pdGlhbGl6ZSgpOwogICAgIHZvaWQgdW5pbml0aWFsaXplKCk7CiAKKyAgICBib29s
IHdpbGxCZWdpblBsYXliYWNrKCk7CisgICAgYm9vbCB3aWxsUGF1c2VQbGF5YmFjaygpOworCisg
ICAgYm9vbCB1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0
aW9uOyB9CisgICAgYm9vbCBwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFy
dFJlc3RyaWN0aW9uOyB9CisKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsgU3VzcGVuZGVkLCBSdW5u
aW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CiAgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5jcHAKaW5kZXggYWZlYTQxNjI4YTFmYTcwY2FkMGMyMGY3M2RlYjI5OWExZTRk
MjVlOS4uNjY0ODZlMTI0NDU3NjlmOTA3Y2UyYmQ3ZDhlZGJmNzQ1M2QzNDRmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKQEAgLTY4LDE4ICs2OCw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJl
bmRlcihBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoY29udGV4dCgpLT51c2VyR2VzdHVyZVJlcXVp
cmVkRm9yQXVkaW9TdGFydCgpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uQnVzLT56ZXJvKCk7Ci0g
ICAgICAgIHNldElzU2lsZW50KHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGNvbnRleHQoKS0+cGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgewotICAg
ICAgICBkZXN0aW5hdGlvbkJ1cy0+emVybygpOwotICAgICAgICBzZXRJc1NpbGVudCh0cnVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIC8vIExldCB0aGUgY29udGV4dCB0YWtlIGNh
cmUgb2YgYW55IGJ1c2luZXNzIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBxdWFudHVtLgog
ICAgIGNvbnRleHQoKS0+aGFuZGxlUHJlUmVuZGVyVGFza3MoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUuY3BwCmluZGV4IGZlNmEzNGQxYTQ3YWM1Nzk4M2QwMTJiZmUzODNkMGVlNThhOTFlNWQuLjcy
M2I5ODhkOTRlYTE4YTllNDg4MGEzNDZkZDU5ZTMxNWZkNDUzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5jcHAKQEAgLTE0Niw4ICsxNDYsNyBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZTo6c3RhcnQoZG91YmxlIHdoZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKCkpCi0gICAgICAgIGNvbnRleHQoKS0+cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlv
bihBdWRpb0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlv
bik7CisgICAgY29udGV4dCgpLT5ub2RlV2lsbEJlZ2luUGxheWJhY2soKTsKIAogICAgIGlmICht
X3BsYXliYWNrU3RhdGUgIT0gVU5TQ0hFRFVMRURfU1RBVEUpIHsKICAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjNmIw
NTNlM2Y3OTI2MDVhMjk2OTU1MTE5ZWRiMWY4NGZlMWZlMjUxLi5lYjJkM2FlZTQ2NmM3NzdjYmE3
YTJlY2JiNTU5ZGViZmQzNzhjZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUg
IkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaCIKQEAgLTI1ODcsNiArMjU4OCwzMyBAQCBib29sIEludGVybmFsczo6ZWxl
bWVudElzQmxvY2tpbmdEaXNwbGF5U2xlZXAoRWxlbWVudCogZWxlbWVudCkgY29uc3QKIAogI2Vu
ZGlmIC8vIEVOQUJMRShWSURFTykKIAorI2lmIEVOQUJMRShXRUJfQVVESU8pCit2b2lkIEludGVy
bmFsczo6c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nICZyZXN0cmljdGlvbnNTdHJpbmcsIEV4Y2VwdGlvbkNvZGUgJmVjKQorewor
ICAgIGlmICghY29udGV4dCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEF1ZGlvQ29udGV4dDo6QmVoYXZpb3JSZXN0cmlj
dGlvbnMgcmVzdHJpY3Rpb25zID0gY29udGV4dC0+YmVoYXZpb3JSZXN0cmljdGlvbnMoKTsKKyAg
ICBjb250ZXh0LT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7CisKKyAg
ICByZXN0cmljdGlvbnMgPSBIVE1MTWVkaWFTZXNzaW9uOjpOb1Jlc3RyaWN0aW9uczsKKworICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3RyaWN0aW9uc0FycmF5OworICAgIHJlc3RyaWN0aW9uc1N0cmlu
Zy5zcGxpdCgnLCcsIGZhbHNlLCByZXN0cmljdGlvbnNBcnJheSk7CisgICAgZm9yIChhdXRvJiBy
ZXN0cmljdGlvblN0cmluZyA6IHJlc3RyaWN0aW9uc0FycmF5KSB7CisgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShyZXN0cmljdGlvblN0cmluZywgIk5vUmVzdHJpY3Rpb25zIikpCisgICAg
ICAgICAgICByZXN0cmljdGlvbnMgfD0gQXVkaW9Db250ZXh0OjpOb1Jlc3RyaWN0aW9uczsKKyAg
ICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiUmVxdWlyZVVz
ZXJHZXN0dXJlRm9yQXVkaW9TdGFydCIpKQorICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1
ZGlvQ29udGV4dDo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uOwor
ICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJSZXF1aXJl
UGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0IikpCisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0g
QXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247
CisgICAgfQorICAgIGNvbnRleHQtPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25z
KTsKK30KKyNlbmRpZgorCiB2b2lkIEludGVybmFsczo6c2ltdWxhdGVTeXN0ZW1TbGVlcCgpIGNv
bnN0CiB7CiAjaWYgRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5k
ZXggYTQ2NjkyYTdmNWI4ZmQ0YWU3ODlhMDVjMWY0Y2YzMjY0MDZhMDhmYi4uZjk5YmNlODRjMTdi
NDcwNzFkNDk3NTAyZjFlMTI2YTY0MzU4NjRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCkBAIC00MSw2ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXVk
aW9Db250ZXh0OwogY2xhc3MgQ2xpZW50UmVjdDsKIGNsYXNzIENsaWVudFJlY3RMaXN0OwogY2xh
c3MgRE9NU3RyaW5nTGlzdDsKQEAgLTM3Miw2ICszNzMsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
ZWxlbWVudElzQmxvY2tpbmdEaXNwbGF5U2xlZXAoRWxlbWVudCopIGNvbnN0OwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAgIHZvaWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rp
b25zKEF1ZGlvQ29udGV4dCosIGNvbnN0IFN0cmluZyYgcmVzdHJpY3Rpb25zLCBFeGNlcHRpb25D
b2RlJik7CisjZW5kaWYKKwogICAgIHZvaWQgc2ltdWxhdGVTeXN0ZW1TbGVlcCgpIGNvbnN0Owog
ICAgIHZvaWQgc2ltdWxhdGVTeXN0ZW1XYWtlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAppbmRleCAyMDg4ZDE4ZWI2ODczOTZkYzMxZTQyOGZmOWM0ZWQyZWY2N2U1
MDg4Li43ZmU5N2RlZGM1MmU0OTI0MzI5ZTdlMjM4NTU1OWFlZGE4Y2ZkMTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zMzYsNiArMzM2LDcgQEAgZW51bSBSZXNvdXJj
ZUxvYWRQcmlvcml0eSB7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lkIGFwcGxpY2F0aW9u
V2lsbEVudGVyRm9yZWdyb3VuZCgpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBhcHBs
aWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU8sIFJh
aXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoRE9NU3RyaW5n
IG1lZGlhVHlwZSwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7CisgICAgW0NvbmRpdGlvbmFsPVdF
Ql9BVURJTywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9u
cyhBdWRpb0NvbnRleHQgY29udGV4dCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7CiAgICAgW0Nv
bmRpdGlvbmFsPVZJREVPLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgcG9zdFJlbW90ZUNvbnRyb2xD
b21tYW5kKERPTVN0cmluZyBjb21tYW5kKTsKICAgICAKICAgICBbQ29uZGl0aW9uYWw9VklERU9d
IHZvaWQgc2ltdWxhdGVTeXN0ZW1TbGVlcCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQxODFkNDBjNDI1ZDE2YWY5Mzc3
MzI2NDM5ZDYzODBjMjE4ZGYwMmQuLmIzMTQ0YTQ2NjQzODc5NmE3YzI1M2E5ZTU3OGRlMDc1MGQ1
ZDBlOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wNC0yNSAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXVkaW9dIEF1ZGlvQ29udGV4dCBkb2Vz
IG5vdCByZW1vdmUgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9uIGR1cmluZyByZXN1bWUoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJhdWRpby9h
dWRpb2NvbnRleHQtcmVzdHJpY3Rpb24tYXVkaW9idWZmZXJzb3VyY2Vub2RlLXN0YXJ0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vYXVkaW9jb250ZXh0LXJlc3RyaWN0
aW9uLWF1ZGlvYnVmZmVyc291cmNlbm9kZS1zdGFydC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJhdWRpby9hdWRpb2NvbnRleHQtcmVzdHJpY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWJhdWRpby9hdWRpb2NvbnRleHQtcmVzdHJpY3Rpb24uaHRtbDogQWRkZWQuCisg
ICAgICAgICogd2ViYXVkaW8vcmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanM6CisgICAgICAgIChy
dW5XaXRoS2V5RG93bik6CisKIDIwMTUtMDQtMjQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dLMl0gQ29va2llcyBzZXQgZHVyaW5nIG1lZGlhIGxvYWRpbmcg
YXJlIG5vdCBhZGRlZCB0byBjb29raWUgc3RvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi1hdWRpb2J1ZmZlcnNvdXJjZW5vZGUtc3Rh
cnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXJlc3Ry
aWN0aW9uLWF1ZGlvYnVmZmVyc291cmNlbm9kZS1zdGFydC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmY2MGY2NjE5OWNhYjA3MWY1ZGZlM2NkN2U5NGE5N2NkZmY5MzlmMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi1hdWRp
b2J1ZmZlcnNvdXJjZW5vZGUtc3RhcnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK0Jh
c2ljIHRlc3RzIGZvciBBdWRpb05vZGUgQVBJLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAic3VzcGVuZGVkIgorbm9kZS5jb25uZWN0KGNvbnRl
eHQuZGVzdGluYXRpb24pCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKK0NhbGxp
bmcgY29udGV4dC5yZXN1bWUoKSB3aXRob3V0IGEgdXNlciBnZXN0dXJlCitXYWl0IGZvciAxMDBt
cworQ2FsbGluZyBub2RlLnN0YXJ0KCkgd2l0aCBhIHVzZXIgZ2VzdHVyZQorUEFTUyBjb250ZXh0
LnJlc3VtZSgpICh3aXRob3V0IGEgdXNlciBnZXN0dXJlKSBwcm9taXNlIHJlc29sdmVkCitQQVNT
IGNvbnRleHQuc3RhdGUgaXMgInJ1bm5pbmciCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
YXVkaW9jb250ZXh0LXJlc3RyaWN0aW9uLWF1ZGlvYnVmZmVyc291cmNlbm9kZS1zdGFydC5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXJlc3RyaWN0aW9uLWF1ZGlvYnVm
ZmVyc291cmNlbm9kZS1zdGFydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiMWRmY2M5MWE4YzY2YTA4N2Jl
YzMxMWFmOTMwZGEyZTM2YWM1YTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJh
dWRpby9hdWRpb2NvbnRleHQtcmVzdHJpY3Rpb24tYXVkaW9idWZmZXJzb3VyY2Vub2RlLXN0YXJ0
Lmh0bWwKQEAgLTAsMCArMSw2OSBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InJlc291cmNlcy9hdWRpby10ZXN0aW5n
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCdCYXNpYyB0ZXN0cyBmb3IgQXVkaW9Ob2RlIEFQSS4nKTsKKwordmFyIGNvbnRleHQgPSBudWxs
OwordmFyIG5vZGUgPSBudWxsOwordmFyIGNhbGxlZFJlc3VtZVdpdGhVc2VyR2VzdHVyZSA9IGZh
bHNlOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQoKTsKKworICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0QXVkaW9Db250ZXh0UmVzdHJp
Y3Rpb25zKGNvbnRleHQsICdSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0Jyk7CisKKyAg
ICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICcic3VzcGVuZGVkIicpOworCisgICAgbm9kZSA9
IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgZXZhbEFuZExvZygnbm9kZS5jb25u
ZWN0KGNvbnRleHQuZGVzdGluYXRpb24pJyk7CisKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0
ZScsICcic3VzcGVuZGVkIicpOworCisgICAgZGVidWcoJ0NhbGxpbmcgY29udGV4dC5yZXN1bWUo
KSB3aXRob3V0IGEgdXNlciBnZXN0dXJlJyk7CisgICAgY29udGV4dC5yZXN1bWUoKS50aGVuKG5v
VXNlckdlc3R1cmVSZXN1bWVTdWNjZWVkZWQsIG5vVXNlckdlc3R1cmVSZXN1bWVGYWlsZWQpOwor
CisgICAgZGVidWcoJ1dhaXQgZm9yIDEwMG1zJyk7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZGVidWcoJ0NhbGxpbmcgbm9kZS5zdGFydCgpIHdpdGggYSB1c2VyIGdlc3R1cmUnKTsKKyAg
ICAgICAgICAgIG5vZGUuc3RhcnQoKTsKKyAgICAgICAgfSk7CisgICAgfSwgMTAwKTsKK30KKwor
ZnVuY3Rpb24gbm9Vc2VyR2VzdHVyZVJlc3VtZUZhaWxlZCgpIHsKKyAgICB0ZXN0RmFpbGVkKCdj
b250ZXh0LnJlc3VtZSgpICh3aXRob3V0IGEgdXNlciBnZXN0dXJlKSBwcm9taXNlIHJlamVjdGVk
Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIG5vVXNlckdlc3R1cmVSZXN1
bWVTdWNjZWVkZWQoKSB7CisgICAgdGVzdFBhc3NlZCgnY29udGV4dC5yZXN1bWUoKSAod2l0aG91
dCBhIHVzZXIgZ2VzdHVyZSkgcHJvbWlzZSByZXNvbHZlZCcpOworICAgIHNob3VsZEJlKCdjb250
ZXh0LnN0YXRlJywgJyJydW5uaW5nIicpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5U
ZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtcmVzdHJpY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXJlc3RyaWN0aW9uLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xYzRkNmZkYzIwN2MyM2EyZTliOTRjZjlmZDUwOTMxODE3MGI1YTg5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXJlc3RyaWN0
aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitCYXNpYyB0ZXN0cyBmb3IgQXVkaW9O
b2RlIEFQSS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGNvbnRleHQuc3Rh
dGUgaXMgInN1c3BlbmRlZCIKK25vZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKQorUEFT
UyBjb250ZXh0LnN0YXRlIGlzICJzdXNwZW5kZWQiCitDYWxsaW5nIGNvbnRleHQucmVzdW1lKCkg
d2l0aG91dCBhIHVzZXIgZ2VzdHVyZQorV2FpdCBmb3IgMTAwbXMKK0NhbGxpbmcgY29udGV4dC5y
ZXN1bWUoKSB3aXRoIGEgdXNlciBnZXN0dXJlCitQQVNTIGNvbnRleHQucmVzdW1lKCkgKHdpdGhv
dXQgYSB1c2VyIGdlc3R1cmUpIHByb21pc2UgcmVzb2x2ZWQKK1BBU1MgY29udGV4dC5zdGF0ZSBp
cyAicnVubmluZyIKK1BBU1MgY29udGV4dC5yZXN1bWUoKSAod2l0aCBhIHVzZXIgZ2VzdHVyZSkg
cHJvbWlzZSByZXNvbHZlZAorUEFTUyBjb250ZXh0LnN0YXRlIGlzICJydW5uaW5nIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXJlc3RyaWN0aW9uLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2NmMWNmMmZkNjc5NmFiZWU0YjFmNDRmMDRhNDM2MDFjM2NiYzZkNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi5odG1s
CkBAIC0wLDAgKzEsODUgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignQmFz
aWMgdGVzdHMgZm9yIEF1ZGlvTm9kZSBBUEkuJyk7CisKK3ZhciBjb250ZXh0ID0gbnVsbDsKK3Zh
ciBub2RlID0gbnVsbDsKK3ZhciBjYWxsZWRSZXN1bWVXaXRoVXNlckdlc3R1cmUgPSBmYWxzZTsK
KworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIH0KKworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgIGNvbnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250ZXh0KCk7CisKKyAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9u
cyhjb250ZXh0LCAnUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydCcpOworCisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInN1c3BlbmRlZCInKTsKKworICAgIG5vZGUgPSBjb250
ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworICAgIGV2YWxBbmRMb2coJ25vZGUuY29ubmVjdChj
b250ZXh0LmRlc3RpbmF0aW9uKScpOworCisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAn
InN1c3BlbmRlZCInKTsKKworICAgIGRlYnVnKCdDYWxsaW5nIGNvbnRleHQucmVzdW1lKCkgd2l0
aG91dCBhIHVzZXIgZ2VzdHVyZScpOworICAgIGNvbnRleHQucmVzdW1lKCkudGhlbihub1VzZXJH
ZXN0dXJlUmVzdW1lU3VjY2VlZGVkLCBub1VzZXJHZXN0dXJlUmVzdW1lRmFpbGVkKTsKKworICAg
IGRlYnVnKCdXYWl0IGZvciAxMDBtcycpOworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgICAgICBydW5XaXRoS2V5RG93bihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRl
YnVnKCdDYWxsaW5nIGNvbnRleHQucmVzdW1lKCkgd2l0aCBhIHVzZXIgZ2VzdHVyZScpOworICAg
ICAgICAgICAgY29udGV4dC5yZXN1bWUoKS50aGVuKHJlc3VtZVN1Y2NlZWRlZCwgcmVzdW1lRmFp
bGVkKTsKKyAgICAgICAgICAgIGNhbGxlZFJlc3VtZVdpdGhVc2VyR2VzdHVyZSA9IHRydWU7Cisg
ICAgICAgIH0pOworICAgIH0sIDEwMCk7Cit9CisKK2Z1bmN0aW9uIG5vVXNlckdlc3R1cmVSZXN1
bWVGYWlsZWQoKSB7CisgICAgdGVzdEZhaWxlZCgnY29udGV4dC5yZXN1bWUoKSAod2l0aG91dCBh
IHVzZXIgZ2VzdHVyZSkgcHJvbWlzZSByZWplY3RlZCcpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCitmdW5jdGlvbiBub1VzZXJHZXN0dXJlUmVzdW1lU3VjY2VlZGVkKCkgeworICAgIGlmICgh
Y2FsbGVkUmVzdW1lV2l0aFVzZXJHZXN0dXJlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ2NvbnRl
eHQucmVzdW1lKCkgKHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUpIHN1Y2VlZGVkIGluY29ycmVjdGx5
LicpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB0ZXN0UGFzc2VkKCdjb250ZXh0LnJlc3VtZSgpICh3aXRob3V0IGEgdXNlciBnZXN0dXJlKSBw
cm9taXNlIHJlc29sdmVkJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInJ1bm5p
bmciJyk7Cit9CisKK2Z1bmN0aW9uIHJlc3VtZUZhaWxlZCgpIHsKKyAgICB0ZXN0RmFpbGVkKCdj
b250ZXh0LnJlc3VtZSgpICh3aXRoIGEgdXNlciBnZXN0dXJlKSBwcm9taXNlIHJlamVjdGVkJyk7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJlc3VtZVN1Y2NlZWRlZCgpIHsK
KyAgICB0ZXN0UGFzc2VkKCdjb250ZXh0LnJlc3VtZSgpICh3aXRoIGEgdXNlciBnZXN0dXJlKSBw
cm9taXNlIHJlc29sdmVkJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInJ1bm5p
bmciJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+
CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291
cmNlcy9hdWRpby10ZXN0aW5nLmpzIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2F1
ZGlvLXRlc3RpbmcuanMKaW5kZXggOWQzZTBjNjEzYWVkNzEzNTQwMjQ5ODU3MjZmOWM2MDlhM2Nm
MzdkNC4uMzQ4ODI3OTE4OTI4YmUwNDYxOTgyMmNjMzlmN2UxNzRiZTVhOWVjYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMKKysrIGIv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMKQEAgLTE5MCwz
ICsxOTAsMjMgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3dUeXBlRXJyb3IoZnVuYywgdGV4dCkgewog
ICAgICAgICB0ZXN0RmFpbGVkKHRleHQgKyAiIHNob3VsZCB0aHJvdyBUeXBlRXJyb3IuIik7CiAg
ICAgfQogfQorCitmdW5jdGlvbiBydW5XaXRoS2V5RG93bihmbikgCit7CisgICAgLy8gRklYTUU6
IFdLVFIgZG9lcyBub3QgeWV0IHN1cHBvcnQgdGhlIGtleURvd24oKSBtZXNzYWdlLiAgRG8gYSBt
b3VzZURvd24gaGVyZQorICAgIC8vIGluc3RlYWQgdW50aWwga2V5RG93biBzdXBwb3J0IGlzIGFk
ZGVkLgorICAgIHZhciBldmVudE5hbWUgPSAhd2luZG93LnRlc3RSdW5uZXIgfHwgZXZlbnRTZW5k
ZXIua2V5RG93biA/ICdrZXlwcmVzcycgOiAnbW91c2Vkb3duJworCisgICAgZnVuY3Rpb24gdGh1
bmsoKSB7CisgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0
aHVuaywgZmFsc2UpOworICAgICAgICBmbigpOworICAgIH0KKyAgICBkb2N1bWVudC5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZSwgdGh1bmssIGZhbHNlKTsKKworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICBpZiAoZXZlbnRTZW5kZXIua2V5RG93bikKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmtleURvd24oIiAiLCBbXSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIH0KK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251742</attachid>
            <date>2015-04-27 08:13:22 -0700</date>
            <delta_ts>2015-04-27 14:36:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144211-20150427081212.patch</filename>
            <type>text/plain</type>
            <size>24392</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFmZTZiNmJiNWFjOTVj
NDkwYWNkMzQ3MjNiYjhkMGM4MWEwMmU3Ni4uZmI4NjkwOTRkMDg2ZmFhNWM0MjdhYWIzODFiYWUw
NmZjMmM0ZTRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE1LTA0LTI1ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdWRpb10gQXVkaW9D
b250ZXh0IGRvZXMgbm90IHJlbW92ZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gZHVyaW5nIHJl
c3VtZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDQyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0czogd2ViYXVkaW8vYXVkaW9jb250ZXh0LXJlc3RyaWN0aW9uLWF1ZGlvYnVmZmVyc291cmNl
bm9kZS1zdGFydC5odG1sCisgICAgICAgICAgICAgICB3ZWJhdWRpby9hdWRpb2NvbnRleHQtcmVz
dHJpY3Rpb24uaHRtbAorCisgICAgICAgIEJlZm9yZSB0aGUgaW50cm9kdWN0aW9uIG9mIHJlc3Vt
ZSgpLCBzdXNwZW5kKCksIGFuZCBzdG9wKCksIEF1ZGlvQ29udGV4dHMgd2hpY2ggcmVxdWlyZWQK
KyAgICAgICAgYSB1c2VyLWdlc3R1cmUgd291bGQgc3RhcnQgbm9ybWFsbHksIGJ1dCB3b3VsZCBl
ZmZlY3RpdmVseSBtdXRlIHRoZWlyIG91dHB1dHMuIE5vdyB0aGF0CisgICAgICAgIHRoZSBBdWRp
b0NvbnRleHQncyBzdGF0ZSBwcm9wZXJ0eSBpcyBleHBvc2VkIHRvIEphdmFTY3JpcHQsIHRoZSBB
dWRpb0NvbnRleHQgc2hvdWxkIHN0YXkKKyAgICAgICAgaW4gdGhlICJzdXNwZW5kZWQiIHN0YXRl
IHVudGlsIHRoZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gaXMgbGlmdGVkLgorCisgICAgICAg
IEFkZCBhIG5ldyBtZXRob2QsIHdpbGxCZWdpblBsYXliYWNrKCkgd2hpY2ggY2hlY2tzIGFuZCBw
b3RlbnRpYWxseSBjbGVhcnMgdGhlIGNvbnRleHQncworICAgICAgICBiZWhhdmlvciByZXN0cmlj
dGlvbnMgYmVmb3JlIGNoZWNraW5nIHdpdGggdGhlIE1lZGlhU2Vzc2lvbi4gQ2FsbCB0aGlzIG5l
dyB3aWxsQmVnaW5QbGF5YmFjaygpCisgICAgICAgIG1ldGhvZCB3aGVuIHRoZSBzdGF0ZSB3b3Vs
ZCB0cmFuc2l0aW9uIHRvICJydW5uaW5nIi4KKworICAgICAgICBCZWNhdXNlIHRoZXkgbWF5IGJl
IGNhbGxlZCBiZWZvcmUgYW55IG5vZGVzIGFyZSBjcmVhdGVkLCBtYWtlIHN1cmUgdG8gY2FsbCBs
YXp5SW5pdGlhbGl6ZSgpCisgICAgICAgIGZyb20gd2l0aGluIHRoZSBKUy1leHBvc2VkIHJlc3Vt
ZVBsYXliYWNrKCksIHN1c3BlbmRQbGF5YmFjaygpLCBhbmQgc3RvcFBsYXliYWNrKCkgbWV0aG9k
cy4KKworICAgICAgICBJbnN0ZWFkIG9mIGNsZWFyaW5nIHRoZSBiZWhhdmlvciByZXN0cmljdGlv
bnMgZGlyZWN0bHksIHNjaGVkdWxlZCBBdWRpb05vZGVzIHNob3VsZCBpbnN0ZWFkCisgICAgICAg
IGNhbGwgYSBuZXcgbWV0aG9kIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpLiBCZWNhdXNlIGV4aXN0
aW5nIHNpdGVzIHdpbGwgY2FsbCBBdWRpb05vZGUuc3RhcnQoKQorICAgICAgICBpbnNpZGUgYSB1
c2VyLWdlc3R1cmUgaGFuZGxlciB0byBjbGVhciB0aGUgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9u
LCBjYWxsIHN0YXJ0UmVuZGVyaW5nKCkKKyAgICAgICAgZnJvbSBub2RlV2lsbEJlZ2luUGxheWJh
Y2soKS4gQnV0IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBBdWRpb05vZGUuc3RhcnQoKSB0byByZXN1
bWUgcGxheWJhY2sKKyAgICAgICAgdW5jb25kaXRpb25hbGx5LCBvbmx5IGRvIHNvIHdoZW4gdGhl
IHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBpcyBzZXQuCisKKyAgICAgICAgTm93IHRoYXQgYW4g
QXVkaW9Db250ZXh0IHdpbGwgbm90IHRyYW5zaXRpb24gdG8gInJ1bm5pbmciIHN0YXRlIHdpdGhv
dXQgYSB1c2VyLWdlc3R1cmUgKGlmCisgICAgICAgIHRoYXQgcmVzdHJpY3Rpb24gaXMgc2V0KSwg
dGhlcmUncyBubyByZWFzb24gdG8gY2hlY2sgZm9yIHRoYXQgcmVzdHJpY3Rpb24gZnJvbSBpbnNp
ZGUKKyAgICAgICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUuCisKKyAgICAgICAgQWRkIHNvbWUgaW50
ZXJuYWwgbWV0aG9kcyB0byBzZXQgYW5kIGNsZWFyIEF1ZGlvQ29udGV4dCBCZWhhdmlvclJlc3Ry
aWN0aW9ucyBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVm
ZmVyU291cmNlTm9kZTo6c3RhcnRQbGF5aW5nKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om5vZGVX
aWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OndpbGxC
ZWdpblBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6d2lsbFBhdXNl
UGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdGFydFJlbmRlcmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmRDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6cmVzdW1lQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNsb3NlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Nv
bnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpiZWhhdmlvclJl
c3RyaWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnVzZXJHZXN0dXJl
UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6
cGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OnJlbmRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlOjpzdGFydCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaWRsOgorCiAyMDE1LTA0LTI0ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4K
IAogICAgICAgICBBbmltYXRpb25Db250cm9sbGVyOjpzY3JvbGxXYXNVcGRhdGVkKCkgc2hvd3Mg
dXAgaW4gc2Nyb2xsaW5nIHByb2ZpbGVzIG9uIHBhZ2VzIHRoYXQgZG9uJ3QgdXNlIHNjcm9sbCB0
cmlnZ2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDJmNzgxYmRmMjA2MzQ0NzIxZDMzN2JkMzgz
Y2NiZmU4Y2VjNmNhMmUuLjYyN2IwMWQ4NDYwYzgzNmQ4NDQyYjI0ZWY1ZjUwMmVlMTcxMTg1YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQ2OSw4ICs0NjksNyBAQCB2b2lkIEF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6c3RhcnRQbGF5aW5nKEJ1ZmZlclBsYXliYWNrTW9kZSBwbGF5YmFja01vZGUs
IGRvdWJsZQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoU2NyaXB0
Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCi0gICAgICAgIGNvbnRleHQoKS0+
cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihBdWRpb0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVy
ZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgY29udGV4dCgpLT5ub2RlV2lsbEJlZ2lu
UGxheWJhY2soKTsKIAogICAgIGlmIChtX3BsYXliYWNrU3RhdGUgIT0gVU5TQ0hFRFVMRURfU1RB
VEUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCA3YjNkODBhZjZhZmY1
NWM4MGZhOGVkMGNiYzc1NTM2OWJkNjMzMWE1Li5kMjNiNTEwZmU1MmEzODExNjgzZmQ3YzFjYzhl
MjkxMmYxZmEwMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCkBAIC05ODUsMTggKzk4NSw2NCBAQCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBBdWRpb0NvbnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgIHJl
dHVybiBtX2lzU3RvcFNjaGVkdWxlZCA/IDAgOiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKIH0KIAotdm9pZCBBdWRpb0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKCkK
K3ZvaWQgQXVkaW9Db250ZXh0Ojpub2RlV2lsbEJlZ2luUGxheWJhY2soKQogewotICAgIGlmIChT
Y3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAgICAvLyBDYWxsZWQg
Ynkgc2NoZWR1bGVkIEF1ZGlvTm9kZXMgd2hlbiBjbGllbnRzIHNjaGVkdWxlIHRoZWlyIHN0YXJ0
IHRpbWVzLgorICAgIC8vIFByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2Ygc3VzcGVuZCgpLCBy
ZXN1bWUoKSwgYW5kIHN0b3AoKSwgc3RhcnRpbmcKKyAgICAvLyBhIHNjaGVkdWxlZCBBdWRpb05v
ZGUgd291bGQgcmVtb3ZlIHRoZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24sIGlmIHByZXNlbnQs
CisgICAgLy8gYW5kIHdvdWxkIHRodXMgdW5tdXRlIHRoZSBjb250ZXh0LiBOb3cgdGhhdCBBdWRp
b0NvbnRleHQgc3RheXMgaW4gdGhlCisgICAgLy8gInN1c3BlbmRlZCIgc3RhdGUgaWYgYSB1c2Vy
LWdlc3R1cmUgcmVzdHJpY3Rpb24gaXMgcHJlc2VudCwgc3RhcnRpbmcgYQorICAgIC8vIHNjaGVk
dWxlIEF1ZGlvTm9kZSBzaG91bGQgc2V0IHRoZSBzdGF0ZSB0byAicnVubmluZyIsIGJ1dCBvbmx5
IGlmIHRoZQorICAgIC8vIHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBpcyBzZXQuCisgICAgaWYg
KHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpCisgICAgICAgIHN0YXJ0UmVuZGVy
aW5nKCk7Cit9CisKK2Jvb2wgQXVkaW9Db250ZXh0Ojp3aWxsQmVnaW5QbGF5YmFjaygpCit7Cisg
ICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYg
KCFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihBdWRpb0Nv
bnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAg
fQogCiAgICAgaWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKICAgICAg
ICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKLSAgICAgICAgaWYgKHBhZ2UgJiYg
IXBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkKKyAgICAgICAgaWYgKHBhZ2UgJiYgIXBhZ2UtPmNhblN0
YXJ0TWVkaWEoKSkgewogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRkTWVkaWFDYW5TdGFydExp
c3RlbmVyKHRoaXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW1vdmVCZWhhdmlvclJl
c3RyaWN0aW9uKEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJl
c3RyaWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25z
ZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKICAgICB9CisKKyAgICByZXR1cm4gbV9tZWRp
YVNlc3Npb24tPmNsaWVudFdpbGxCZWdpblBsYXliYWNrKCk7Cit9CisKK2Jvb2wgQXVkaW9Db250
ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjaygpCit7CisgICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRG
b3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYgKCFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNz
aW5nVXNlckdlc3R1cmUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVt
b3ZlQmVoYXZpb3JSZXN0cmljdGlvbihBdWRpb0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZv
ckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisgICAgaWYgKHBhZ2VDb25zZW50UmVx
dWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkt
PnBhZ2UoKTsKKyAgICAgICAgaWYgKHBhZ2UgJiYgIXBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkgewor
ICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKHRoaXMpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJlbW92ZUJlaGF2
aW9yUmVzdHJpY3Rpb24oQXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0
YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbV9tZWRpYVNlc3Npb24t
PmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCk7Cit9CisKK3ZvaWQgQXVkaW9Db250ZXh0OjpzdGFy
dFJlbmRlcmluZygpCit7CisgICAgaWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBkZXN0aW5hdGlvbigpLT5zdGFydFJlbmRlcmluZygpOwogICAgIHNldFN0
YXRlKFN0YXRlOjpSdW5uaW5nKTsKIH0KQEAgLTEwNzcsOSArMTEyMywxMSBAQCB2b2lkIEF1ZGlv
Q29udGV4dDo6c3VzcGVuZENvbnRleHQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxs
YmFjaywgc3RkOjpmdQogCiAgICAgYWRkUmVhY3Rpb24oU3RhdGU6OlN1c3BlbmRlZCwgc3VjY2Vz
c0NhbGxiYWNrKTsKIAotICAgIGlmICghbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxQYXVzZVBs
YXliYWNrKCkpCisgICAgaWYgKCF3aWxsUGF1c2VQbGF5YmFjaygpKQogICAgICAgICByZXR1cm47
CiAKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCiAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ry
b25nVGhpcyh0aGlzKTsKICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3VzcGVuZChbc3Ryb25nVGhp
c10gewogICAgICAgICBzdHJvbmdUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKQEAg
LTExMDgsOSArMTE1NiwxMSBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1lQ29udGV4dChzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrLCBzdGQ6OmZ1bgogCiAgICAgYWRkUmVh
Y3Rpb24oU3RhdGU6OlJ1bm5pbmcsIHN1Y2Nlc3NDYWxsYmFjayk7CiAKLSAgICBpZiAoIW1fbWVk
aWFTZXNzaW9uLT5jbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpKQorICAgIGlmICghd2lsbEJlZ2lu
UGxheWJhY2soKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgbGF6eUluaXRpYWxpemUoKTsKKwog
ICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAgbV9kZXN0aW5h
dGlvbk5vZGUtPnJlc3VtZShbc3Ryb25nVGhpc10gewogICAgICAgICBzdHJvbmdUaGlzLT5zZXRT
dGF0ZShTdGF0ZTo6UnVubmluZyk7CkBAIC0xMTMzLDYgKzExODMsOCBAQCB2b2lkIEF1ZGlvQ29u
dGV4dDo6Y2xvc2VDb250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2ss
IHN0ZDo6ZnVuYwogCiAgICAgYWRkUmVhY3Rpb24oU3RhdGU6OkNsb3NlZCwgc3VjY2Vzc0NhbGxi
YWNrKTsKIAorICAgIGxhenlJbml0aWFsaXplKCk7CisKICAgICBSZWZQdHI8QXVkaW9Db250ZXh0
PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIG1fZGVzdGluYXRpb25Ob2RlLT5jbG9zZShbc3Ryb25n
VGhpcywgc3VjY2Vzc0NhbGxiYWNrXSB7CiAgICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0
YXRlOjpDbG9zZWQpOwpAQCAtMTE1Miw2ICsxMjA0LDggQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN1
c3BlbmRQbGF5YmFjaygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBsYXp5SW5pdGlh
bGl6ZSgpOworCiAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAg
ICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3VzcGVuZChbc3Ryb25nVGhpc10gewogICAgICAgICBib29s
IGludGVycnVwdGVkID0gc3Ryb25nVGhpcy0+bV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gTWVk
aWFTZXNzaW9uOjpJbnRlcnJ1cHRlZDsKQEAgLTExNjksNiArMTIyMywxMSBAQCB2b2lkIEF1ZGlv
Q29udGV4dDo6bWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAoIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKICAgICBSZWZQdHI8QXVkaW9Db250ZXh0
PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3N0cm9u
Z1RoaXNdIHsKICAgICAgICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXgg
ODk0MDUyMDkyOTAzZDU4NWNjZjM4YjE2ZTQxN2FjZTExMWU2YWRhOS4uMWZhMDVmM2Y2YTg3MGZm
NTU1NmUyMDMzMzI3OWEyZGJjYzdhNDE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0yNTEsMTQgKzI1MSwxNCBAQCBwdWJsaWM6CiAg
ICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rpb25zOwogCi0gICAg
Ym9vbCB1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9u
OyB9Ci0gICAgYm9vbCBwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJl
c3RyaWN0aW9uOyB9Ci0KKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9CiAgICAgdm9pZCBhZGRCZWhh
dmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVz
dHJpY3Rpb25zIHw9IHJlc3RyaWN0aW9uOyB9CiAgICAgdm9pZCByZW1vdmVCZWhhdmlvclJlc3Ry
aWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25z
ICY9IH5yZXN0cmljdGlvbjsgfQogCiAgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgp
OwogCisgICAgdm9pZCBub2RlV2lsbEJlZ2luUGxheWJhY2soKTsKKwogcHJvdGVjdGVkOgogICAg
IGV4cGxpY2l0IEF1ZGlvQ29udGV4dChEb2N1bWVudCYpOwogICAgIEF1ZGlvQ29udGV4dChEb2N1
bWVudCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywg
ZmxvYXQgc2FtcGxlUmF0ZSk7CkBAIC0yNzEsNiArMjcxLDEyIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBsYXp5SW5pdGlhbGl6ZSgpOwogICAgIHZvaWQgdW5pbml0aWFsaXplKCk7CiAKKyAgICBib29s
IHdpbGxCZWdpblBsYXliYWNrKCk7CisgICAgYm9vbCB3aWxsUGF1c2VQbGF5YmFjaygpOworCisg
ICAgYm9vbCB1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0
aW9uOyB9CisgICAgYm9vbCBwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFy
dFJlc3RyaWN0aW9uOyB9CisKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsgU3VzcGVuZGVkLCBSdW5u
aW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CiAgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5jcHAKaW5kZXggYWZlYTQxNjI4YTFmYTcwY2FkMGMyMGY3M2RlYjI5OWExZTRk
MjVlOS4uNjY0ODZlMTI0NDU3NjlmOTA3Y2UyYmQ3ZDhlZGJmNzQ1M2QzNDRmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKQEAgLTY4LDE4ICs2OCw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJl
bmRlcihBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoY29udGV4dCgpLT51c2VyR2VzdHVyZVJlcXVp
cmVkRm9yQXVkaW9TdGFydCgpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uQnVzLT56ZXJvKCk7Ci0g
ICAgICAgIHNldElzU2lsZW50KHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGNvbnRleHQoKS0+cGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgewotICAg
ICAgICBkZXN0aW5hdGlvbkJ1cy0+emVybygpOwotICAgICAgICBzZXRJc1NpbGVudCh0cnVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIC8vIExldCB0aGUgY29udGV4dCB0YWtlIGNh
cmUgb2YgYW55IGJ1c2luZXNzIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBxdWFudHVtLgog
ICAgIGNvbnRleHQoKS0+aGFuZGxlUHJlUmVuZGVyVGFza3MoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUuY3BwCmluZGV4IGZlNmEzNGQxYTQ3YWM1Nzk4M2QwMTJiZmUzODNkMGVlNThhOTFlNWQuLjcy
M2I5ODhkOTRlYTE4YTllNDg4MGEzNDZkZDU5ZTMxNWZkNDUzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5jcHAKQEAgLTE0Niw4ICsxNDYsNyBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZTo6c3RhcnQoZG91YmxlIHdoZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKCkpCi0gICAgICAgIGNvbnRleHQoKS0+cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlv
bihBdWRpb0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlv
bik7CisgICAgY29udGV4dCgpLT5ub2RlV2lsbEJlZ2luUGxheWJhY2soKTsKIAogICAgIGlmICht
X3BsYXliYWNrU3RhdGUgIT0gVU5TQ0hFRFVMRURfU1RBVEUpIHsKICAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjNmIw
NTNlM2Y3OTI2MDVhMjk2OTU1MTE5ZWRiMWY4NGZlMWZlMjUxLi5lOWJkZmRlYzU2OTMzMDgwMGI1
MDM2ZjEwY2UzYzUyMmYxZmNmZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0xODEsNiArMTgxLDEwIEBACiAjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXIuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIK
KyNlbmRpZgorCiB1c2luZyBKU0M6OkNvZGVCbG9jazsKIHVzaW5nIEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlOwogdXNpbmcgSlNDOjpKU0Z1bmN0aW9uOwpAQCAtMjU4Nyw2ICsyNTkxLDMzIEBAIGJv
b2wgSW50ZXJuYWxzOjplbGVtZW50SXNCbG9ja2luZ0Rpc3BsYXlTbGVlcChFbGVtZW50KiBlbGVt
ZW50KSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQogCisjaWYgRU5BQkxFKFdFQl9B
VURJTykKK3ZvaWQgSW50ZXJuYWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcgJnJlc3RyaWN0aW9uc1N0cmluZywgRXhjZXB0
aW9uQ29kZSAmZWMpCit7CisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQXVkaW9Db250ZXh0
OjpCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBjb250ZXh0LT5iZWhhdmlvclJl
c3RyaWN0aW9ucygpOworICAgIGNvbnRleHQtPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVz
dHJpY3Rpb25zKTsKKworICAgIHJlc3RyaWN0aW9ucyA9IEhUTUxNZWRpYVNlc3Npb246Ok5vUmVz
dHJpY3Rpb25zOworCisgICAgVmVjdG9yPFN0cmluZz4gcmVzdHJpY3Rpb25zQXJyYXk7CisgICAg
cmVzdHJpY3Rpb25zU3RyaW5nLnNwbGl0KCcsJywgZmFsc2UsIHJlc3RyaWN0aW9uc0FycmF5KTsK
KyAgICBmb3IgKGF1dG8mIHJlc3RyaWN0aW9uU3RyaW5nIDogcmVzdHJpY3Rpb25zQXJyYXkpIHsK
KyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiTm9SZXN0
cmljdGlvbnMiKSkKKyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6Ok5v
UmVzdHJpY3Rpb25zOworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25T
dHJpbmcsICJSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0IikpCisgICAgICAgICAgICBy
ZXN0cmljdGlvbnMgfD0gQXVkaW9Db250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0
YXJ0UmVzdHJpY3Rpb247CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZXN0cmljdGlv
blN0cmluZywgIlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnQiKSkKKyAgICAgICAgICAg
IHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlv
U3RhcnRSZXN0cmljdGlvbjsKKyAgICB9CisgICAgY29udGV4dC0+YWRkQmVoYXZpb3JSZXN0cmlj
dGlvbihyZXN0cmljdGlvbnMpOworfQorI2VuZGlmCisKIHZvaWQgSW50ZXJuYWxzOjpzaW11bGF0
ZVN5c3RlbVNsZWVwKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAppbmRleCBhNDY2OTJhN2Y1YjhmZDRhZTc4OWEwNWMxZjRjZjMyNjQwNmEw
OGZiLi5mOTliY2U4NGMxN2I0NzA3MWQ0OTc1MDJmMWUxMjZhNjQzNTg2NGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQxLDYgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBDbGllbnRSZWN0OwogY2xhc3MgQ2xp
ZW50UmVjdExpc3Q7CiBjbGFzcyBET01TdHJpbmdMaXN0OwpAQCAtMzcyLDYgKzM3MywxMCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBlbGVtZW50SXNCbG9ja2luZ0Rpc3BsYXlTbGVlcChFbGVtZW50Kikg
Y29uc3Q7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfQVVESU8pCisgICAgdm9pZCBzZXRBdWRp
b0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250ZXh0KiwgY29uc3QgU3RyaW5nJiByZXN0cmlj
dGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsKKyNlbmRpZgorCiAgICAgdm9pZCBzaW11bGF0ZVN5c3Rl
bVNsZWVwKCkgY29uc3Q7CiAgICAgdm9pZCBzaW11bGF0ZVN5c3RlbVdha2UoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDIwODhkMThlYjY4NzM5NmRjMzFl
NDI4ZmY5YzRlZDJlZjY3ZTUwODguLjdmZTk3ZGVkYzUyZTQ5MjQzMjllN2UyMzg1NTU5YWVkYThj
ZmQxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTMzNiw2ICszMzYs
NyBAQCBlbnVtIFJlc291cmNlTG9hZFByaW9yaXR5IHsKICAgICBbQ29uZGl0aW9uYWw9VklERU9d
IHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCk7CiAgICAgW0NvbmRpdGlvbmFs
PVZJREVPXSB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpOwogICAgIFtDb25k
aXRpb25hbD1WSURFTywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldE1lZGlhU2Vzc2lvblJlc3Ry
aWN0aW9ucyhET01TdHJpbmcgbWVkaWFUeXBlLCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKKyAg
ICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0QXVkaW9D
b250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCBjb250ZXh0LCBET01TdHJpbmcgcmVzdHJp
Y3Rpb25zKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU8sIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBw
b3N0UmVtb3RlQ29udHJvbENvbW1hbmQoRE9NU3RyaW5nIGNvbW1hbmQpOwogICAgIAogICAgIFtD
b25kaXRpb25hbD1WSURFT10gdm9pZCBzaW11bGF0ZVN5c3RlbVNsZWVwKCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDE4
MWQ0MGM0MjVkMTZhZjkzNzczMjY0MzlkNjM4MGMyMThkZjAyZC4uYjMxNDRhNDY2NDM4Nzk2YTdj
MjUzYTllNTc4ZGUwNzUwZDVkMGU5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE1LTA0LTI1
ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdWRpb10g
QXVkaW9Db250ZXh0IGRvZXMgbm90IHJlbW92ZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gZHVy
aW5nIHJlc3VtZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDQyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi1hdWRpb2J1ZmZlcnNvdXJj
ZW5vZGUtc3RhcnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9hdWRp
b2NvbnRleHQtcmVzdHJpY3Rpb24tYXVkaW9idWZmZXJzb3VyY2Vub2RlLXN0YXJ0Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9yZXNvdXJjZXMvYXVkaW8tdGVzdGlu
Zy5qczoKKyAgICAgICAgKHJ1bldpdGhLZXlEb3duKToKKwogMjAxNS0wNC0yNCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBDb29raWVzIHNldCBkdXJp
bmcgbWVkaWEgbG9hZGluZyBhcmUgbm90IGFkZGVkIHRvIGNvb2tpZSBzdG9yZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXJlc3RyaWN0aW9uLWF1ZGlvYnVm
ZmVyc291cmNlbm9kZS1zdGFydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9h
dWRpb2NvbnRleHQtcmVzdHJpY3Rpb24tYXVkaW9idWZmZXJzb3VyY2Vub2RlLXN0YXJ0LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZjYwZjY2MTk5Y2FiMDcxZjVkZmUzY2Q3ZTk0YTk3Y2RmZjkz
OWYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0
LXJlc3RyaWN0aW9uLWF1ZGlvYnVmZmVyc291cmNlbm9kZS1zdGFydC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNiBAQAorQmFzaWMgdGVzdHMgZm9yIEF1ZGlvTm9kZSBBUEkuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBjb250ZXh0LnN0YXRlIGlzICJzdXNwZW5kZWQiCitu
b2RlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbikKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAi
c3VzcGVuZGVkIgorQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgpIHdpdGhvdXQgYSB1c2VyIGdlc3R1
cmUKK1dhaXQgZm9yIDEwMG1zCitDYWxsaW5nIG5vZGUuc3RhcnQoKSB3aXRoIGEgdXNlciBnZXN0
dXJlCitQQVNTIGNvbnRleHQucmVzdW1lKCkgKHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUpIHByb21p
c2UgcmVzb2x2ZWQKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAicnVubmluZyIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtcmVzdHJpY3Rpb24tYXVkaW9idWZmZXJzb3Vy
Y2Vub2RlLXN0YXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtcmVz
dHJpY3Rpb24tYXVkaW9idWZmZXJzb3VyY2Vub2RlLXN0YXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIx
ZGZjYzkxYThjNjZhMDg3YmVjMzExYWY5MzBkYTJlMzZhYzVhMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi1hdWRpb2J1ZmZl
cnNvdXJjZW5vZGUtc3RhcnQuaHRtbApAQCAtMCwwICsxLDY5IEBACis8IURPQ1RZUEUgaHRtbD4K
KworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3Vy
Y2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oJ0Jhc2ljIHRlc3RzIGZvciBBdWRpb05vZGUgQVBJLicpOworCit2
YXIgY29udGV4dCA9IG51bGw7Cit2YXIgbm9kZSA9IG51bGw7Cit2YXIgY2FsbGVkUmVzdW1lV2l0
aFVzZXJHZXN0dXJlID0gZmFsc2U7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4
dCgpOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRB
dWRpb0NvbnRleHRSZXN0cmljdGlvbnMoY29udGV4dCwgJ1JlcXVpcmVVc2VyR2VzdHVyZUZvckF1
ZGlvU3RhcnQnKTsKKworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJzdXNwZW5kZWQi
Jyk7CisKKyAgICBub2RlID0gY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTsKKyAgICBldmFs
QW5kTG9nKCdub2RlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbiknKTsKKworICAgIHNob3Vs
ZEJlKCdjb250ZXh0LnN0YXRlJywgJyJzdXNwZW5kZWQiJyk7CisKKyAgICBkZWJ1ZygnQ2FsbGlu
ZyBjb250ZXh0LnJlc3VtZSgpIHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUnKTsKKyAgICBjb250ZXh0
LnJlc3VtZSgpLnRoZW4obm9Vc2VyR2VzdHVyZVJlc3VtZVN1Y2NlZWRlZCwgbm9Vc2VyR2VzdHVy
ZVJlc3VtZUZhaWxlZCk7CisKKyAgICBkZWJ1ZygnV2FpdCBmb3IgMTAwbXMnKTsKKyAgICB3aW5k
b3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBkZWJ1ZygnQ2FsbGluZyBub2RlLnN0YXJ0KCkgd2l0aCBhIHVz
ZXIgZ2VzdHVyZScpOworICAgICAgICAgICAgbm9kZS5zdGFydCgpOworICAgICAgICB9KTsKKyAg
ICB9LCAxMDApOworfQorCitmdW5jdGlvbiBub1VzZXJHZXN0dXJlUmVzdW1lRmFpbGVkKCkgewor
ICAgIHRlc3RGYWlsZWQoJ2NvbnRleHQucmVzdW1lKCkgKHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUp
IHByb21pc2UgcmVqZWN0ZWQnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24g
bm9Vc2VyR2VzdHVyZVJlc3VtZVN1Y2NlZWRlZCgpIHsKKyAgICB0ZXN0UGFzc2VkKCdjb250ZXh0
LnJlc3VtZSgpICh3aXRob3V0IGEgdXNlciBnZXN0dXJlKSBwcm9taXNlIHJlc29sdmVkJyk7Cisg
ICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInJ1bm5pbmciJyk7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1yZXN0cmljdGlvbi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtcmVzdHJpY3Rp
b24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNGQ2ZmRjMjA3YzIzYTJlOWI5NGNmOWZkNTA5
MzE4MTcwYjVhODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRp
b2NvbnRleHQtcmVzdHJpY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK0Jhc2lj
IHRlc3RzIGZvciBBdWRpb05vZGUgQVBJLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K1BBU1MgY29udGV4dC5zdGF0ZSBpcyAic3VzcGVuZGVkIgorbm9kZS5jb25uZWN0KGNvbnRleHQu
ZGVzdGluYXRpb24pCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKK0NhbGxpbmcg
Y29udGV4dC5yZXN1bWUoKSB3aXRob3V0IGEgdXNlciBnZXN0dXJlCitXYWl0IGZvciAxMDBtcwor
Q2FsbGluZyBjb250ZXh0LnJlc3VtZSgpIHdpdGggYSB1c2VyIGdlc3R1cmUKK1BBU1MgY29udGV4
dC5yZXN1bWUoKSAod2l0aG91dCBhIHVzZXIgZ2VzdHVyZSkgcHJvbWlzZSByZXNvbHZlZAorUEFT
UyBjb250ZXh0LnN0YXRlIGlzICJydW5uaW5nIgorUEFTUyBjb250ZXh0LnJlc3VtZSgpICh3aXRo
IGEgdXNlciBnZXN0dXJlKSBwcm9taXNlIHJlc29sdmVkCitQQVNTIGNvbnRleHQuc3RhdGUgaXMg
InJ1bm5pbmciCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXJlc3Ry
aWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtcmVzdHJpY3Rp
b24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43Y2YxY2YyZmQ2Nzk2YWJlZTRiMWY0NGYwNGE0MzYwMWMzY2Jj
NmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0
LXJlc3RyaWN0aW9uLmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InJlc291cmNlcy9h
dWRpby10ZXN0aW5nLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCdCYXNpYyB0ZXN0cyBmb3IgQXVkaW9Ob2RlIEFQSS4nKTsKKwordmFyIGNv
bnRleHQgPSBudWxsOwordmFyIG5vZGUgPSBudWxsOwordmFyIGNhbGxlZFJlc3VtZVdpdGhVc2Vy
R2VzdHVyZSA9IGZhbHNlOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQoKTsK
KworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0QXVkaW9D
b250ZXh0UmVzdHJpY3Rpb25zKGNvbnRleHQsICdSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0
YXJ0Jyk7CisKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICcic3VzcGVuZGVkIicpOwor
CisgICAgbm9kZSA9IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgZXZhbEFuZExv
Zygnbm9kZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pJyk7CisKKyAgICBzaG91bGRCZSgn
Y29udGV4dC5zdGF0ZScsICcic3VzcGVuZGVkIicpOworCisgICAgZGVidWcoJ0NhbGxpbmcgY29u
dGV4dC5yZXN1bWUoKSB3aXRob3V0IGEgdXNlciBnZXN0dXJlJyk7CisgICAgY29udGV4dC5yZXN1
bWUoKS50aGVuKG5vVXNlckdlc3R1cmVSZXN1bWVTdWNjZWVkZWQsIG5vVXNlckdlc3R1cmVSZXN1
bWVGYWlsZWQpOworCisgICAgZGVidWcoJ1dhaXQgZm9yIDEwMG1zJyk7CisgICAgd2luZG93LnNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgZGVidWcoJ0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKSB3aXRoIGEgdXNl
ciBnZXN0dXJlJyk7CisgICAgICAgICAgICBjb250ZXh0LnJlc3VtZSgpLnRoZW4ocmVzdW1lU3Vj
Y2VlZGVkLCByZXN1bWVGYWlsZWQpOworICAgICAgICAgICAgY2FsbGVkUmVzdW1lV2l0aFVzZXJH
ZXN0dXJlID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgfSwgMTAwKTsKK30KKworZnVuY3Rpb24g
bm9Vc2VyR2VzdHVyZVJlc3VtZUZhaWxlZCgpIHsKKyAgICB0ZXN0RmFpbGVkKCdjb250ZXh0LnJl
c3VtZSgpICh3aXRob3V0IGEgdXNlciBnZXN0dXJlKSBwcm9taXNlIHJlamVjdGVkJyk7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIG5vVXNlckdlc3R1cmVSZXN1bWVTdWNjZWVk
ZWQoKSB7CisgICAgaWYgKCFjYWxsZWRSZXN1bWVXaXRoVXNlckdlc3R1cmUpIHsKKyAgICAgICAg
dGVzdEZhaWxlZCgnY29udGV4dC5yZXN1bWUoKSAod2l0aG91dCBhIHVzZXIgZ2VzdHVyZSkgc3Vj
ZWVkZWQgaW5jb3JyZWN0bHkuJyk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIHRlc3RQYXNzZWQoJ2NvbnRleHQucmVzdW1lKCkgKHdpdGhvdXQg
YSB1c2VyIGdlc3R1cmUpIHByb21pc2UgcmVzb2x2ZWQnKTsKKyAgICBzaG91bGRCZSgnY29udGV4
dC5zdGF0ZScsICcicnVubmluZyInKTsKK30KKworZnVuY3Rpb24gcmVzdW1lRmFpbGVkKCkgewor
ICAgIHRlc3RGYWlsZWQoJ2NvbnRleHQucmVzdW1lKCkgKHdpdGggYSB1c2VyIGdlc3R1cmUpIHBy
b21pc2UgcmVqZWN0ZWQnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcmVz
dW1lU3VjY2VlZGVkKCkgeworICAgIHRlc3RQYXNzZWQoJ2NvbnRleHQucmVzdW1lKCkgKHdpdGgg
YSB1c2VyIGdlc3R1cmUpIHByb21pc2UgcmVzb2x2ZWQnKTsKKyAgICBzaG91bGRCZSgnY29udGV4
dC5zdGF0ZScsICcicnVubmluZyInKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVz
dCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViYXVkaW8vcmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMgYi9MYXlvdXRUZXN0cy93ZWJh
dWRpby9yZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcwppbmRleCA5ZDNlMGM2MTNhZWQ3MTM1NDAy
NDk4NTcyNmY5YzYwOWEzY2YzN2Q0Li4zNDg4Mjc5MTg5MjhiZTA0NjE5ODIyY2MzOWY3ZTE3NGJl
NWE5ZWNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvYXVkaW8t
dGVzdGluZy5qcworKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvYXVkaW8tdGVz
dGluZy5qcwpAQCAtMTkwLDMgKzE5MCwyMyBAQCBmdW5jdGlvbiBzaG91bGRUaHJvd1R5cGVFcnJv
cihmdW5jLCB0ZXh0KSB7CiAgICAgICAgIHRlc3RGYWlsZWQodGV4dCArICIgc2hvdWxkIHRocm93
IFR5cGVFcnJvci4iKTsKICAgICB9CiB9CisKK2Z1bmN0aW9uIHJ1bldpdGhLZXlEb3duKGZuKSAK
K3sKKyAgICAvLyBGSVhNRTogV0tUUiBkb2VzIG5vdCB5ZXQgc3VwcG9ydCB0aGUga2V5RG93bigp
IG1lc3NhZ2UuICBEbyBhIG1vdXNlRG93biBoZXJlCisgICAgLy8gaW5zdGVhZCB1bnRpbCBrZXlE
b3duIHN1cHBvcnQgaXMgYWRkZWQuCisgICAgdmFyIGV2ZW50TmFtZSA9ICF3aW5kb3cudGVzdFJ1
bm5lciB8fCBldmVudFNlbmRlci5rZXlEb3duID8gJ2tleXByZXNzJyA6ICdtb3VzZWRvd24nCisK
KyAgICBmdW5jdGlvbiB0aHVuaygpIHsKKyAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWUsIHRodW5rLCBmYWxzZSk7CisgICAgICAgIGZuKCk7CisgICAgfQorICAg
IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aHVuaywgZmFsc2UpOworCisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIGlmIChldmVudFNlbmRlci5rZXlE
b3duKQorICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiICIsIFtdKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgfQorfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>