<?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>145284</bug_id>
          
          <creation_ts>2015-05-21 14:35:00 -0700</creation_ts>
          <short_desc>r184718 and r184725 caused four tests to begin crashing</short_desc>
          <delta_ts>2015-05-21 16:14:29 -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>Tools / Tests</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>
          
          <blocked>145209</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jake Nielsen">jake.nielsen.webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1096672</commentid>
    <comment_count>0</comment_count>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2015-05-21 14:35:00 -0700</bug_when>
    <thetext>Self explanatory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096674</commentid>
    <comment_count>1</comment_count>
      <attachid>253543</attachid>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2015-05-21 14:36:19 -0700</bug_when>
    <thetext>Created attachment 253543
Rolls back said revisions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096676</commentid>
    <comment_count>2</comment_count>
      <attachid>253543</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-21 14:40:04 -0700</bug_when>
    <thetext>Comment on attachment 253543
Rolls back said revisions

Rejecting attachment 253543 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 253543, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.appspot.com/results/4905673250832384</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096677</commentid>
    <comment_count>3</comment_count>
      <attachid>253545</attachid>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2015-05-21 14:50:42 -0700</bug_when>
    <thetext>Created attachment 253545
Adds &quot;Unreviewed rollback&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096684</commentid>
    <comment_count>4</comment_count>
      <attachid>253545</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-21 15:45:24 -0700</bug_when>
    <thetext>Comment on attachment 253545
Adds &quot;Unreviewed rollback&quot;

Clearing flags on attachment: 253545

Committed r184734: &lt;http://trac.webkit.org/changeset/184734&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096685</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-21 15:45:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253543</attachid>
            <date>2015-05-21 14:36:19 -0700</date>
            <delta_ts>2015-05-21 14:50:42 -0700</delta_ts>
            <desc>Rolls back said revisions</desc>
            <filename>rollback_patch.diff</filename>
            <type>text/plain</type>
            <size>31167</size>
            <attacher name="Jake Nielsen">jake.nielsen.webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDczMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE1LTA1LTIxICBKYWtlIE5p
ZWxzZW4gIDxqYWNvYl9uaWVsc2VuQGFwcGxlLmNvbT4KKworICAgICAgICByMTg0NzE4IGFuZCBy
MTg0NzI1IGNhdXNlZCBmb3VyIHRlc3RzIHRvIGJlZ2luIGNyYXNoaW5nCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgdGhhdCBzdGFydGVkIGNy
YXNoaW5nOgorCisgICAgICAgIHN2Zy9jYXJ0by5uZXQvdGV4dGJveC5zdmcgc3ZnL2N1c3RvbS90
cmVmLWNsb25lLWNyYXNoLmh0bWwgc3ZnL2N1c3RvbS91c2UtYW5pbWF0aW9uLWluLWZpbGwuaHRt
bCBzdmcvY3VzdG9tL3VzZS1tdWx0aXBsZS1vbi1uZXN0ZWQtZGlzYWxsb3dlZC1mb250Lmh0bWwK
KworICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cHJvcGVydHlUeXBlc0FyZUNvbnNpc3RlbnQpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6
OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6ZXhl
Y3V0ZUFjdGlvbik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0N1
cnNvckVsZW1lbnQ6On5TVkdDdXJzb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0N1
cnNvckVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5z
aW9uczo6cGF1c2VBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6dW5wYXVzZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjpkaXNwYXRjaFNWR0xvYWRFdmVudFRvT3V0ZXJtb3N0U1ZHRWxlbWVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjppc0VsZW1lbnRXaXRo
UGVuZGluZ1Jlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OnJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUFsbFRhcmdldFJlZmVyZW5jZXNGb3JFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVidWlsZEVs
ZW1lbnRzKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3B1bGF0ZUF0dHJpYnV0ZU5hbWVUb0NTU1Byb3BlcnR5SURNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6cG9wdWxhdGVBdHRyaWJ1dGVOYW1lVG9BbmltYXRlZFByb3BlcnR5VHlwZU1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGVOYW1lVG9BbmltYXRlZFByb3BlcnR5VHlwZU1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpwb3B1bGF0ZUNTU1Byb3BlcnR5V2l0aFNWR0RPTU5hbWVUb0Fu
aW1hdGVkUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5V2l0
aFNWR0RPTU5hbWVUb0FuaW1hdGVkUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6
Omhhc0xvYWRMaXN0ZW5lcik6CisgICAgICAgICogc3ZnL1NWR0ZvbnREYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZvbnREYXRhOjphcHBseVNWR0dseXBoU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEVs
ZW1lbnQ6OnJlZ2lzdGVyTGlnYXR1cmVzSW5HbHlwaENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0tlcm5pbmdNYXA6Omluc2VydCk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdNYXRjaGVz
VW5pY29kZVJhbmdlKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhCeXRlU3RyZWFtOjpiZWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoQnl0ZVN0cmVhbTo6ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCeXRl
U3RyZWFtOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ5dGVTdHJlYW06OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCeXRlU3RyZWFtOjppc0VtcHR5KToKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBl
bmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKToKKyAgICAgICAgKiBzdmcvYW5pbWF0
aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNNSUxUaW1lQ29u
dGFpbmVyOjpzZXRFbGFwc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVy
Ojp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZUJlZ2luT3JF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OmNvbm5lY3RDb25kaXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpkaXNjb25uZWN0Q29uZGl0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6bm90aWZ5RGVwZW5kZW50c0lu
dGVydmFsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6Y3JlYXRl
SW5zdGFuY2VUaW1lc0Zyb21TeW5jYmFzZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWls
ZGVyOjpjbGVhclJlc3VsdHNSZWN1cnNpdmUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxk
ZXI6OmFkZEJ1aWx0aW5FZmZlY3RzKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6
On5TVkdBbmltYXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdMaXN0
UHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6ZGV0YWNoTGlz
dFdyYXBwZXJzQW5kUmVzaXplKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlz
dFByb3BlcnR5VGVhck9mZjo6Y2xlYXJDb250ZXh0QW5kUm9sZXMpOgorCiAyMDE1LTA1LTIxICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFNjcm9sbC1zbmFw
IHBvaW50cyBuZWVkcyB0byBiZSB1cGRhdGVkIGR1cmluZyBwcm9ncmFtbWF0aWMgc2Nyb2xscwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAJKHJl
dmlzaW9uIDE4NDczMykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsMTEgKzE3MSwxMiBAQAogI2lmbmRlZiBOREVC
VUcKIHN0YXRpYyBpbmxpbmUgYm9vbCBwcm9wZXJ0eVR5cGVzQXJlQ29uc2lzdGVudChBbmltYXRl
ZFByb3BlcnR5VHlwZSBleHBlY3RlZFByb3BlcnR5VHlwZSwgY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQogewotICAgIGZvciAoYXV0byYgdHlwZSA6
IGFuaW1hdGVkVHlwZXMpIHsKLSAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHR5cGUucHJv
cGVydGllcykgewotICAgICAgICAgICAgaWYgKGV4cGVjdGVkUHJvcGVydHlUeXBlICE9IHByb3Bl
cnR5LT5hbmltYXRlZFByb3BlcnR5VHlwZSgpKSB7CisgICAgU1ZHRWxlbWVudEFuaW1hdGVkUHJv
cGVydHlMaXN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBhbmltYXRlZFR5cGVzLmVuZCgpOworICAg
IGZvciAoU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Ojpjb25zdF9pdGVyYXRvciBpdCA9
IGFuaW1hdGVkVHlwZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgaXQtPnByb3BlcnRpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
ICAgIGlmIChleHBlY3RlZFByb3BlcnR5VHlwZSAhPSBpdC0+cHJvcGVydGllc1tpXS0+YW5pbWF0
ZWRQcm9wZXJ0eVR5cGUoKSkgewogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkg
YWxsb3dlZCBpbmNvbnNpc3RlbmN5LiBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IgaGFuZGxlcyBi
b3RoIFNWR0FuaW1hdGVkQW5nbGUgJiBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGZvciBtYXJrZXJz
IG9yaWVudCBhdHRyaWJ1dGUuCi0gICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUHJvcGVydHlU
eXBlID09IEFuaW1hdGVkQW5nbGUgJiYgcHJvcGVydHktPmFuaW1hdGVkUHJvcGVydHlUeXBlKCkg
PT0gQW5pbWF0ZWRFbnVtZXJhdGlvbikKKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRQcm9w
ZXJ0eVR5cGUgPT0gQW5pbWF0ZWRBbmdsZSAmJiBpdC0+cHJvcGVydGllc1tpXS0+YW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUoKSA9PSBBbmltYXRlZEVudW1lcmF0aW9uKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAkocmV2aXNpb24g
MTg0NzMzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDEzICs1MCwxNSBAQAogCiAgICAgVmVjdG9yPFJlZlB0cjxTVkdBbmlt
YXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPj4gcmVzdWx0OwogCi0gICAgZm9yIChhdXRv
JiB0eXBlIDogYW5pbWF0ZWRUeXBlcykKLSAgICAgICAgcmVzdWx0LmFwcGVuZChjYXN0QW5pbWF0
ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZTxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFy
T2ZmPih0eXBlLnByb3BlcnRpZXNbMF0uZ2V0KCkpKTsKKyAgICBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGFuaW1hdGVkVHlwZXMuZW5kKCk7Cisg
ICAgZm9yIChTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gYW5pbWF0ZWRUeXBlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoY2FzdEFuaW1hdGVkUHJvcGVydHlUb0FjdHVhbFR5cGU8U1ZHQW5pbWF0ZWRQYXRo
U2VnTGlzdFByb3BlcnR5VGVhck9mZj4oaXQtPnByb3BlcnRpZXNbMF0uZ2V0KCkpKTsKIAogICAg
IFNWR0VsZW1lbnQ6Okluc3RhbmNlVXBkYXRlQmxvY2tlciBibG9ja2VyKCpwcm9wZXJ0eS0+Y29u
dGV4dEVsZW1lbnQoKSk7CiAKLSAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiByZXN1bHQpCi0gICAg
ICAgIHNlZ21lbnQtPmFuaW1hdGlvblN0YXJ0ZWQoYnl0ZVN0cmVhbS5nZXQoKSwgJmJhc2VWYWx1
ZSk7CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSByZXN1bHQuc2l6ZSgpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVzdWx0U2l6ZTsgKytpKQorICAgICAgICByZXN1bHRbaV0tPmFuaW1h
dGlvblN0YXJ0ZWQoYnl0ZVN0cmVhbS5nZXQoKSwgJmJhc2VWYWx1ZSk7CiAKICAgICByZXR1cm4g
U1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQYXRoKFdURjo6bW92ZShieXRlU3RyZWFtKSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaAkocmV2
aXNpb24gMTg0NzMzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw5ICsxOTEsMTAgQEAKICAgICAgICAgLy8gRklY
TUU6IENhbid0IHVzZSBTVkdFbGVtZW50OjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgYmVjYXVzZSBv
ZiBjaXJjdWxhciBoZWFkZXIgZGVwZW5kZW5jeS4gV291bGQgYmUgbmljZSB0byB1bnRhbmdsZSB0
aGlzLgogICAgICAgICBzZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCphbmltYXRlZFR5cGVzWzBd
LmVsZW1lbnQsIHRydWUpOwogCi0gICAgICAgIGZvciAoYXV0byYgYW5pbWF0ZWRUeXBlIDogYW5p
bWF0ZWRUeXBlcykgewotICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04od2hpY2hQcm9wZXJ0eSA8IGFuaW1hdGVkVHlwZS5wcm9wZXJ0aWVzLnNpemUoKSk7Ci0gICAg
ICAgICAgICBBbmltVmFsVHlwZSogcHJvcGVydHkgPSBjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0
dWFsVHlwZTxBbmltVmFsVHlwZT4oYW5pbWF0ZWRUeXBlLnByb3BlcnRpZXNbd2hpY2hQcm9wZXJ0
eV0uZ2V0KCkpOworICAgICAgICBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Q6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGFuaW1hdGVkVHlwZXMuZW5kKCk7CisgICAgICAgIGZvciAoU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Ojpjb25zdF9pdGVyYXRvciBpdCA9IGFuaW1hdGVkVHlw
ZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTih3aGljaFByb3BlcnR5IDwgaXQtPnByb3BlcnRpZXMuc2l6ZSgp
KTsKKyAgICAgICAgICAgIEFuaW1WYWxUeXBlKiBwcm9wZXJ0eSA9IGNhc3RBbmltYXRlZFByb3Bl
cnR5VG9BY3R1YWxUeXBlPEFuaW1WYWxUeXBlPihpdC0+cHJvcGVydGllc1t3aGljaFByb3BlcnR5
XS5nZXQoKSk7CiAKICAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgICAgICAgICBj
YXNlIFN0YXJ0QW5pbWF0aW9uQWN0aW9uOgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMTg0NzMzKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsOCArMTY3
LDggQEAKICAgICAgICAgLy8gYW5kIHdoaXRlIHNwYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgc2VtaWNv
bG9uIHNlcGFyYXRvcnMsIGlzIGFsbG93ZWQgYW5kIHdpbGwgYmUgaWdub3JlZC4KICAgICAgICAg
Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvYW5pbWF0ZS5odG1sI1ZhbHVlc0F0dHJpYnV0
ZQogICAgICAgICB2YWx1ZS5zdHJpbmcoKS5zcGxpdCgnOycsIG1fdmFsdWVzKTsKLSAgICAgICAg
Zm9yIChhdXRvJiB2YWx1ZSA6IG1fdmFsdWVzKQotICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5z
dHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmFs
dWVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV92YWx1ZXNbaV0gPSBtX3ZhbHVlc1tpXS5z
dHJpcFdoaXRlU3BhY2UoKTsKIAogICAgICAgICB1cGRhdGVBbmltYXRpb25Nb2RlKCk7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE4NDczMykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsOCArNTgsOSBAQAogCiBTVkdDdXJzb3JFbGVtZW50
Ojp+U1ZHQ3Vyc29yRWxlbWVudCgpCiB7Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCi0gICAgICAgIGNsaWVudC0+Y3Vyc29yRWxlbWVudFJlbW92ZWQoKTsKKyAgICBIYXNoU2V0
PFNWR0VsZW1lbnQqPjo6aXRlcmF0b3IgZW5kID0gbV9jbGllbnRzLmVuZCgpOworICAgIGZvciAo
SGFzaFNldDxTVkdFbGVtZW50Kj46Oml0ZXJhdG9yIGl0ID0gbV9jbGllbnRzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPmN1cnNvckVsZW1lbnRSZW1vdmVkKCk7CiB9
CiAKIGJvb2wgU1ZHQ3Vyc29yRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmNwcAkocmV2aXNpb24gMTg0NzMzKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxNCAr
MTAxLDE2IEBACiAKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpwYXVzZUFuaW1hdGlvbnMo
KQogewotICAgIGZvciAoYXV0byYgY29udGFpbmVyIDogbV90aW1lQ29udGFpbmVycykKLSAgICAg
ICAgY29udGFpbmVyLT5wYXVzZUFuaW1hdGlvbnMoKTsKKyAgICBhdXRvIGVuZCA9IG1fdGltZUNv
bnRhaW5lcnMuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gbV90aW1lQ29udGFpbmVycy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICgqaXQpLT5wYXVzZUFuaW1hdGlvbnMoKTsK
IH0KIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnVucGF1c2VBbmltYXRpb25zKCkKIHsK
LSAgICBmb3IgKGF1dG8mIGNvbnRhaW5lciA6IG1fdGltZUNvbnRhaW5lcnMpCi0gICAgICAgIGNv
bnRhaW5lci0+dW5wYXVzZUFuaW1hdGlvbnMoKTsKKyAgICBhdXRvIGVuZCA9IG1fdGltZUNvbnRh
aW5lcnMuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gbV90aW1lQ29udGFpbmVycy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICgqaXQpLT51bnBhdXNlQW5pbWF0aW9ucygpOwog
fQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6ZGlzcGF0Y2hTVkdMb2FkRXZlbnRUb091
dGVybW9zdFNWR0VsZW1lbnRzKCkKQEAgLTExNiwxMCArMTE4LDEyIEBACiAgICAgVmVjdG9yPFJl
ZlB0cjxTVkdTVkdFbGVtZW50Pj4gdGltZUNvbnRhaW5lcnM7CiAgICAgdGltZUNvbnRhaW5lcnMu
YXBwZW5kUmFuZ2UobV90aW1lQ29udGFpbmVycy5iZWdpbigpLCBtX3RpbWVDb250YWluZXJzLmVu
ZCgpKTsKIAotICAgIGZvciAoYXV0byYgY29udGFpbmVyIDogbV90aW1lQ29udGFpbmVycykgewot
ICAgICAgICBpZiAoIWNvbnRhaW5lci0+aXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkpCisgICAg
YXV0byBlbmQgPSB0aW1lQ29udGFpbmVycy5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSB0aW1l
Q29udGFpbmVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgU1ZHU1ZHRWxl
bWVudCogb3V0ZXJTVkcgPSAoKml0KS5nZXQoKTsKKyAgICAgICAgaWYgKCFvdXRlclNWRy0+aXNP
dXRlcm1vc3RTVkdTVkdFbGVtZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
Y29udGFpbmVyLT5zZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZSgpOworICAgICAgICBvdXRlclNW
Ry0+c2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUoKTsKICAgICB9CiB9CiAKQEAgLTE2Nyw3ICsx
NzEsOSBAQAogICAgIC8vIFRoaXMgYWxnb3JpdGhtIHRha2VzIHRpbWUgcHJvcG9ydGlvbmFsIHRv
IHRoZSBudW1iZXIgb2YgcGVuZGluZyByZXNvdXJjZXMgYW5kIG5lZWQgbm90LgogICAgIC8vIElm
IHBlcmZvcm1hbmNlIGJlY29tZXMgYW4gaXNzdWUgd2UgY2FuIGtlZXAgYSBjb3VudGVkIHNldCBv
ZiBlbGVtZW50cyBhbmQgYW5zd2VyIHRoZSBxdWVzdGlvbiBlZmZpY2llbnRseS4KICAgICBBU1NF
UlQoZWxlbWVudCk7Ci0gICAgZm9yIChhdXRvJiBlbGVtZW50cyA6IG1fcGVuZGluZ1Jlc291cmNl
cy52YWx1ZXMoKSkgeworICAgIGF1dG8gZW5kID0gbV9wZW5kaW5nUmVzb3VyY2VzLmVuZCgpOwor
ICAgIGZvciAoYXV0byBpdCA9IG1fcGVuZGluZ1Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgUGVuZGluZ0VsZW1lbnRzKiBlbGVtZW50cyA9IGl0LT52YWx1ZS5n
ZXQoKTsKICAgICAgICAgQVNTRVJUKGVsZW1lbnRzKTsKIAogICAgICAgICBpZiAoZWxlbWVudHMt
PmNvbnRhaW5zKGVsZW1lbnQpKQpAQCAtMTk5LDM5ICsyMDUsNDMgQEAKICAgICAvLyBSZW1vdmUg
dGhlIGVsZW1lbnQgZnJvbSBwZW5kaW5nIHJlc291cmNlcy4KICAgICBpZiAoIW1fcGVuZGluZ1Jl
c291cmNlcy5pc0VtcHR5KCkgJiYgZWxlbWVudC0+aGFzUGVuZGluZ1Jlc291cmNlcygpKSB7CiAg
ICAgICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHRvQmVSZW1vdmVkOwotICAgICAgICBmb3IgKGF1
dG8mIHJlc291cmNlIDogbV9wZW5kaW5nUmVzb3VyY2VzKSB7Ci0gICAgICAgICAgICBQZW5kaW5n
RWxlbWVudHMqIGVsZW1lbnRzID0gcmVzb3VyY2UudmFsdWUuZ2V0KCk7CisgICAgICAgIGF1dG8g
ZW5kID0gbV9wZW5kaW5nUmVzb3VyY2VzLmVuZCgpOworICAgICAgICBmb3IgKGF1dG8gaXQgPSBt
X3BlbmRpbmdSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAg
ICBQZW5kaW5nRWxlbWVudHMqIGVsZW1lbnRzID0gaXQtPnZhbHVlLmdldCgpOwogICAgICAgICAg
ICAgQVNTRVJUKGVsZW1lbnRzKTsKICAgICAgICAgICAgIEFTU0VSVCghZWxlbWVudHMtPmlzRW1w
dHkoKSk7CiAKICAgICAgICAgICAgIGVsZW1lbnRzLT5yZW1vdmUoZWxlbWVudCk7CiAgICAgICAg
ICAgICBpZiAoZWxlbWVudHMtPmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICB0b0JlUmVtb3Zl
ZC5hcHBlbmQocmVzb3VyY2Uua2V5KTsKKyAgICAgICAgICAgICAgICB0b0JlUmVtb3ZlZC5hcHBl
bmQoaXQtPmtleSk7CiAgICAgICAgIH0KIAogICAgICAgICBjbGVhckhhc1BlbmRpbmdSZXNvdXJj
ZXNJZlBvc3NpYmxlKGVsZW1lbnQpOwogCiAgICAgICAgIC8vIFdlIHVzZSB0aGUgcmVtb3ZlUGVu
ZGluZ1Jlc291cmNlIGZ1bmN0aW9uIGhlcmUgYmVjYXVzZSBpdCBkZWFscyB3aXRoIHNldCBsaWZl
dGltZSBjb3JyZWN0bHkuCi0gICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiB0b0JlUmVtb3Zl
ZCkKLSAgICAgICAgICAgIHJlbW92ZVBlbmRpbmdSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAg
IGF1dG8gdmVjdG9yRW5kID0gdG9CZVJlbW92ZWQuZW5kKCk7CisgICAgICAgIGZvciAoYXV0byBp
dCA9IHRvQmVSZW1vdmVkLmJlZ2luKCk7IGl0ICE9IHZlY3RvckVuZDsgKytpdCkKKyAgICAgICAg
ICAgIHJlbW92ZVBlbmRpbmdSZXNvdXJjZSgqaXQpOwogICAgIH0KIAogICAgIC8vIFJlbW92ZSB0
aGUgZWxlbWVudCBmcm9tIHBlbmRpbmcgcmVzb3VyY2VzIHRoYXQgd2VyZSBzY2hlZHVsZWQgZm9y
IHJlbW92YWwuCiAgICAgaWYgKCFtX3BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsLmlzRW1wdHko
KSkgewogICAgICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiB0b0JlUmVtb3ZlZDsKLSAgICAgICAg
Zm9yIChhdXRvJiByZXNvdXJjZSA6IG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwpIHsKLSAg
ICAgICAgICAgIFBlbmRpbmdFbGVtZW50cyogZWxlbWVudHMgPSByZXNvdXJjZS52YWx1ZS5nZXQo
KTsKKyAgICAgICAgYXV0byBlbmQgPSBtX3BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsLmVuZCgp
OworICAgICAgICBmb3IgKGF1dG8gaXQgPSBtX3BlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgUGVuZGluZ0VsZW1lbnRzKiBl
bGVtZW50cyA9IGl0LT52YWx1ZS5nZXQoKTsKICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50cyk7
CiAgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnRzLT5pc0VtcHR5KCkpOwogCiAgICAgICAgICAg
ICBlbGVtZW50cy0+cmVtb3ZlKGVsZW1lbnQpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnRzLT5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgdG9CZVJlbW92ZWQuYXBwZW5kKHJlc291cmNlLmtl
eSk7CisgICAgICAgICAgICAgICAgdG9CZVJlbW92ZWQuYXBwZW5kKGl0LT5rZXkpOwogICAgICAg
ICB9CiAKICAgICAgICAgLy8gV2UgdXNlIHRoZSByZW1vdmVQZW5kaW5nUmVzb3VyY2VGb3JSZW1v
dmFsIGZ1bmN0aW9uIGhlcmUgYmVjYXVzZSBpdCBkZWFscyB3aXRoIHNldCBsaWZldGltZSBjb3Jy
ZWN0bHkuCi0gICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiB0b0JlUmVtb3ZlZCkKLSAgICAg
ICAgICAgIHJlbW92ZVBlbmRpbmdSZXNvdXJjZUZvclJlbW92YWwocmVzb3VyY2UpOworICAgICAg
ICBhdXRvIHZlY3RvckVuZCA9IHRvQmVSZW1vdmVkLmVuZCgpOworICAgICAgICBmb3IgKGF1dG8g
aXQgPSB0b0JlUmVtb3ZlZC5iZWdpbigpOyBpdCAhPSB2ZWN0b3JFbmQ7ICsraXQpCisgICAgICAg
ICAgICByZW1vdmVQZW5kaW5nUmVzb3VyY2VGb3JSZW1vdmFsKCppdCk7CiAgICAgfQogfQogCkBA
IC0zMDcsMTYgKzMxNywxOCBAQAogewogICAgIFZlY3RvcjxTVkdFbGVtZW50Kj4gdG9CZVJlbW92
ZWQ7CiAKLSAgICBmb3IgKGF1dG8mIGRlcGVuZGVuY3kgOiBtX2VsZW1lbnREZXBlbmRlbmNpZXMp
IHsKLSAgICAgICAgU1ZHRWxlbWVudCogcmVmZXJlbmNlZEVsZW1lbnQgPSBkZXBlbmRlbmN5Lmtl
eTsKLSAgICAgICAgSGFzaFNldDxTVkdFbGVtZW50Kj4mIHJlZmVyZW5jaW5nRWxlbWVudHMgPSAq
ZGVwZW5kZW5jeS52YWx1ZTsKKyAgICBhdXRvIGVuZCA9IG1fZWxlbWVudERlcGVuZGVuY2llcy5l
bmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2VsZW1lbnREZXBlbmRlbmNpZXMuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFNWR0VsZW1lbnQqIHJlZmVyZW5jZWRFbGVtZW50
ID0gaXQtPmtleTsKKyAgICAgICAgSGFzaFNldDxTVkdFbGVtZW50Kj4mIHJlZmVyZW5jaW5nRWxl
bWVudHMgPSAqaXQtPnZhbHVlOwogICAgICAgICByZWZlcmVuY2luZ0VsZW1lbnRzLnJlbW92ZShy
ZWZlcmVuY2luZ0VsZW1lbnQpOwogICAgICAgICBpZiAocmVmZXJlbmNpbmdFbGVtZW50cy5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICB0b0JlUmVtb3ZlZC5hcHBlbmQocmVmZXJlbmNlZEVsZW1lbnQp
OwogICAgIH0KIAotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IHRvQmVSZW1vdmVkKQotICAgICAg
ICBtX2VsZW1lbnREZXBlbmRlbmNpZXMucmVtb3ZlKGVsZW1lbnQpOworICAgIGF1dG8gdmVjdG9y
RW5kID0gdG9CZVJlbW92ZWQuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gdG9CZVJlbW92ZWQu
YmVnaW4oKTsgaXQgIT0gdmVjdG9yRW5kOyArK2l0KQorICAgICAgICBtX2VsZW1lbnREZXBlbmRl
bmNpZXMucmVtb3ZlKCppdCk7CiB9CiAKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZWJ1
aWxkRWxlbWVudHMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24g
MTg0NzMzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTAsOCArMTUwLDggQEAKICAgICAgICAgJnlBdHRyLAogICAgIH07CiAKLSAgICBm
b3IgKGF1dG8mIG5hbWUgOiBhdHRyaWJ1dGVOYW1lcykgewotICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsTmFtZSA9IG5hbWUtPmxvY2FsTmFtZSgpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGF0dHJpYnV0ZU5hbWVzKTsgKytpKSB7CisgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gYXR0cmlidXRlTmFtZXNbaV0tPmxv
Y2FsTmFtZSgpOwogICAgICAgICBtYXAuYWRkKGxvY2FsTmFtZS5pbXBsKCksIGNzc1Byb3BlcnR5
SUQobG9jYWxOYW1lKSk7CiAgICAgfQogCkBAIC0yMjksOCArMjI5LDggQEAKICAgICAgICAgeyB3
b3JkX3NwYWNpbmdBdHRyLCBBbmltYXRlZExlbmd0aCB9LAogICAgIH07CiAKLSAgICBmb3IgKGF1
dG8mIGVudHJ5IDogdGFibGUpCi0gICAgICAgIG1hcC5hZGQoZW50cnkuYXR0cmlidXRlTmFtZS5p
bXBsKCksIGVudHJ5LnR5cGUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJS
QVlfTEVOR1RIKHRhYmxlKTsgKytpKQorICAgICAgICBtYXAuYWRkKHRhYmxlW2ldLmF0dHJpYnV0
ZU5hbWUuaW1wbCgpLCB0YWJsZVtpXS50eXBlKTsKIH0KIAogc3RhdGljIGlubGluZSBIYXNoTWFw
PFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsKiwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGU+
JiBhdHRyaWJ1dGVOYW1lVG9BbmltYXRlZFByb3BlcnR5VHlwZU1hcCgpCkBAIC0yNjMsOCArMjYz
LDggQEAKICAgICAgICAgeyB5QXR0ciwgQW5pbWF0ZWRMZW5ndGggfSwKICAgICB9OwogCi0gICAg
Zm9yIChhdXRvJiBlbnRyeSA6IHRhYmxlKQotICAgICAgICBtYXAuYWRkKGVudHJ5LmF0dHJpYnV0
ZU5hbWUuaW1wbCgpLCBlbnRyeS50eXBlKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
V1RGX0FSUkFZX0xFTkdUSCh0YWJsZSk7ICsraSkKKyAgICAgICAgbWFwLmFkZCh0YWJsZVtpXS5h
dHRyaWJ1dGVOYW1lLmltcGwoKSwgdGFibGVbaV0udHlwZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
SGFzaE1hcDxRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCosIEFuaW1hdGVkUHJvcGVy
dHlUeXBlPiYgY3NzUHJvcGVydHlXaXRoU1ZHRE9NTmFtZVRvQW5pbWF0ZWRQcm9wZXJ0eVR5cGVN
YXAoKQpAQCAtNjM5LDggKzYzOSw4IEBACiAKICAgICBmb3IgKGVsZW1lbnQgPSBlbGVtZW50LT5w
YXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5w
YXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAgICAgY29uc3QgRXZlbnRMaXN0ZW5l
clZlY3RvciYgZW50cnkgPSBlbGVtZW50LT5nZXRFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCku
bG9hZEV2ZW50KTsKLSAgICAgICAgZm9yIChhdXRvJiBsaXN0ZW5lciA6IGVudHJ5KSB7Ci0gICAg
ICAgICAgICBpZiAobGlzdGVuZXIudXNlQ2FwdHVyZSkKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBlbnRyeS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGVudHJ5W2ldLnVz
ZUNhcHR1cmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAJKHJldmlzaW9uIDE4NDczMykKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
MSwxNyArMTYxLDE5IEBACiAgICAgfQogCiAgICAgVmVjdG9yPFNWR0dseXBoPiBnbHlwaHM7Ci0g
ICAgaWYgKCFhbHRHbHlwaE5hbWVzLmlzRW1wdHkoKSkgewotICAgICAgICBmb3IgKGF1dG8mIG5h
bWUgOiBhbHRHbHlwaE5hbWVzKQotICAgICAgICAgICAgYXNzb2NpYXRlZEZvbnRFbGVtZW50LT5j
b2xsZWN0R2x5cGhzRm9yR2x5cGhOYW1lKG5hbWUsIGdseXBocyk7CisgICAgc2l6ZV90IGFsdEds
eXBoTmFtZXNTaXplID0gYWx0R2x5cGhOYW1lcy5zaXplKCk7CisgICAgaWYgKGFsdEdseXBoTmFt
ZXNTaXplKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBhbHRHbHlw
aE5hbWVzU2l6ZTsgKytpbmRleCkKKyAgICAgICAgICAgIGFzc29jaWF0ZWRGb250RWxlbWVudC0+
Y29sbGVjdEdseXBoc0ZvckdseXBoTmFtZShhbHRHbHlwaE5hbWVzW2luZGV4XSwgZ2x5cGhzKTsK
IAogICAgICAgICAvLyBBc3NpZ24gdGhlIHVuaWNvZGVTdHJpbmdMZW5ndGggbm93IHRoYXQgaXRz
IGtub3duLgotICAgICAgICBmb3IgKGF1dG8mIGdseXBoIDogZ2x5cGhzKQotICAgICAgICAgICAg
Z2x5cGgudW5pY29kZVN0cmluZ0xlbmd0aCA9IHJ1bi5sZW5ndGgoKTsKKyAgICAgICAgc2l6ZV90
IGdseXBoc1NpemUgPSBnbHlwaHMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGdseXBoc1NpemU7ICsraSkKKyAgICAgICAgICAgIGdseXBoc1tpXS51bmljb2RlU3RyaW5n
TGVuZ3RoID0gcnVuLmxlbmd0aCgpOwogCiAgICAgICAgIC8vIERvIG5vdCBjaGVjayBhbHQgZ2x5
cGhzIGZvciBjb21wYXRpYmlsaXR5LiBKdXN0IHJldHVybiB0aGUgZmlyc3Qgb25lLgogICAgICAg
ICAvLyBMYXRlciBjb2RlIHdpbGwgZmFpbCBpZiB3ZSBkbyBub3QgZG8gdGhpcyBhbmQgdGhlIGds
eXBoIGlzIGluY29tcGF0aWJsZS4KLSAgICAgICAgaWYgKCFnbHlwaHMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChnbHlwaHNTaXplKSB7CiAgICAgICAgICAgICBTVkdHbHlwaCYgc3ZnR2x5cGgg
PSBnbHlwaHNbMF07CiAgICAgICAgICAgICBpdGVyYXRvci5zZXRMYXN0R2x5cGhOYW1lKHN2Z0ds
eXBoLmdseXBoTmFtZSk7CiAgICAgICAgICAgICBnbHlwaERhdGEuZ2x5cGggPSBzdmdHbHlwaC50
YWJsZUVudHJ5OwpAQCAtMTg5LDE0ICsxOTEsMTYgQEAKICAgICAgICAgYXNzb2NpYXRlZEZvbnRF
bGVtZW50LT5jb2xsZWN0R2x5cGhzRm9yU3RyaW5nKHJlbWFpbmluZ1RleHRJblJ1biwgZ2x5cGhz
KTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIGdseXBoIDogZ2x5cGhzKSB7Ci0gICAgICAgIGlm
IChnbHlwaC5pc1BhcnRPZkxpZ2F0dXJlKQorICAgIHNpemVfdCBnbHlwaHNTaXplID0gZ2x5cGhz
LnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdseXBoc1NpemU7ICsraSkgewor
ICAgICAgICBTVkdHbHlwaCYgc3ZnR2x5cGggPSBnbHlwaHNbaV07CisgICAgICAgIGlmIChzdmdH
bHlwaC5pc1BhcnRPZkxpZ2F0dXJlKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlm
ICghaXNDb21wYXRpYmxlR2x5cGgoZ2x5cGgsIGlzVmVydGljYWxUZXh0LCBsYW5ndWFnZSwgYXJh
YmljRm9ybXMsIGN1cnJlbnRDaGFyYWN0ZXIsIGN1cnJlbnRDaGFyYWN0ZXIgKyBnbHlwaC51bmlj
b2RlU3RyaW5nTGVuZ3RoKSkKKyAgICAgICAgaWYgKCFpc0NvbXBhdGlibGVHbHlwaChzdmdHbHlw
aCwgaXNWZXJ0aWNhbFRleHQsIGxhbmd1YWdlLCBhcmFiaWNGb3JtcywgY3VycmVudENoYXJhY3Rl
ciwgY3VycmVudENoYXJhY3RlciArIHN2Z0dseXBoLnVuaWNvZGVTdHJpbmdMZW5ndGgpKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGl0ZXJhdG9yLnNldExhc3RHbHlwaE5hbWUoZ2x5
cGguZ2x5cGhOYW1lKTsKLSAgICAgICAgZ2x5cGhEYXRhLmdseXBoID0gZ2x5cGgudGFibGVFbnRy
eTsKLSAgICAgICAgYWR2YW5jZUxlbmd0aCA9IGdseXBoLnVuaWNvZGVTdHJpbmdMZW5ndGg7Cisg
ICAgICAgIGl0ZXJhdG9yLnNldExhc3RHbHlwaE5hbWUoc3ZnR2x5cGguZ2x5cGhOYW1lKTsKKyAg
ICAgICAgZ2x5cGhEYXRhLmdseXBoID0gc3ZnR2x5cGgudGFibGVFbnRyeTsKKyAgICAgICAgYWR2
YW5jZUxlbmd0aCA9IHN2Z0dseXBoLnVuaWNvZGVTdHJpbmdMZW5ndGg7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxODQ3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4NiwxMCBAQAogICAgIC8vIHdpbGwgbm90IGJl
IGFibGUgdG8gZmluZCBhIGdseXBoIGZvciAiZiIsIGJ1dCBoYW5kbGVzIHRoZSBmYWxsYmFjawog
ICAgIC8vIGNoYXJhY3RlciBzdWJzdGl0dXRpb24gcHJvcGVybHkgdGhyb3VnaCBnbHlwaERhdGFG
b3JDaGFyYWN0ZXIoKS4KICAgICBWZWN0b3I8U1ZHR2x5cGg+IGdseXBoczsKLSAgICBmb3IgKGF1
dG8mIHVuaWNvZGUgOiBsaWdhdHVyZXMpIHsKKyAgICBzaXplX3QgbGlnYXR1cmVzU2l6ZSA9IGxp
Z2F0dXJlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaWdhdHVyZXNTaXpl
OyArK2kpIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiB1bmljb2RlID0gbGlnYXR1cmVzW2ldOwor
CiAgICAgICAgIHVuc2lnbmVkIHVuaWNvZGVMZW5ndGggPSB1bmljb2RlLmxlbmd0aCgpOwogICAg
ICAgICBBU1NFUlQodW5pY29kZUxlbmd0aCA+IDEpOwogCkBAIC0xNzEsMjMgKzE3NCwyNyBAQAog
ICAgIHN2Z0tlcm5pbmcudW5pY29kZU5hbWUyID0ga2VybmluZ1BhaXIudW5pY29kZU5hbWUyOwog
ICAgIHN2Z0tlcm5pbmcuZ2x5cGhOYW1lMiA9IGtlcm5pbmdQYWlyLmdseXBoTmFtZTI7CiAKLSAg
ICBmb3IgKGF1dG8mIG5hbWUgOiBrZXJuaW5nUGFpci51bmljb2RlTmFtZTEpIHsKLSAgICAgICAg
aWYgKHVuaWNvZGVNYXAuY29udGFpbnMobmFtZSkpCi0gICAgICAgICAgICB1bmljb2RlTWFwLmdl
dChuYW1lKS0+YXBwZW5kKHN2Z0tlcm5pbmcpOworICAgIEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3Rf
aXRlcmF0b3IgdUl0ID0ga2VybmluZ1BhaXIudW5pY29kZU5hbWUxLmJlZ2luKCk7CisgICAgY29u
c3QgSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciB1RW5kID0ga2VybmluZ1BhaXIudW5p
Y29kZU5hbWUxLmVuZCgpOworICAgIGZvciAoOyB1SXQgIT0gdUVuZDsgKyt1SXQpIHsKKyAgICAg
ICAgaWYgKHVuaWNvZGVNYXAuY29udGFpbnMoKnVJdCkpCisgICAgICAgICAgICB1bmljb2RlTWFw
LmdldCgqdUl0KS0+YXBwZW5kKHN2Z0tlcm5pbmcpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIGF1dG8gbmV3VmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdLZXJuaW5nVmVjdG9yPigp
OwogICAgICAgICAgICAgbmV3VmVjdG9yLT5hcHBlbmQoc3ZnS2VybmluZyk7Ci0gICAgICAgICAg
ICB1bmljb2RlTWFwLmFkZChuYW1lLCBXVEY6Om1vdmUobmV3VmVjdG9yKSk7CisgICAgICAgICAg
ICB1bmljb2RlTWFwLmFkZCgqdUl0LCBXVEY6Om1vdmUobmV3VmVjdG9yKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIG5hbWUgOiBrZXJuaW5nUGFpci5nbHlwaE5hbWUxKSB7
Ci0gICAgICAgIGlmIChnbHlwaE1hcC5jb250YWlucyhuYW1lKSkKLSAgICAgICAgICAgIGdseXBo
TWFwLmdldChuYW1lKS0+YXBwZW5kKHN2Z0tlcm5pbmcpOworICAgIEhhc2hTZXQ8U3RyaW5nPjo6
Y29uc3RfaXRlcmF0b3IgZ0l0ID0ga2VybmluZ1BhaXIuZ2x5cGhOYW1lMS5iZWdpbigpOworICAg
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZ0VuZCA9IGtlcm5pbmdQYWly
LmdseXBoTmFtZTEuZW5kKCk7CisgICAgZm9yICg7IGdJdCAhPSBnRW5kOyArK2dJdCkgeworICAg
ICAgICBpZiAoZ2x5cGhNYXAuY29udGFpbnMoKmdJdCkpCisgICAgICAgICAgICBnbHlwaE1hcC5n
ZXQoKmdJdCktPmFwcGVuZChzdmdLZXJuaW5nKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBhdXRvIG5ld1ZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHS2VybmluZ1ZlY3Rvcj4oKTsK
ICAgICAgICAgICAgIG5ld1ZlY3Rvci0+YXBwZW5kKHN2Z0tlcm5pbmcpOwotICAgICAgICAgICAg
Z2x5cGhNYXAuYWRkKG5hbWUsIFdURjo6bW92ZShuZXdWZWN0b3IpKTsKKyAgICAgICAgICAgIGds
eXBoTWFwLmFkZCgqZ0l0LCBXVEY6Om1vdmUobmV3VmVjdG9yKSk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTIwMiw4ICsyMDksOSBAQAogCiAgICAgaWYgKCFyYW5nZXMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIFVDaGFyIGZpcnN0Q2hhciA9IHVuaWNvZGVTdHJpbmdbMF07Ci0gICAgICAgIGZvciAo
YXV0byYgcmFuZ2UgOiByYW5nZXMpIHsKLSAgICAgICAgICAgIGlmIChmaXJzdENoYXIgPj0gcmFu
Z2UuZmlyc3QgJiYgZmlyc3RDaGFyIDw9IHJhbmdlLnNlY29uZCkKKyAgICAgICAgY29uc3QgVW5p
Y29kZVJhbmdlczo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmFuZ2VzLmVuZCgpOworICAgICAgICBm
b3IgKFVuaWNvZGVSYW5nZXM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmFuZ2VzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKGZpcnN0Q2hhciA+PSBpdC0+Zmlyc3Qg
JiYgZmlyc3RDaGFyIDw9IGl0LT5zZWNvbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVT
dHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJl
YW0uaAkocmV2aXNpb24gMTg0NzMzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRl
U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEwICs1OCwxMCBAQAogICAgIERhdGFJdGVy
YXRvciBiZWdpbigpIHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9CiAgICAgRGF0YUl0ZXJhdG9y
IGVuZCgpIHsgcmV0dXJuIG1fZGF0YS5lbmQoKTsgfQogICAgIHZvaWQgYXBwZW5kKHVuc2lnbmVk
IGNoYXIgYnl0ZSkgeyBtX2RhdGEuYXBwZW5kKGJ5dGUpOyB9Ci0gICAgdm9pZCBhcHBlbmQoU1ZH
UGF0aEJ5dGVTdHJlYW0mIG90aGVyKQorICAgIHZvaWQgYXBwZW5kKFNWR1BhdGhCeXRlU3RyZWFt
KiBvdGhlcikKICAgICB7Ci0gICAgICAgIGZvciAoYXV0byBzdHJlYW0gOiBvdGhlcikKLSAgICAg
ICAgICAgIGFwcGVuZChzdHJlYW0pOworICAgICAgICBmb3IgKERhdGFJdGVyYXRvciBpdCA9IG90
aGVyLT5iZWdpbigpOyBpdCAhPSBvdGhlci0+ZW5kKCk7ICsraXQpCisgICAgICAgICAgICBhcHBl
bmQoKml0KTsKICAgICB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmNsZWFyKCk7IH0KICAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9kYXRhLnNpemUoKTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMTg0NzMzKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTUsNyArMTU1LDcgQEAKICAgICBwYXJzZXItPmNsZWFudXAoKTsKIAogICAgIGlmIChv
aykKLSAgICAgICAgcmVzdWx0LT5hcHBlbmQoKmFwcGVuZGVkQnl0ZVN0cmVhbSk7CisgICAgICAg
IHJlc3VsdC0+YXBwZW5kKGFwcGVuZGVkQnl0ZVN0cmVhbS5nZXQoKSk7CiAKICAgICByZXR1cm4g
b2s7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFp
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxU
aW1lQ29udGFpbmVyLmNwcAkocmV2aXNpb24gMTg0NzMzKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw5
ICsxODcsMTEgQEAKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9wcmV2ZW50U2NoZWR1bGVkQW5pbWF0
aW9uc0NoYW5nZXMgPSB0cnVlOwogI2VuZGlmCi0gICAgZm9yIChhdXRvJiBhbmltYXRpb24gOiBt
X3NjaGVkdWxlZEFuaW1hdGlvbnMudmFsdWVzKCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogKmFuaW1hdGlvbikKLSAgICAgICAgICAgIGVsZW1lbnQtPnJlc2V0KCk7CisgICAgZm9y
IChhdXRvJiBpdCA6IG1fc2NoZWR1bGVkQW5pbWF0aW9ucykgeworICAgICAgICBBbmltYXRpb25z
VmVjdG9yKiBzY2hlZHVsZWQgPSBpdC52YWx1ZS5nZXQoKTsKKyAgICAgICAgdW5zaWduZWQgc2l6
ZSA9IHNjaGVkdWxlZC0+c2l6ZSgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwg
c2l6ZTsgbisrKQorICAgICAgICAgICAgc2NoZWR1bGVkLT5hdChuKS0+cmVzZXQoKTsKICAgICB9
CiAjaWZuZGVmIE5ERUJVRwogICAgIG1fcHJldmVudFNjaGVkdWxlZEFuaW1hdGlvbnNDaGFuZ2Vz
ID0gZmFsc2U7CkBAIC0yNzIsNyArMjc0LDkgQEAKICAgICAgICAgc29ydEJ5UHJpb3JpdHkoKnNj
aGVkdWxlZCwgZWxhcHNlZCk7CiAKICAgICAgICAgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1l
bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6ICpzY2hlZHVsZWQpIHsKKyAg
ICAgICAgdW5zaWduZWQgc2l6ZSA9IHNjaGVkdWxlZC0+c2l6ZSgpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIG4gPSAwOyBuIDwgc2l6ZTsgbisrKSB7CisgICAgICAgICAgICBTVkdTTUlMRWxlbWVu
dCogYW5pbWF0aW9uID0gc2NoZWR1bGVkLT5hdChuKTsKICAgICAgICAgICAgIEFTU0VSVChhbmlt
YXRpb24tPnRpbWVDb250YWluZXIoKSA9PSB0aGlzKTsKICAgICAgICAgICAgIEFTU0VSVChhbmlt
YXRpb24tPnRhcmdldEVsZW1lbnQoKSk7CiAgICAgICAgICAgICBBU1NFUlQoYW5pbWF0aW9uLT5o
YXNWYWxpZEF0dHJpYnV0ZU5hbWUoKSk7CkBAIC0yOTcsNyArMzAxLDggQEAKICAgICAgICAgICAg
IGFuaW1hdGlvbnNUb0FwcGx5LmFwcGVuZChyZXN1bHRFbGVtZW50KTsKICAgICB9CiAKLSAgICBp
ZiAoYW5pbWF0aW9uc1RvQXBwbHkuaXNFbXB0eSgpKSB7CisgICAgdW5zaWduZWQgYW5pbWF0aW9u
c1RvQXBwbHlTaXplID0gYW5pbWF0aW9uc1RvQXBwbHkuc2l6ZSgpOworICAgIGlmICghYW5pbWF0
aW9uc1RvQXBwbHlTaXplKSB7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBtX3ByZXZlbnRTY2hl
ZHVsZWRBbmltYXRpb25zQ2hhbmdlcyA9IGZhbHNlOwogI2VuZGlmCkBAIC0zMDYsOCArMzExLDgg
QEAKICAgICB9CiAKICAgICAvLyBBcHBseSByZXN1bHRzIHRvIHRhcmdldCBlbGVtZW50cy4KLSAg
ICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6IGFuaW1hdGlvbnNUb0FwcGx5KQotICAgICAgICBhbmlt
YXRpb24tPmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGFuaW1hdGlvbnNUb0FwcGx5U2l6ZTsgKytpKQorICAgICAgICBhbmltYXRpb25zVG9BcHBs
eVtpXS0+YXBwbHlSZXN1bHRzVG9UYXJnZXQoKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBtX3By
ZXZlbnRTY2hlZHVsZWRBbmltYXRpb25zQ2hhbmdlcyA9IGZhbHNlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4
NDczMykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MjEsMTQgKzQyMSwxNCBAQAogICAgIGlmIChiZWdpbk9yRW5k
ID09IEVuZCkKICAgICAgICAgbV9oYXNFbmRFdmVudENvbmRpdGlvbnMgPSBmYWxzZTsKICAgICBI
YXNoU2V0PGRvdWJsZT4gZXhpc3Rpbmc7Ci0gICAgZm9yIChhdXRvJiB0aW1lIDogdGltZUxpc3Qp
Ci0gICAgICAgIGV4aXN0aW5nLmFkZCh0aW1lLnRpbWUoKS52YWx1ZSgpKTsKKyAgICBmb3IgKHVu
c2lnbmVkIG4gPSAwOyBuIDwgdGltZUxpc3Quc2l6ZSgpOyArK24pCisgICAgICAgIGV4aXN0aW5n
LmFkZCh0aW1lTGlzdFtuXS50aW1lKCkudmFsdWUoKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gc3Bs
aXRTdHJpbmc7CiAgICAgcGFyc2VTdHJpbmcuc3BsaXQoJzsnLCBzcGxpdFN0cmluZyk7Ci0gICAg
Zm9yIChhdXRvJiBzdHJpbmcgOiBzcGxpdFN0cmluZykgewotICAgICAgICBTTUlMVGltZSB2YWx1
ZSA9IHBhcnNlQ2xvY2tWYWx1ZShzdHJpbmcpOworICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4g
PCBzcGxpdFN0cmluZy5zaXplKCk7ICsrbikgeworICAgICAgICBTTUlMVGltZSB2YWx1ZSA9IHBh
cnNlQ2xvY2tWYWx1ZShzcGxpdFN0cmluZ1tuXSk7CiAgICAgICAgIGlmICh2YWx1ZS5pc1VucmVz
b2x2ZWQoKSkKLSAgICAgICAgICAgIHBhcnNlQ29uZGl0aW9uKHN0cmluZywgYmVnaW5PckVuZCk7
CisgICAgICAgICAgICBwYXJzZUNvbmRpdGlvbihzcGxpdFN0cmluZ1tuXSwgYmVnaW5PckVuZCk7
CiAgICAgICAgIGVsc2UgaWYgKCFleGlzdGluZy5jb250YWlucyh2YWx1ZS52YWx1ZSgpKSkKICAg
ICAgICAgICAgIHRpbWVMaXN0LmFwcGVuZChTTUlMVGltZVdpdGhPcmlnaW4odmFsdWUsIFNNSUxU
aW1lV2l0aE9yaWdpbjo6UGFyc2VyT3JpZ2luKSk7CiAgICAgfQpAQCAtNTE4LDcgKzUxOCw4IEBA
CiAgICAgaWYgKG1fY29uZGl0aW9uc0Nvbm5lY3RlZCkKICAgICAgICAgZGlzY29ubmVjdENvbmRp
dGlvbnMoKTsKICAgICBtX2NvbmRpdGlvbnNDb25uZWN0ZWQgPSB0cnVlOwotICAgIGZvciAoYXV0
byYgY29uZGl0aW9uIDogbV9jb25kaXRpb25zKSB7CisgICAgZm9yICh1bnNpZ25lZCBuID0gMDsg
biA8IG1fY29uZGl0aW9ucy5zaXplKCk7ICsrbikgeworICAgICAgICBDb25kaXRpb24mIGNvbmRp
dGlvbiA9IG1fY29uZGl0aW9uc1tuXTsKICAgICAgICAgaWYgKGNvbmRpdGlvbi5tX3R5cGUgPT0g
Q29uZGl0aW9uOjpFdmVudEJhc2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghY29uZGl0aW9uLm1f
c3luY2Jhc2UpOwogICAgICAgICAgICAgRWxlbWVudCogZXZlbnRCYXNlID0gZXZlbnRCYXNlRm9y
KGNvbmRpdGlvbik7CkBAIC01NDYsNyArNTQ3LDggQEAKICAgICBpZiAoIW1fY29uZGl0aW9uc0Nv
bm5lY3RlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29uZGl0aW9uc0Nvbm5lY3RlZCA9IGZh
bHNlOwotICAgIGZvciAoYXV0byYgY29uZGl0aW9uIDogbV9jb25kaXRpb25zKSB7CisgICAgZm9y
ICh1bnNpZ25lZCBuID0gMDsgbiA8IG1fY29uZGl0aW9ucy5zaXplKCk7ICsrbikgeworICAgICAg
ICBDb25kaXRpb24mIGNvbmRpdGlvbiA9IG1fY29uZGl0aW9uc1tuXTsKICAgICAgICAgaWYgKGNv
bmRpdGlvbi5tX3R5cGUgPT0gQ29uZGl0aW9uOjpFdmVudEJhc2UpIHsKICAgICAgICAgICAgIEFT
U0VSVCghY29uZGl0aW9uLm1fc3luY2Jhc2UpOwogICAgICAgICAgICAgaWYgKCFjb25kaXRpb24u
bV9ldmVudExpc3RlbmVyKQpAQCAtMTEyNCw3ICsxMTI2LDkgQEAKICAgICAgICAgcmV0dXJuOwog
ICAgIGxvb3BCcmVha2VyLmFkZCh0aGlzKTsKICAgICAKLSAgICBmb3IgKGF1dG8mIGRlcGVuZGVu
dCA6IG1fdGltZURlcGVuZGVudHMpIHsKKyAgICBUaW1lRGVwZW5kZW50U2V0OjppdGVyYXRvciBl
bmQgPSBtX3RpbWVEZXBlbmRlbnRzLmVuZCgpOworICAgIGZvciAoVGltZURlcGVuZGVudFNldDo6
aXRlcmF0b3IgaXQgPSBtX3RpbWVEZXBlbmRlbnRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICBTVkdTTUlMRWxlbWVudCogZGVwZW5kZW50ID0gKml0OwogICAgICAgICBkZXBl
bmRlbnQtPmNyZWF0ZUluc3RhbmNlVGltZXNGcm9tU3luY2Jhc2UodGhpcywgbmV3T3JFeGlzdGlu
Zyk7CiAgICAgfQogCkBAIC0xMTM1LDcgKzExMzksOCBAQAogewogICAgIC8vIEZJWE1FOiBUbyBi
ZSByZWFsbHkgY29ycmVjdCwgdGhpcyBzaG91bGQgaGFuZGxlIHVwZGF0aW5nIGV4aXNpbmcgaW50
ZXJ2YWwgYnkgY2hhbmdpbmcgCiAgICAgLy8gdGhlIGFzc29jaWF0ZWQgdGltZXMgaW5zdGVhZCBv
ZiBjcmVhdGluZyBuZXcgb25lcy4KLSAgICBmb3IgKGF1dG8mIGNvbmRpdGlvbiA6IG1fY29uZGl0
aW9ucykgeworICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBtX2NvbmRpdGlvbnMuc2l6ZSgp
OyArK24pIHsKKyAgICAgICAgQ29uZGl0aW9uJiBjb25kaXRpb24gPSBtX2NvbmRpdGlvbnNbbl07
CiAgICAgICAgIGlmIChjb25kaXRpb24ubV90eXBlID09IENvbmRpdGlvbjo6U3luY2Jhc2UgJiYg
Y29uZGl0aW9uLm1fc3luY2Jhc2UgPT0gc3luY2Jhc2UpIHsKICAgICAgICAgICAgIEFTU0VSVChj
b25kaXRpb24ubV9uYW1lID09ICJiZWdpbiIgfHwgY29uZGl0aW9uLm1fbmFtZSA9PSAiZW5kIik7
CiAgICAgICAgICAgICAvLyBObyBuZXN0ZWQgdGltZSBjb250YWluZXJzIGluIFNWRywgbm8gbmVl
ZCBmb3IgY3JhenkgdGltZSBzcGFjZSBjb252ZXJzaW9ucy4gUGhldyEKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxk
ZXIuY3BwCShyZXZpc2lvbiAxODQ3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsOCArOTUs
MTAgQEAKIAogICAgIGVmZmVjdC0+Y2xlYXJSZXN1bHQoKTsKIAotICAgIGZvciAoYXV0byYgcmVm
ZXJlbmNlIDogZWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QpKQotICAgICAgICBjbGVhclJlc3VsdHNS
ZWN1cnNpdmUocmVmZXJlbmNlKTsKKyAgICBIYXNoU2V0PEZpbHRlckVmZmVjdCo+JiBlZmZlY3RS
ZWZlcmVuY2VzID0gdGhpcy0+ZWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QpOworICAgIEhhc2hTZXQ8
RmlsdGVyRWZmZWN0Kj46Oml0ZXJhdG9yIGVuZCA9IGVmZmVjdFJlZmVyZW5jZXMuZW5kKCk7Cisg
ICAgZm9yIChIYXNoU2V0PEZpbHRlckVmZmVjdCo+OjppdGVyYXRvciBpdCA9IGVmZmVjdFJlZmVy
ZW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgY2xlYXJSZXN1bHRzUmVj
dXJzaXZlKCppdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmgJKHJldmlzaW9uIDE4NDczMykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsOCArNjIsOSBAQAog
cHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBhZGRCdWlsdGluRWZmZWN0cygpCiAgICAgewotICAg
ICAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IG1fYnVpbHRpbkVmZmVjdHMudmFsdWVzKCkpCi0gICAg
ICAgICAgICBtX2VmZmVjdFJlZmVyZW5jZXMuYWRkKGVmZmVjdCwgRmlsdGVyRWZmZWN0U2V0KCkp
OworICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmUHRyPEZpbHRlckVmZmVjdD4+Ojpp
dGVyYXRvciBlbmQgPSBtX2J1aWx0aW5FZmZlY3RzLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hN
YXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8RmlsdGVyRWZmZWN0Pj46Oml0ZXJhdG9yIGl0ZXJhdG9y
ID0gbV9idWlsdGluRWZmZWN0cy5iZWdpbigpOyBpdGVyYXRvciAhPSBlbmQ7ICsraXRlcmF0b3Ip
CisgICAgICAgICAgICAgbV9lZmZlY3RSZWZlcmVuY2VzLmFkZChpdGVyYXRvci0+dmFsdWUsIEZp
bHRlckVmZmVjdFNldCgpKTsKICAgICB9CiAKICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVm
UHRyPEZpbHRlckVmZmVjdD4+IG1fYnVpbHRpbkVmZmVjdHM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcAkocmV2
aXNpb24gMTg0NzMzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3LDEwIEBACiBTVkdBbmlt
YXRlZFByb3BlcnR5Ojp+U1ZHQW5pbWF0ZWRQcm9wZXJ0eSgpCiB7CiAgICAgLy8gUmVtb3ZlIHdy
YXBwZXIgZnJvbSBjYWNoZS4KLSAgICBmb3IgKGF1dG8mIGNhY2hlIDogKmFuaW1hdGVkUHJvcGVy
dHlDYWNoZSgpKSB7Ci0gICAgICAgIGlmIChjYWNoZS52YWx1ZSA9PSB0aGlzKSB7Ci0gICAgICAg
ICAgICBhbmltYXRlZFByb3BlcnR5Q2FjaGUoKS0+cmVtb3ZlKGNhY2hlLmtleSk7CisgICAgQ2Fj
aGUmIGNhY2hlID0gKmFuaW1hdGVkUHJvcGVydHlDYWNoZSgpOworICAgIGZvciAoYXV0byBpdCA9
IGNhY2hlLmJlZ2luKCksIGVuZCA9IGNhY2hlLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgaWYgKGl0LT52YWx1ZSA9PSB0aGlzKSB7CisgICAgICAgICAgICBjYWNoZS5yZW1vdmUo
aXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAkocmV2aXNpb24g
MTg0NzMzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDggKzYyLDkgQEAKICAgICB7CiAgICAgICAgIC8vIFNl
ZSBTVkdQcm9wZXJ0eVRlYXJPZmY6OmRldGFjaFdyYXBwZXIoKSBmb3IgYW4gZXhwbGFuYXRpb24g
YWJvdXQgd2hhdCdzIGhhcHBlbmluZyBoZXJlLgogICAgICAgICBBU1NFUlQod3JhcHBlcnMpOwot
ICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiAqd3JhcHBlcnMpIHsKLSAgICAgICAgICAgIGlmIChp
dGVtKQorICAgICAgICB1bnNpZ25lZCBzaXplID0gd3JhcHBlcnMtPnNpemUoKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgaWYgKExp
c3RJdGVtVGVhck9mZiogaXRlbSA9IHdyYXBwZXJzLT5hdChpKS5nZXQoKSkKICAgICAgICAgICAg
ICAgICBpdGVtLT5kZXRhY2hXcmFwcGVyKCk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmLmNwcAkocmV2aXNpb24gMTg0NzMzKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw3ICszMCw5IEBACiB2b2lkIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFy
T2ZmOjpjbGVhckNvbnRleHRBbmRSb2xlcygpCiB7CiAgICAgQVNTRVJUKG1fdmFsdWVzKTsKLSAg
ICBmb3IgKGF1dG8mIGl0ZW0gOiAqbV92YWx1ZXMpIHsKKyAgICB1bnNpZ25lZCBzaXplID0gbV92
YWx1ZXMtPnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
CisgICAgICAgIExpc3RJdGVtVHlwZSBpdGVtID0gbV92YWx1ZXMtPmF0KGkpOwogICAgICAgICBz
dGF0aWNfY2FzdDxTVkdQYXRoU2VnV2l0aENvbnRleHQqPihpdGVtLmdldCgpKS0+c2V0Q29udGV4
dEFuZFJvbGUoMCwgUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwogICAgIH0KIH0K
</data>
<flag name="commit-queue"
          id="278465"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253545</attachid>
            <date>2015-05-21 14:50:42 -0700</date>
            <delta_ts>2015-05-21 15:45:24 -0700</delta_ts>
            <desc>Adds &quot;Unreviewed rollback&quot;</desc>
            <filename>rollback_patch.diff</filename>
            <type>text/plain</type>
            <size>31160</size>
            <attacher name="Jake Nielsen">jake.nielsen.webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDczMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE1LTA1LTIxICBKYWtlIE5p
ZWxzZW4gIDxqYWNvYl9uaWVsc2VuQGFwcGxlLmNvbT4KKworICAgICAgICByMTg0NzE4IGFuZCBy
MTg0NzI1IGNhdXNlZCBmb3VyIHRlc3RzIHRvIGJlZ2luIGNyYXNoaW5nCisKKyAgICAgICAgVW5y
ZXZpZXdlZCByb2xsYmFjay4KKworICAgICAgICBUZXN0cyB0aGF0IHN0YXJ0ZWQgY3Jhc2hpbmc6
CisKKyAgICAgICAgc3ZnL2NhcnRvLm5ldC90ZXh0Ym94LnN2ZyBzdmcvY3VzdG9tL3RyZWYtY2xv
bmUtY3Jhc2guaHRtbCBzdmcvY3VzdG9tL3VzZS1hbmltYXRpb24taW4tZmlsbC5odG1sIHN2Zy9j
dXN0b20vdXNlLW11bHRpcGxlLW9uLW5lc3RlZC1kaXNhbGxvd2VkLWZvbnQuaHRtbAorCisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
cm9wZXJ0eVR5cGVzQXJlQ29uc2lzdGVudCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUGF0
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6c3RhcnRB
bmltVmFsQW5pbWF0aW9uKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yOjpleGVjdXRlQWN0
aW9uKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICog
c3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxl
bWVudDo6flNWR0N1cnNvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxl
bWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4
dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpw
YXVzZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25z
Ojp1bnBhdXNlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OmRpc3BhdGNoU1ZHTG9hZEV2ZW50VG9PdXRlcm1vc3RTVkdFbGVtZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmlzRWxlbWVudFdpdGhQZW5kaW5n
UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVt
b3ZlRWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlQWxsVGFyZ2V0UmVmZXJlbmNlc0ZvckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZWJ1aWxkRWxlbWVudHMp
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVs
YXRlQXR0cmlidXRlTmFtZVRvQ1NTUHJvcGVydHlJRE1hcCk6CisgICAgICAgIChXZWJDb3JlOjpw
b3B1bGF0ZUF0dHJpYnV0ZU5hbWVUb0FuaW1hdGVkUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAg
KFdlYkNvcmU6OmF0dHJpYnV0ZU5hbWVUb0FuaW1hdGVkUHJvcGVydHlUeXBlTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBvcHVsYXRlQ1NTUHJvcGVydHlXaXRoU1ZHRE9NTmFtZVRvQW5pbWF0ZWRQ
cm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlXaXRoU1ZHRE9N
TmFtZVRvQW5pbWF0ZWRQcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6aGFzTG9h
ZExpc3RlbmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udERhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRm9udERhdGE6OmFwcGx5U1ZHR2x5cGhTZWxlY3Rpb24pOgorICAgICAgICAqIHN2
Zy9TVkdGb250RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RWxlbWVudDo6
cmVnaXN0ZXJMaWdhdHVyZXNJbkdseXBoQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHS2Vy
bmluZ01hcDo6aW5zZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ01hdGNoZXNVbmljb2Rl
UmFuZ2UpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aEJ5dGVTdHJlYW06OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhCeXRlU3RyZWFtOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ5dGVTdHJlYW06
OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ5dGVTdHJlYW06OmlzRW1wdHkpOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNWR1Bh
dGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU01J
TFRpbWVDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6
OnNldEVsYXBzZWQpOgorICAgICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6OnVwZGF0
ZUFuaW1hdGlvbnMpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhcnNlQmVnaW5PckVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6Y29ubmVjdENvbmRpdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OmRpc2Nvbm5lY3RDb25kaXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpub3RpZnlEZXBlbmRlbnRzSW50ZXJ2YWxD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpjcmVhdGVJbnN0YW5j
ZVRpbWVzRnJvbVN5bmNiYXNlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmNs
ZWFyUmVzdWx0c1JlY3Vyc2l2ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6YWRk
QnVpbHRpbkVmZmVjdHMpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6flNWR0Fu
aW1hdGVkUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0
eS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5OjpkZXRhY2hMaXN0V3JhcHBl
cnNBbmRSZXNpemUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJv
cGVydHlUZWFyT2ZmLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0UHJvcGVy
dHlUZWFyT2ZmOjpjbGVhckNvbnRleHRBbmRSb2xlcyk6CisKIDIwMTUtMDUtMjEgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsLXNuYXAgcG9pbnRz
IG5lZWRzIHRvIGJlIHVwZGF0ZWQgZHVyaW5nIHByb2dyYW1tYXRpYyBzY3JvbGxzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAkocmV2aXNpb24g
MTg0NzMzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MSwxMSArMTcxLDEyIEBACiAjaWZuZGVmIE5ERUJVRwogc3Rh
dGljIGlubGluZSBib29sIHByb3BlcnR5VHlwZXNBcmVDb25zaXN0ZW50KEFuaW1hdGVkUHJvcGVy
dHlUeXBlIGV4cGVjdGVkUHJvcGVydHlUeXBlLCBjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCiB7Ci0gICAgZm9yIChhdXRvJiB0eXBlIDogYW5pbWF0
ZWRUeXBlcykgewotICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogdHlwZS5wcm9wZXJ0aWVz
KSB7Ci0gICAgICAgICAgICBpZiAoZXhwZWN0ZWRQcm9wZXJ0eVR5cGUgIT0gcHJvcGVydHktPmFu
aW1hdGVkUHJvcGVydHlUeXBlKCkpIHsKKyAgICBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGFuaW1hdGVkVHlwZXMuZW5kKCk7CisgICAgZm9yIChT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYW5pbWF0
ZWRUeXBlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBpdC0+cHJvcGVydGllcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYg
KGV4cGVjdGVkUHJvcGVydHlUeXBlICE9IGl0LT5wcm9wZXJ0aWVzW2ldLT5hbmltYXRlZFByb3Bl
cnR5VHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBhbGxvd2Vk
IGluY29uc2lzdGVuY3kuIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvciBoYW5kbGVzIGJvdGggU1ZH
QW5pbWF0ZWRBbmdsZSAmIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZm9yIG1hcmtlcnMgb3JpZW50
IGF0dHJpYnV0ZS4KLSAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRQcm9wZXJ0eVR5cGUgPT0g
QW5pbWF0ZWRBbmdsZSAmJiBwcm9wZXJ0eS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKSA9PSBBbmlt
YXRlZEVudW1lcmF0aW9uKQorICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFByb3BlcnR5VHlw
ZSA9PSBBbmltYXRlZEFuZ2xlICYmIGl0LT5wcm9wZXJ0aWVzW2ldLT5hbmltYXRlZFByb3BlcnR5
VHlwZSgpID09IEFuaW1hdGVkRW51bWVyYXRpb24pCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCShyZXZpc2lvbiAxODQ3MzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTAsMTMgKzUwLDE1IEBACiAKICAgICBWZWN0b3I8UmVmUHRyPFNWR0FuaW1hdGVkUGF0
aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+PiByZXN1bHQ7CiAKLSAgICBmb3IgKGF1dG8mIHR5cGUg
OiBhbmltYXRlZFR5cGVzKQotICAgICAgICByZXN1bHQuYXBwZW5kKGNhc3RBbmltYXRlZFByb3Bl
cnR5VG9BY3R1YWxUeXBlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KHR5
cGUucHJvcGVydGllc1swXS5nZXQoKSkpOworICAgIFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5
TGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYW5pbWF0ZWRUeXBlcy5lbmQoKTsKKyAgICBmb3Ig
KFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbmlt
YXRlZFR5cGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZChjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZTxTVkdBbmltYXRlZFBhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmPihpdC0+cHJvcGVydGllc1swXS5nZXQoKSkpOwogCiAgICAgU1ZHRWxl
bWVudDo6SW5zdGFuY2VVcGRhdGVCbG9ja2VyIGJsb2NrZXIoKnByb3BlcnR5LT5jb250ZXh0RWxl
bWVudCgpKTsKIAotICAgIGZvciAoYXV0byYgc2VnbWVudCA6IHJlc3VsdCkKLSAgICAgICAgc2Vn
bWVudC0+YW5pbWF0aW9uU3RhcnRlZChieXRlU3RyZWFtLmdldCgpLCAmYmFzZVZhbHVlKTsKKyAg
ICBzaXplX3QgcmVzdWx0U2l6ZSA9IHJlc3VsdC5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByZXN1bHRTaXplOyArK2kpCisgICAgICAgIHJlc3VsdFtpXS0+YW5pbWF0aW9uU3Rh
cnRlZChieXRlU3RyZWFtLmdldCgpLCAmYmFzZVZhbHVlKTsKIAogICAgIHJldHVybiBTVkdBbmlt
YXRlZFR5cGU6OmNyZWF0ZVBhdGgoV1RGOjptb3ZlKGJ5dGVTdHJlYW0pKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCShyZXZpc2lvbiAx
ODQ3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMTkxLDkgKzE5MSwxMCBAQAogICAgICAgICAvLyBGSVhNRTogQ2Fu
J3QgdXNlIFNWR0VsZW1lbnQ6Okluc3RhbmNlVXBkYXRlQmxvY2tlciBiZWNhdXNlIG9mIGNpcmN1
bGFyIGhlYWRlciBkZXBlbmRlbmN5LiBXb3VsZCBiZSBuaWNlIHRvIHVudGFuZ2xlIHRoaXMuCiAg
ICAgICAgIHNldEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKmFuaW1hdGVkVHlwZXNbMF0uZWxlbWVu
dCwgdHJ1ZSk7CiAKLSAgICAgICAgZm9yIChhdXRvJiBhbmltYXRlZFR5cGUgOiBhbmltYXRlZFR5
cGVzKSB7Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTih3aGlj
aFByb3BlcnR5IDwgYW5pbWF0ZWRUeXBlLnByb3BlcnRpZXMuc2l6ZSgpKTsKLSAgICAgICAgICAg
IEFuaW1WYWxUeXBlKiBwcm9wZXJ0eSA9IGNhc3RBbmltYXRlZFByb3BlcnR5VG9BY3R1YWxUeXBl
PEFuaW1WYWxUeXBlPihhbmltYXRlZFR5cGUucHJvcGVydGllc1t3aGljaFByb3BlcnR5XS5nZXQo
KSk7CisgICAgICAgIFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gYW5pbWF0ZWRUeXBlcy5lbmQoKTsKKyAgICAgICAgZm9yIChTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYW5pbWF0ZWRUeXBlcy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKHdoaWNoUHJvcGVydHkgPCBpdC0+cHJvcGVydGllcy5zaXplKCkpOworICAg
ICAgICAgICAgQW5pbVZhbFR5cGUqIHByb3BlcnR5ID0gY2FzdEFuaW1hdGVkUHJvcGVydHlUb0Fj
dHVhbFR5cGU8QW5pbVZhbFR5cGU+KGl0LT5wcm9wZXJ0aWVzW3doaWNoUHJvcGVydHldLmdldCgp
KTsKIAogICAgICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHsKICAgICAgICAgICAgIGNhc2UgU3Rh
cnRBbmltYXRpb25BY3Rpb246CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODQ3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw4ICsxNjcsOCBAQAog
ICAgICAgICAvLyBhbmQgd2hpdGUgc3BhY2UgYmVmb3JlIGFuZCBhZnRlciBzZW1pY29sb24gc2Vw
YXJhdG9ycywgaXMgYWxsb3dlZCBhbmQgd2lsbCBiZSBpZ25vcmVkLgogICAgICAgICAvLyBodHRw
Oi8vd3d3LnczLm9yZy9UUi9TVkcxMS9hbmltYXRlLmh0bWwjVmFsdWVzQXR0cmlidXRlCiAgICAg
ICAgIHZhbHVlLnN0cmluZygpLnNwbGl0KCc7JywgbV92YWx1ZXMpOwotICAgICAgICBmb3IgKGF1
dG8mIHZhbHVlIDogbV92YWx1ZXMpCi0gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN0cmlwV2hp
dGVTcGFjZSgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92YWx1ZXMuc2l6
ZSgpOyArK2kpCisgICAgICAgICAgICBtX3ZhbHVlc1tpXSA9IG1fdmFsdWVzW2ldLnN0cmlwV2hp
dGVTcGFjZSgpOwogCiAgICAgICAgIHVwZGF0ZUFuaW1hdGlvbk1vZGUoKTsKICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkocmV2aXNp
b24gMTg0NzMzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw5IEBACiAKIFNWR0N1cnNvckVsZW1lbnQ6On5TVkdD
dXJzb3JFbGVtZW50KCkKIHsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAg
ICAgICAgY2xpZW50LT5jdXJzb3JFbGVtZW50UmVtb3ZlZCgpOworICAgIEhhc2hTZXQ8U1ZHRWxl
bWVudCo+OjppdGVyYXRvciBlbmQgPSBtX2NsaWVudHMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0
PFNWR0VsZW1lbnQqPjo6aXRlcmF0b3IgaXQgPSBtX2NsaWVudHMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICAoKml0KS0+Y3Vyc29yRWxlbWVudFJlbW92ZWQoKTsKIH0KIAogYm9v
bCBTVkdDdXJzb3JFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVu
c2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4
dGVuc2lvbnMuY3BwCShyZXZpc2lvbiAxODQ3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDE0ICsxMDEsMTYg
QEAKIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnBhdXNlQW5pbWF0aW9ucygpCiB7Ci0g
ICAgZm9yIChhdXRvJiBjb250YWluZXIgOiBtX3RpbWVDb250YWluZXJzKQotICAgICAgICBjb250
YWluZXItPnBhdXNlQW5pbWF0aW9ucygpOworICAgIGF1dG8gZW5kID0gbV90aW1lQ29udGFpbmVy
cy5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3RpbWVDb250YWluZXJzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPnBhdXNlQW5pbWF0aW9ucygpOwogfQogCiB2
b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6dW5wYXVzZUFuaW1hdGlvbnMoKQogewotICAgIGZv
ciAoYXV0byYgY29udGFpbmVyIDogbV90aW1lQ29udGFpbmVycykKLSAgICAgICAgY29udGFpbmVy
LT51bnBhdXNlQW5pbWF0aW9ucygpOworICAgIGF1dG8gZW5kID0gbV90aW1lQ29udGFpbmVycy5l
bmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3RpbWVDb250YWluZXJzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPnVucGF1c2VBbmltYXRpb25zKCk7CiB9CiAKIHZv
aWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpkaXNwYXRjaFNWR0xvYWRFdmVudFRvT3V0ZXJtb3N0
U1ZHRWxlbWVudHMoKQpAQCAtMTE2LDEwICsxMTgsMTIgQEAKICAgICBWZWN0b3I8UmVmUHRyPFNW
R1NWR0VsZW1lbnQ+PiB0aW1lQ29udGFpbmVyczsKICAgICB0aW1lQ29udGFpbmVycy5hcHBlbmRS
YW5nZShtX3RpbWVDb250YWluZXJzLmJlZ2luKCksIG1fdGltZUNvbnRhaW5lcnMuZW5kKCkpOwog
Ci0gICAgZm9yIChhdXRvJiBjb250YWluZXIgOiBtX3RpbWVDb250YWluZXJzKSB7Ci0gICAgICAg
IGlmICghY29udGFpbmVyLT5pc091dGVybW9zdFNWR1NWR0VsZW1lbnQoKSkKKyAgICBhdXRvIGVu
ZCA9IHRpbWVDb250YWluZXJzLmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9IHRpbWVDb250YWlu
ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBTVkdTVkdFbGVtZW50KiBv
dXRlclNWRyA9ICgqaXQpLmdldCgpOworICAgICAgICBpZiAoIW91dGVyU1ZHLT5pc091dGVybW9z
dFNWR1NWR0VsZW1lbnQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBjb250YWlu
ZXItPnNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxlKCk7CisgICAgICAgIG91dGVyU1ZHLT5zZW5k
U1ZHTG9hZEV2ZW50SWZQb3NzaWJsZSgpOwogICAgIH0KIH0KIApAQCAtMTY3LDcgKzE3MSw5IEBA
CiAgICAgLy8gVGhpcyBhbGdvcml0aG0gdGFrZXMgdGltZSBwcm9wb3J0aW9uYWwgdG8gdGhlIG51
bWJlciBvZiBwZW5kaW5nIHJlc291cmNlcyBhbmQgbmVlZCBub3QuCiAgICAgLy8gSWYgcGVyZm9y
bWFuY2UgYmVjb21lcyBhbiBpc3N1ZSB3ZSBjYW4ga2VlcCBhIGNvdW50ZWQgc2V0IG9mIGVsZW1l
bnRzIGFuZCBhbnN3ZXIgdGhlIHF1ZXN0aW9uIGVmZmljaWVudGx5LgogICAgIEFTU0VSVChlbGVt
ZW50KTsKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnRzIDogbV9wZW5kaW5nUmVzb3VyY2VzLnZhbHVl
cygpKSB7CisgICAgYXV0byBlbmQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuZW5kKCk7CisgICAgZm9y
IChhdXRvIGl0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICBQZW5kaW5nRWxlbWVudHMqIGVsZW1lbnRzID0gaXQtPnZhbHVlLmdldCgpOwog
ICAgICAgICBBU1NFUlQoZWxlbWVudHMpOwogCiAgICAgICAgIGlmIChlbGVtZW50cy0+Y29udGFp
bnMoZWxlbWVudCkpCkBAIC0xOTksMzkgKzIwNSw0MyBAQAogICAgIC8vIFJlbW92ZSB0aGUgZWxl
bWVudCBmcm9tIHBlbmRpbmcgcmVzb3VyY2VzLgogICAgIGlmICghbV9wZW5kaW5nUmVzb3VyY2Vz
LmlzRW1wdHkoKSAmJiBlbGVtZW50LT5oYXNQZW5kaW5nUmVzb3VyY2VzKCkpIHsKICAgICAgICAg
VmVjdG9yPEF0b21pY1N0cmluZz4gdG9CZVJlbW92ZWQ7Ci0gICAgICAgIGZvciAoYXV0byYgcmVz
b3VyY2UgOiBtX3BlbmRpbmdSZXNvdXJjZXMpIHsKLSAgICAgICAgICAgIFBlbmRpbmdFbGVtZW50
cyogZWxlbWVudHMgPSByZXNvdXJjZS52YWx1ZS5nZXQoKTsKKyAgICAgICAgYXV0byBlbmQgPSBt
X3BlbmRpbmdSZXNvdXJjZXMuZW5kKCk7CisgICAgICAgIGZvciAoYXV0byBpdCA9IG1fcGVuZGlu
Z1Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFBlbmRp
bmdFbGVtZW50cyogZWxlbWVudHMgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgICAgICAgICBBU1NF
UlQoZWxlbWVudHMpOwogICAgICAgICAgICAgQVNTRVJUKCFlbGVtZW50cy0+aXNFbXB0eSgpKTsK
IAogICAgICAgICAgICAgZWxlbWVudHMtPnJlbW92ZShlbGVtZW50KTsKICAgICAgICAgICAgIGlm
IChlbGVtZW50cy0+aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHRvQmVSZW1vdmVkLmFwcGVu
ZChyZXNvdXJjZS5rZXkpOworICAgICAgICAgICAgICAgIHRvQmVSZW1vdmVkLmFwcGVuZChpdC0+
a2V5KTsKICAgICAgICAgfQogCiAgICAgICAgIGNsZWFySGFzUGVuZGluZ1Jlc291cmNlc0lmUG9z
c2libGUoZWxlbWVudCk7CiAKICAgICAgICAgLy8gV2UgdXNlIHRoZSByZW1vdmVQZW5kaW5nUmVz
b3VyY2UgZnVuY3Rpb24gaGVyZSBiZWNhdXNlIGl0IGRlYWxzIHdpdGggc2V0IGxpZmV0aW1lIGNv
cnJlY3RseS4KLSAgICAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHRvQmVSZW1vdmVkKQotICAg
ICAgICAgICAgcmVtb3ZlUGVuZGluZ1Jlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgYXV0byB2
ZWN0b3JFbmQgPSB0b0JlUmVtb3ZlZC5lbmQoKTsKKyAgICAgICAgZm9yIChhdXRvIGl0ID0gdG9C
ZVJlbW92ZWQuYmVnaW4oKTsgaXQgIT0gdmVjdG9yRW5kOyArK2l0KQorICAgICAgICAgICAgcmVt
b3ZlUGVuZGluZ1Jlc291cmNlKCppdCk7CiAgICAgfQogCiAgICAgLy8gUmVtb3ZlIHRoZSBlbGVt
ZW50IGZyb20gcGVuZGluZyByZXNvdXJjZXMgdGhhdCB3ZXJlIHNjaGVkdWxlZCBmb3IgcmVtb3Zh
bC4KICAgICBpZiAoIW1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHRvQmVSZW1vdmVkOwotICAgICAgICBmb3IgKGF1
dG8mIHJlc291cmNlIDogbV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbCkgewotICAgICAgICAg
ICAgUGVuZGluZ0VsZW1lbnRzKiBlbGVtZW50cyA9IHJlc291cmNlLnZhbHVlLmdldCgpOworICAg
ICAgICBhdXRvIGVuZCA9IG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwuZW5kKCk7CisgICAg
ICAgIGZvciAoYXV0byBpdCA9IG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBQZW5kaW5nRWxlbWVudHMqIGVsZW1lbnRz
ID0gaXQtPnZhbHVlLmdldCgpOwogICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnRzKTsKICAgICAg
ICAgICAgIEFTU0VSVCghZWxlbWVudHMtPmlzRW1wdHkoKSk7CiAKICAgICAgICAgICAgIGVsZW1l
bnRzLT5yZW1vdmUoZWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudHMtPmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICB0b0JlUmVtb3ZlZC5hcHBlbmQocmVzb3VyY2Uua2V5KTsKKyAg
ICAgICAgICAgICAgICB0b0JlUmVtb3ZlZC5hcHBlbmQoaXQtPmtleSk7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBXZSB1c2UgdGhlIHJlbW92ZVBlbmRpbmdSZXNvdXJjZUZvclJlbW92YWwgZnVu
Y3Rpb24gaGVyZSBiZWNhdXNlIGl0IGRlYWxzIHdpdGggc2V0IGxpZmV0aW1lIGNvcnJlY3RseS4K
LSAgICAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHRvQmVSZW1vdmVkKQotICAgICAgICAgICAg
cmVtb3ZlUGVuZGluZ1Jlc291cmNlRm9yUmVtb3ZhbChyZXNvdXJjZSk7CisgICAgICAgIGF1dG8g
dmVjdG9yRW5kID0gdG9CZVJlbW92ZWQuZW5kKCk7CisgICAgICAgIGZvciAoYXV0byBpdCA9IHRv
QmVSZW1vdmVkLmJlZ2luKCk7IGl0ICE9IHZlY3RvckVuZDsgKytpdCkKKyAgICAgICAgICAgIHJl
bW92ZVBlbmRpbmdSZXNvdXJjZUZvclJlbW92YWwoKml0KTsKICAgICB9CiB9CiAKQEAgLTMwNywx
NiArMzE3LDE4IEBACiB7CiAgICAgVmVjdG9yPFNWR0VsZW1lbnQqPiB0b0JlUmVtb3ZlZDsKIAot
ICAgIGZvciAoYXV0byYgZGVwZW5kZW5jeSA6IG1fZWxlbWVudERlcGVuZGVuY2llcykgewotICAg
ICAgICBTVkdFbGVtZW50KiByZWZlcmVuY2VkRWxlbWVudCA9IGRlcGVuZGVuY3kua2V5OwotICAg
ICAgICBIYXNoU2V0PFNWR0VsZW1lbnQqPiYgcmVmZXJlbmNpbmdFbGVtZW50cyA9ICpkZXBlbmRl
bmN5LnZhbHVlOworICAgIGF1dG8gZW5kID0gbV9lbGVtZW50RGVwZW5kZW5jaWVzLmVuZCgpOwor
ICAgIGZvciAoYXV0byBpdCA9IG1fZWxlbWVudERlcGVuZGVuY2llcy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgU1ZHRWxlbWVudCogcmVmZXJlbmNlZEVsZW1lbnQgPSBpdC0+
a2V5OworICAgICAgICBIYXNoU2V0PFNWR0VsZW1lbnQqPiYgcmVmZXJlbmNpbmdFbGVtZW50cyA9
ICppdC0+dmFsdWU7CiAgICAgICAgIHJlZmVyZW5jaW5nRWxlbWVudHMucmVtb3ZlKHJlZmVyZW5j
aW5nRWxlbWVudCk7CiAgICAgICAgIGlmIChyZWZlcmVuY2luZ0VsZW1lbnRzLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHRvQmVSZW1vdmVkLmFwcGVuZChyZWZlcmVuY2VkRWxlbWVudCk7CiAgICAg
fQogCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogdG9CZVJlbW92ZWQpCi0gICAgICAgIG1fZWxl
bWVudERlcGVuZGVuY2llcy5yZW1vdmUoZWxlbWVudCk7CisgICAgYXV0byB2ZWN0b3JFbmQgPSB0
b0JlUmVtb3ZlZC5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSB0b0JlUmVtb3ZlZC5iZWdpbigp
OyBpdCAhPSB2ZWN0b3JFbmQ7ICsraXQpCisgICAgICAgIG1fZWxlbWVudERlcGVuZGVuY2llcy5y
ZW1vdmUoKml0KTsKIH0KIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlYnVpbGRFbGVt
ZW50cygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxODQ3MzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1MCw4ICsxNTAsOCBAQAogICAgICAgICAmeUF0dHIsCiAgICAgfTsKIAotICAgIGZvciAoYXV0
byYgbmFtZSA6IGF0dHJpYnV0ZU5hbWVzKSB7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxOYW1lID0gbmFtZS0+bG9jYWxOYW1lKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IFdURl9BUlJBWV9MRU5HVEgoYXR0cmlidXRlTmFtZXMpOyArK2kpIHsKKyAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBhdHRyaWJ1dGVOYW1lc1tpXS0+bG9jYWxOYW1l
KCk7CiAgICAgICAgIG1hcC5hZGQobG9jYWxOYW1lLmltcGwoKSwgY3NzUHJvcGVydHlJRChsb2Nh
bE5hbWUpKTsKICAgICB9CiAKQEAgLTIyOSw4ICsyMjksOCBAQAogICAgICAgICB7IHdvcmRfc3Bh
Y2luZ0F0dHIsIEFuaW1hdGVkTGVuZ3RoIH0sCiAgICAgfTsKIAotICAgIGZvciAoYXV0byYgZW50
cnkgOiB0YWJsZSkKLSAgICAgICAgbWFwLmFkZChlbnRyeS5hdHRyaWJ1dGVOYW1lLmltcGwoKSwg
ZW50cnkudHlwZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5H
VEgodGFibGUpOyArK2kpCisgICAgICAgIG1hcC5hZGQodGFibGVbaV0uYXR0cmlidXRlTmFtZS5p
bXBsKCksIHRhYmxlW2ldLnR5cGUpOwogfQogCiBzdGF0aWMgaW5saW5lIEhhc2hNYXA8UXVhbGlm
aWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGwqLCBBbmltYXRlZFByb3BlcnR5VHlwZT4mIGF0dHJp
YnV0ZU5hbWVUb0FuaW1hdGVkUHJvcGVydHlUeXBlTWFwKCkKQEAgLTI2Myw4ICsyNjMsOCBAQAog
ICAgICAgICB7IHlBdHRyLCBBbmltYXRlZExlbmd0aCB9LAogICAgIH07CiAKLSAgICBmb3IgKGF1
dG8mIGVudHJ5IDogdGFibGUpCi0gICAgICAgIG1hcC5hZGQoZW50cnkuYXR0cmlidXRlTmFtZS5p
bXBsKCksIGVudHJ5LnR5cGUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJS
QVlfTEVOR1RIKHRhYmxlKTsgKytpKQorICAgICAgICBtYXAuYWRkKHRhYmxlW2ldLmF0dHJpYnV0
ZU5hbWUuaW1wbCgpLCB0YWJsZVtpXS50eXBlKTsKIH0KIAogc3RhdGljIGlubGluZSBIYXNoTWFw
PFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsKiwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGU+
JiBjc3NQcm9wZXJ0eVdpdGhTVkdET01OYW1lVG9BbmltYXRlZFByb3BlcnR5VHlwZU1hcCgpCkBA
IC02MzksOCArNjM5LDggQEAKIAogICAgIGZvciAoZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudE9y
U2hhZG93SG9zdEVsZW1lbnQoKTsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudE9y
U2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAgICAgICBjb25zdCBFdmVudExpc3RlbmVyVmVjdG9y
JiBlbnRyeSA9IGVsZW1lbnQtPmdldEV2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5sb2FkRXZl
bnQpOwotICAgICAgICBmb3IgKGF1dG8mIGxpc3RlbmVyIDogZW50cnkpIHsKLSAgICAgICAgICAg
IGlmIChsaXN0ZW5lci51c2VDYXB0dXJlKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGVudHJ5LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoZW50cnlbaV0udXNlQ2FwdHVy
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcAkocmV2aXNpb24gMTg0NzMzKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDE3ICsx
NjEsMTkgQEAKICAgICB9CiAKICAgICBWZWN0b3I8U1ZHR2x5cGg+IGdseXBoczsKLSAgICBpZiAo
IWFsdEdseXBoTmFtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgbmFtZSA6IGFs
dEdseXBoTmFtZXMpCi0gICAgICAgICAgICBhc3NvY2lhdGVkRm9udEVsZW1lbnQtPmNvbGxlY3RH
bHlwaHNGb3JHbHlwaE5hbWUobmFtZSwgZ2x5cGhzKTsKKyAgICBzaXplX3QgYWx0R2x5cGhOYW1l
c1NpemUgPSBhbHRHbHlwaE5hbWVzLnNpemUoKTsKKyAgICBpZiAoYWx0R2x5cGhOYW1lc1NpemUp
IHsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGFsdEdseXBoTmFtZXNT
aXplOyArK2luZGV4KQorICAgICAgICAgICAgYXNzb2NpYXRlZEZvbnRFbGVtZW50LT5jb2xsZWN0
R2x5cGhzRm9yR2x5cGhOYW1lKGFsdEdseXBoTmFtZXNbaW5kZXhdLCBnbHlwaHMpOwogCiAgICAg
ICAgIC8vIEFzc2lnbiB0aGUgdW5pY29kZVN0cmluZ0xlbmd0aCBub3cgdGhhdCBpdHMga25vd24u
Ci0gICAgICAgIGZvciAoYXV0byYgZ2x5cGggOiBnbHlwaHMpCi0gICAgICAgICAgICBnbHlwaC51
bmljb2RlU3RyaW5nTGVuZ3RoID0gcnVuLmxlbmd0aCgpOworICAgICAgICBzaXplX3QgZ2x5cGhz
U2l6ZSA9IGdseXBocy5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ2x5
cGhzU2l6ZTsgKytpKQorICAgICAgICAgICAgZ2x5cGhzW2ldLnVuaWNvZGVTdHJpbmdMZW5ndGgg
PSBydW4ubGVuZ3RoKCk7CiAKICAgICAgICAgLy8gRG8gbm90IGNoZWNrIGFsdCBnbHlwaHMgZm9y
IGNvbXBhdGliaWxpdHkuIEp1c3QgcmV0dXJuIHRoZSBmaXJzdCBvbmUuCiAgICAgICAgIC8vIExh
dGVyIGNvZGUgd2lsbCBmYWlsIGlmIHdlIGRvIG5vdCBkbyB0aGlzIGFuZCB0aGUgZ2x5cGggaXMg
aW5jb21wYXRpYmxlLgotICAgICAgICBpZiAoIWdseXBocy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
aWYgKGdseXBoc1NpemUpIHsKICAgICAgICAgICAgIFNWR0dseXBoJiBzdmdHbHlwaCA9IGdseXBo
c1swXTsKICAgICAgICAgICAgIGl0ZXJhdG9yLnNldExhc3RHbHlwaE5hbWUoc3ZnR2x5cGguZ2x5
cGhOYW1lKTsKICAgICAgICAgICAgIGdseXBoRGF0YS5nbHlwaCA9IHN2Z0dseXBoLnRhYmxlRW50
cnk7CkBAIC0xODksMTQgKzE5MSwxNiBAQAogICAgICAgICBhc3NvY2lhdGVkRm9udEVsZW1lbnQt
PmNvbGxlY3RHbHlwaHNGb3JTdHJpbmcocmVtYWluaW5nVGV4dEluUnVuLCBnbHlwaHMpOwogICAg
IH0KIAotICAgIGZvciAoYXV0byYgZ2x5cGggOiBnbHlwaHMpIHsKLSAgICAgICAgaWYgKGdseXBo
LmlzUGFydE9mTGlnYXR1cmUpCisgICAgc2l6ZV90IGdseXBoc1NpemUgPSBnbHlwaHMuc2l6ZSgp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ2x5cGhzU2l6ZTsgKytpKSB7CisgICAgICAg
IFNWR0dseXBoJiBzdmdHbHlwaCA9IGdseXBoc1tpXTsKKyAgICAgICAgaWYgKHN2Z0dseXBoLmlz
UGFydE9mTGlnYXR1cmUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFpc0Nv
bXBhdGlibGVHbHlwaChnbHlwaCwgaXNWZXJ0aWNhbFRleHQsIGxhbmd1YWdlLCBhcmFiaWNGb3Jt
cywgY3VycmVudENoYXJhY3RlciwgY3VycmVudENoYXJhY3RlciArIGdseXBoLnVuaWNvZGVTdHJp
bmdMZW5ndGgpKQorICAgICAgICBpZiAoIWlzQ29tcGF0aWJsZUdseXBoKHN2Z0dseXBoLCBpc1Zl
cnRpY2FsVGV4dCwgbGFuZ3VhZ2UsIGFyYWJpY0Zvcm1zLCBjdXJyZW50Q2hhcmFjdGVyLCBjdXJy
ZW50Q2hhcmFjdGVyICsgc3ZnR2x5cGgudW5pY29kZVN0cmluZ0xlbmd0aCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgaXRlcmF0b3Iuc2V0TGFzdEdseXBoTmFtZShnbHlwaC5nbHlw
aE5hbWUpOwotICAgICAgICBnbHlwaERhdGEuZ2x5cGggPSBnbHlwaC50YWJsZUVudHJ5OwotICAg
ICAgICBhZHZhbmNlTGVuZ3RoID0gZ2x5cGgudW5pY29kZVN0cmluZ0xlbmd0aDsKKyAgICAgICAg
aXRlcmF0b3Iuc2V0TGFzdEdseXBoTmFtZShzdmdHbHlwaC5nbHlwaE5hbWUpOworICAgICAgICBn
bHlwaERhdGEuZ2x5cGggPSBzdmdHbHlwaC50YWJsZUVudHJ5OworICAgICAgICBhZHZhbmNlTGVu
Z3RoID0gc3ZnR2x5cGgudW5pY29kZVN0cmluZ0xlbmd0aDsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAJKHJldmlz
aW9uIDE4NDczMykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDEwIEBACiAgICAgLy8gd2lsbCBub3QgYmUgYWJsZSB0
byBmaW5kIGEgZ2x5cGggZm9yICJmIiwgYnV0IGhhbmRsZXMgdGhlIGZhbGxiYWNrCiAgICAgLy8g
Y2hhcmFjdGVyIHN1YnN0aXR1dGlvbiBwcm9wZXJseSB0aHJvdWdoIGdseXBoRGF0YUZvckNoYXJh
Y3RlcigpLgogICAgIFZlY3RvcjxTVkdHbHlwaD4gZ2x5cGhzOwotICAgIGZvciAoYXV0byYgdW5p
Y29kZSA6IGxpZ2F0dXJlcykgeworICAgIHNpemVfdCBsaWdhdHVyZXNTaXplID0gbGlnYXR1cmVz
LnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpZ2F0dXJlc1NpemU7ICsraSkg
eworICAgICAgICBjb25zdCBTdHJpbmcmIHVuaWNvZGUgPSBsaWdhdHVyZXNbaV07CisKICAgICAg
ICAgdW5zaWduZWQgdW5pY29kZUxlbmd0aCA9IHVuaWNvZGUubGVuZ3RoKCk7CiAgICAgICAgIEFT
U0VSVCh1bmljb2RlTGVuZ3RoID4gMSk7CiAKQEAgLTE3MSwyMyArMTc0LDI3IEBACiAgICAgc3Zn
S2VybmluZy51bmljb2RlTmFtZTIgPSBrZXJuaW5nUGFpci51bmljb2RlTmFtZTI7CiAgICAgc3Zn
S2VybmluZy5nbHlwaE5hbWUyID0ga2VybmluZ1BhaXIuZ2x5cGhOYW1lMjsKIAotICAgIGZvciAo
YXV0byYgbmFtZSA6IGtlcm5pbmdQYWlyLnVuaWNvZGVOYW1lMSkgewotICAgICAgICBpZiAodW5p
Y29kZU1hcC5jb250YWlucyhuYW1lKSkKLSAgICAgICAgICAgIHVuaWNvZGVNYXAuZ2V0KG5hbWUp
LT5hcHBlbmQoc3ZnS2VybmluZyk7CisgICAgSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRv
ciB1SXQgPSBrZXJuaW5nUGFpci51bmljb2RlTmFtZTEuYmVnaW4oKTsKKyAgICBjb25zdCBIYXNo
U2V0PFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHVFbmQgPSBrZXJuaW5nUGFpci51bmljb2RlTmFt
ZTEuZW5kKCk7CisgICAgZm9yICg7IHVJdCAhPSB1RW5kOyArK3VJdCkgeworICAgICAgICBpZiAo
dW5pY29kZU1hcC5jb250YWlucygqdUl0KSkKKyAgICAgICAgICAgIHVuaWNvZGVNYXAuZ2V0KCp1
SXQpLT5hcHBlbmQoc3ZnS2VybmluZyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXV0
byBuZXdWZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0tlcm5pbmdWZWN0b3I+KCk7CiAgICAg
ICAgICAgICBuZXdWZWN0b3ItPmFwcGVuZChzdmdLZXJuaW5nKTsKLSAgICAgICAgICAgIHVuaWNv
ZGVNYXAuYWRkKG5hbWUsIFdURjo6bW92ZShuZXdWZWN0b3IpKTsKKyAgICAgICAgICAgIHVuaWNv
ZGVNYXAuYWRkKCp1SXQsIFdURjo6bW92ZShuZXdWZWN0b3IpKTsKICAgICAgICAgfQogICAgIH0K
IAotICAgIGZvciAoYXV0byYgbmFtZSA6IGtlcm5pbmdQYWlyLmdseXBoTmFtZTEpIHsKLSAgICAg
ICAgaWYgKGdseXBoTWFwLmNvbnRhaW5zKG5hbWUpKQotICAgICAgICAgICAgZ2x5cGhNYXAuZ2V0
KG5hbWUpLT5hcHBlbmQoc3ZnS2VybmluZyk7CisgICAgSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9p
dGVyYXRvciBnSXQgPSBrZXJuaW5nUGFpci5nbHlwaE5hbWUxLmJlZ2luKCk7CisgICAgY29uc3Qg
SGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBnRW5kID0ga2VybmluZ1BhaXIuZ2x5cGhO
YW1lMS5lbmQoKTsKKyAgICBmb3IgKDsgZ0l0ICE9IGdFbmQ7ICsrZ0l0KSB7CisgICAgICAgIGlm
IChnbHlwaE1hcC5jb250YWlucygqZ0l0KSkKKyAgICAgICAgICAgIGdseXBoTWFwLmdldCgqZ0l0
KS0+YXBwZW5kKHN2Z0tlcm5pbmcpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8g
bmV3VmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdLZXJuaW5nVmVjdG9yPigpOwogICAgICAg
ICAgICAgbmV3VmVjdG9yLT5hcHBlbmQoc3ZnS2VybmluZyk7Ci0gICAgICAgICAgICBnbHlwaE1h
cC5hZGQobmFtZSwgV1RGOjptb3ZlKG5ld1ZlY3RvcikpOworICAgICAgICAgICAgZ2x5cGhNYXAu
YWRkKCpnSXQsIFdURjo6bW92ZShuZXdWZWN0b3IpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MjAyLDggKzIwOSw5IEBACiAKICAgICBpZiAoIXJhbmdlcy5pc0VtcHR5KCkpIHsKICAgICAgICAg
VUNoYXIgZmlyc3RDaGFyID0gdW5pY29kZVN0cmluZ1swXTsKLSAgICAgICAgZm9yIChhdXRvJiBy
YW5nZSA6IHJhbmdlcykgewotICAgICAgICAgICAgaWYgKGZpcnN0Q2hhciA+PSByYW5nZS5maXJz
dCAmJiBmaXJzdENoYXIgPD0gcmFuZ2Uuc2Vjb25kKQorICAgICAgICBjb25zdCBVbmljb2RlUmFu
Z2VzOjpjb25zdF9pdGVyYXRvciBlbmQgPSByYW5nZXMuZW5kKCk7CisgICAgICAgIGZvciAoVW5p
Y29kZVJhbmdlczo6Y29uc3RfaXRlcmF0b3IgaXQgPSByYW5nZXMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CisgICAgICAgICAgICBpZiAoZmlyc3RDaGFyID49IGl0LT5maXJzdCAmJiBmaXJz
dENoYXIgPD0gaXQtPnNlY29uZCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oCShy
ZXZpc2lvbiAxODQ3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0u
aAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTAgKzU4LDEwIEBACiAgICAgRGF0YUl0ZXJhdG9yIGJl
Z2luKCkgeyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7IH0KICAgICBEYXRhSXRlcmF0b3IgZW5kKCkg
eyByZXR1cm4gbV9kYXRhLmVuZCgpOyB9CiAgICAgdm9pZCBhcHBlbmQodW5zaWduZWQgY2hhciBi
eXRlKSB7IG1fZGF0YS5hcHBlbmQoYnl0ZSk7IH0KLSAgICB2b2lkIGFwcGVuZChTVkdQYXRoQnl0
ZVN0cmVhbSYgb3RoZXIpCisgICAgdm9pZCBhcHBlbmQoU1ZHUGF0aEJ5dGVTdHJlYW0qIG90aGVy
KQogICAgIHsKLSAgICAgICAgZm9yIChhdXRvIHN0cmVhbSA6IG90aGVyKQotICAgICAgICAgICAg
YXBwZW5kKHN0cmVhbSk7CisgICAgICAgIGZvciAoRGF0YUl0ZXJhdG9yIGl0ID0gb3RoZXItPmJl
Z2luKCk7IGl0ICE9IG90aGVyLT5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgIGFwcGVuZCgqaXQp
OwogICAgIH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuY2xlYXIoKTsgfQogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2RhdGEuc2l6ZSgpOyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAxODQ3MzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NSw3ICsxNTUsNyBAQAogICAgIHBhcnNlci0+Y2xlYW51cCgpOwogCiAgICAgaWYgKG9rKQotICAg
ICAgICByZXN1bHQtPmFwcGVuZCgqYXBwZW5kZWRCeXRlU3RyZWFtKTsKKyAgICAgICAgcmVzdWx0
LT5hcHBlbmQoYXBwZW5kZWRCeXRlU3RyZWFtLmdldCgpKTsKIAogICAgIHJldHVybiBvazsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250
YWluZXIuY3BwCShyZXZpc2lvbiAxODQ3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0
aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDkgKzE4Nywx
MSBAQAogI2lmbmRlZiBOREVCVUcKICAgICBtX3ByZXZlbnRTY2hlZHVsZWRBbmltYXRpb25zQ2hh
bmdlcyA9IHRydWU7CiAjZW5kaWYKLSAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6IG1fc2NoZWR1
bGVkQW5pbWF0aW9ucy52YWx1ZXMoKSkgewotICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiAq
YW5pbWF0aW9uKQotICAgICAgICAgICAgZWxlbWVudC0+cmVzZXQoKTsKKyAgICBmb3IgKGF1dG8m
IGl0IDogbV9zY2hlZHVsZWRBbmltYXRpb25zKSB7CisgICAgICAgIEFuaW1hdGlvbnNWZWN0b3Iq
IHNjaGVkdWxlZCA9IGl0LnZhbHVlLmdldCgpOworICAgICAgICB1bnNpZ25lZCBzaXplID0gc2No
ZWR1bGVkLT5zaXplKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBzaXplOyBu
KyspCisgICAgICAgICAgICBzY2hlZHVsZWQtPmF0KG4pLT5yZXNldCgpOwogICAgIH0KICNpZm5k
ZWYgTkRFQlVHCiAgICAgbV9wcmV2ZW50U2NoZWR1bGVkQW5pbWF0aW9uc0NoYW5nZXMgPSBmYWxz
ZTsKQEAgLTI3Miw3ICsyNzQsOSBAQAogICAgICAgICBzb3J0QnlQcmlvcml0eSgqc2NoZWR1bGVk
LCBlbGFwc2VkKTsKIAogICAgICAgICBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCA9IDA7
Ci0gICAgICAgIGZvciAoYXV0byYgYW5pbWF0aW9uIDogKnNjaGVkdWxlZCkgeworICAgICAgICB1
bnNpZ25lZCBzaXplID0gc2NoZWR1bGVkLT5zaXplKCk7CisgICAgICAgIGZvciAodW5zaWduZWQg
biA9IDA7IG4gPCBzaXplOyBuKyspIHsKKyAgICAgICAgICAgIFNWR1NNSUxFbGVtZW50KiBhbmlt
YXRpb24gPSBzY2hlZHVsZWQtPmF0KG4pOwogICAgICAgICAgICAgQVNTRVJUKGFuaW1hdGlvbi0+
dGltZUNvbnRhaW5lcigpID09IHRoaXMpOwogICAgICAgICAgICAgQVNTRVJUKGFuaW1hdGlvbi0+
dGFyZ2V0RWxlbWVudCgpKTsKICAgICAgICAgICAgIEFTU0VSVChhbmltYXRpb24tPmhhc1ZhbGlk
QXR0cmlidXRlTmFtZSgpKTsKQEAgLTI5Nyw3ICszMDEsOCBAQAogICAgICAgICAgICAgYW5pbWF0
aW9uc1RvQXBwbHkuYXBwZW5kKHJlc3VsdEVsZW1lbnQpOwogICAgIH0KIAotICAgIGlmIChhbmlt
YXRpb25zVG9BcHBseS5pc0VtcHR5KCkpIHsKKyAgICB1bnNpZ25lZCBhbmltYXRpb25zVG9BcHBs
eVNpemUgPSBhbmltYXRpb25zVG9BcHBseS5zaXplKCk7CisgICAgaWYgKCFhbmltYXRpb25zVG9B
cHBseVNpemUpIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1fcHJldmVudFNjaGVkdWxlZEFu
aW1hdGlvbnNDaGFuZ2VzID0gZmFsc2U7CiAjZW5kaWYKQEAgLTMwNiw4ICszMTEsOCBAQAogICAg
IH0KIAogICAgIC8vIEFwcGx5IHJlc3VsdHMgdG8gdGFyZ2V0IGVsZW1lbnRzLgotICAgIGZvciAo
YXV0byYgYW5pbWF0aW9uIDogYW5pbWF0aW9uc1RvQXBwbHkpCi0gICAgICAgIGFuaW1hdGlvbi0+
YXBwbHlSZXN1bHRzVG9UYXJnZXQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYW5p
bWF0aW9uc1RvQXBwbHlTaXplOyArK2kpCisgICAgICAgIGFuaW1hdGlvbnNUb0FwcGx5W2ldLT5h
cHBseVJlc3VsdHNUb1RhcmdldCgpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIG1fcHJldmVudFNj
aGVkdWxlZEFuaW1hdGlvbnNDaGFuZ2VzID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkocmV2aXNpb24gMTg0NzMzKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyMSwxNCArNDIxLDE0IEBACiAgICAgaWYgKGJlZ2luT3JFbmQgPT0gRW5k
KQogICAgICAgICBtX2hhc0VuZEV2ZW50Q29uZGl0aW9ucyA9IGZhbHNlOwogICAgIEhhc2hTZXQ8
ZG91YmxlPiBleGlzdGluZzsKLSAgICBmb3IgKGF1dG8mIHRpbWUgOiB0aW1lTGlzdCkKLSAgICAg
ICAgZXhpc3RpbmcuYWRkKHRpbWUudGltZSgpLnZhbHVlKCkpOworICAgIGZvciAodW5zaWduZWQg
biA9IDA7IG4gPCB0aW1lTGlzdC5zaXplKCk7ICsrbikKKyAgICAgICAgZXhpc3RpbmcuYWRkKHRp
bWVMaXN0W25dLnRpbWUoKS52YWx1ZSgpKTsKICAgICBWZWN0b3I8U3RyaW5nPiBzcGxpdFN0cmlu
ZzsKICAgICBwYXJzZVN0cmluZy5zcGxpdCgnOycsIHNwbGl0U3RyaW5nKTsKLSAgICBmb3IgKGF1
dG8mIHN0cmluZyA6IHNwbGl0U3RyaW5nKSB7Ci0gICAgICAgIFNNSUxUaW1lIHZhbHVlID0gcGFy
c2VDbG9ja1ZhbHVlKHN0cmluZyk7CisgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHNwbGl0
U3RyaW5nLnNpemUoKTsgKytuKSB7CisgICAgICAgIFNNSUxUaW1lIHZhbHVlID0gcGFyc2VDbG9j
a1ZhbHVlKHNwbGl0U3RyaW5nW25dKTsKICAgICAgICAgaWYgKHZhbHVlLmlzVW5yZXNvbHZlZCgp
KQotICAgICAgICAgICAgcGFyc2VDb25kaXRpb24oc3RyaW5nLCBiZWdpbk9yRW5kKTsKKyAgICAg
ICAgICAgIHBhcnNlQ29uZGl0aW9uKHNwbGl0U3RyaW5nW25dLCBiZWdpbk9yRW5kKTsKICAgICAg
ICAgZWxzZSBpZiAoIWV4aXN0aW5nLmNvbnRhaW5zKHZhbHVlLnZhbHVlKCkpKQogICAgICAgICAg
ICAgdGltZUxpc3QuYXBwZW5kKFNNSUxUaW1lV2l0aE9yaWdpbih2YWx1ZSwgU01JTFRpbWVXaXRo
T3JpZ2luOjpQYXJzZXJPcmlnaW4pKTsKICAgICB9CkBAIC01MTgsNyArNTE4LDggQEAKICAgICBp
ZiAobV9jb25kaXRpb25zQ29ubmVjdGVkKQogICAgICAgICBkaXNjb25uZWN0Q29uZGl0aW9ucygp
OwogICAgIG1fY29uZGl0aW9uc0Nvbm5lY3RlZCA9IHRydWU7Ci0gICAgZm9yIChhdXRvJiBjb25k
aXRpb24gOiBtX2NvbmRpdGlvbnMpIHsKKyAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgbV9j
b25kaXRpb25zLnNpemUoKTsgKytuKSB7CisgICAgICAgIENvbmRpdGlvbiYgY29uZGl0aW9uID0g
bV9jb25kaXRpb25zW25dOwogICAgICAgICBpZiAoY29uZGl0aW9uLm1fdHlwZSA9PSBDb25kaXRp
b246OkV2ZW50QmFzZSkgewogICAgICAgICAgICAgQVNTRVJUKCFjb25kaXRpb24ubV9zeW5jYmFz
ZSk7CiAgICAgICAgICAgICBFbGVtZW50KiBldmVudEJhc2UgPSBldmVudEJhc2VGb3IoY29uZGl0
aW9uKTsKQEAgLTU0Niw3ICs1NDcsOCBAQAogICAgIGlmICghbV9jb25kaXRpb25zQ29ubmVjdGVk
KQogICAgICAgICByZXR1cm47CiAgICAgbV9jb25kaXRpb25zQ29ubmVjdGVkID0gZmFsc2U7Ci0g
ICAgZm9yIChhdXRvJiBjb25kaXRpb24gOiBtX2NvbmRpdGlvbnMpIHsKKyAgICBmb3IgKHVuc2ln
bmVkIG4gPSAwOyBuIDwgbV9jb25kaXRpb25zLnNpemUoKTsgKytuKSB7CisgICAgICAgIENvbmRp
dGlvbiYgY29uZGl0aW9uID0gbV9jb25kaXRpb25zW25dOwogICAgICAgICBpZiAoY29uZGl0aW9u
Lm1fdHlwZSA9PSBDb25kaXRpb246OkV2ZW50QmFzZSkgewogICAgICAgICAgICAgQVNTRVJUKCFj
b25kaXRpb24ubV9zeW5jYmFzZSk7CiAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvbi5tX2V2ZW50
TGlzdGVuZXIpCkBAIC0xMTI0LDcgKzExMjYsOSBAQAogICAgICAgICByZXR1cm47CiAgICAgbG9v
cEJyZWFrZXIuYWRkKHRoaXMpOwogICAgIAotICAgIGZvciAoYXV0byYgZGVwZW5kZW50IDogbV90
aW1lRGVwZW5kZW50cykgeworICAgIFRpbWVEZXBlbmRlbnRTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1f
dGltZURlcGVuZGVudHMuZW5kKCk7CisgICAgZm9yIChUaW1lRGVwZW5kZW50U2V0OjppdGVyYXRv
ciBpdCA9IG1fdGltZURlcGVuZGVudHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgIFNWR1NNSUxFbGVtZW50KiBkZXBlbmRlbnQgPSAqaXQ7CiAgICAgICAgIGRlcGVuZGVudC0+
Y3JlYXRlSW5zdGFuY2VUaW1lc0Zyb21TeW5jYmFzZSh0aGlzLCBuZXdPckV4aXN0aW5nKTsKICAg
ICB9CiAKQEAgLTExMzUsNyArMTEzOSw4IEBACiB7CiAgICAgLy8gRklYTUU6IFRvIGJlIHJlYWxs
eSBjb3JyZWN0LCB0aGlzIHNob3VsZCBoYW5kbGUgdXBkYXRpbmcgZXhpc2luZyBpbnRlcnZhbCBi
eSBjaGFuZ2luZyAKICAgICAvLyB0aGUgYXNzb2NpYXRlZCB0aW1lcyBpbnN0ZWFkIG9mIGNyZWF0
aW5nIG5ldyBvbmVzLgotICAgIGZvciAoYXV0byYgY29uZGl0aW9uIDogbV9jb25kaXRpb25zKSB7
CisgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IG1fY29uZGl0aW9ucy5zaXplKCk7ICsrbikg
eworICAgICAgICBDb25kaXRpb24mIGNvbmRpdGlvbiA9IG1fY29uZGl0aW9uc1tuXTsKICAgICAg
ICAgaWYgKGNvbmRpdGlvbi5tX3R5cGUgPT0gQ29uZGl0aW9uOjpTeW5jYmFzZSAmJiBjb25kaXRp
b24ubV9zeW5jYmFzZSA9PSBzeW5jYmFzZSkgewogICAgICAgICAgICAgQVNTRVJUKGNvbmRpdGlv
bi5tX25hbWUgPT0gImJlZ2luIiB8fCBjb25kaXRpb24ubV9uYW1lID09ICJlbmQiKTsKICAgICAg
ICAgICAgIC8vIE5vIG5lc3RlZCB0aW1lIGNvbnRhaW5lcnMgaW4gU1ZHLCBubyBuZWVkIGZvciBj
cmF6eSB0aW1lIHNwYWNlIGNvbnZlcnNpb25zLiBQaGV3IQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAJ
KHJldmlzaW9uIDE4NDczMykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlckJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4ICs5NSwxMCBAQAog
CiAgICAgZWZmZWN0LT5jbGVhclJlc3VsdCgpOwogCi0gICAgZm9yIChhdXRvJiByZWZlcmVuY2Ug
OiBlZmZlY3RSZWZlcmVuY2VzKGVmZmVjdCkpCi0gICAgICAgIGNsZWFyUmVzdWx0c1JlY3Vyc2l2
ZShyZWZlcmVuY2UpOworICAgIEhhc2hTZXQ8RmlsdGVyRWZmZWN0Kj4mIGVmZmVjdFJlZmVyZW5j
ZXMgPSB0aGlzLT5lZmZlY3RSZWZlcmVuY2VzKGVmZmVjdCk7CisgICAgSGFzaFNldDxGaWx0ZXJF
ZmZlY3QqPjo6aXRlcmF0b3IgZW5kID0gZWZmZWN0UmVmZXJlbmNlcy5lbmQoKTsKKyAgICBmb3Ig
KEhhc2hTZXQ8RmlsdGVyRWZmZWN0Kj46Oml0ZXJhdG9yIGl0ID0gZWZmZWN0UmVmZXJlbmNlcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICBjbGVhclJlc3VsdHNSZWN1cnNpdmUo
Kml0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAkocmV2
aXNpb24gMTg0NzMzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw4ICs2Miw5IEBACiBwcml2YXRl
OgogICAgIGlubGluZSB2b2lkIGFkZEJ1aWx0aW5FZmZlY3RzKCkKICAgICB7Ci0gICAgICAgIGZv
ciAoYXV0byYgZWZmZWN0IDogbV9idWlsdGluRWZmZWN0cy52YWx1ZXMoKSkKLSAgICAgICAgICAg
IG1fZWZmZWN0UmVmZXJlbmNlcy5hZGQoZWZmZWN0LCBGaWx0ZXJFZmZlY3RTZXQoKSk7CisgICAg
ICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8RmlsdGVyRWZmZWN0Pj46Oml0ZXJhdG9y
IGVuZCA9IG1fYnVpbHRpbkVmZmVjdHMuZW5kKCk7CisgICAgICAgIGZvciAoSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+Pjo6aXRlcmF0b3IgaXRlcmF0b3IgPSBtX2J1
aWx0aW5FZmZlY3RzLmJlZ2luKCk7IGl0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvcikKKyAgICAg
ICAgICAgICBtX2VmZmVjdFJlZmVyZW5jZXMuYWRkKGl0ZXJhdG9yLT52YWx1ZSwgRmlsdGVyRWZm
ZWN0U2V0KCkpOwogICAgIH0KIAogICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8Rmls
dGVyRWZmZWN0Pj4gbV9idWlsdGluRWZmZWN0czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuY3BwCShyZXZpc2lvbiAx
ODQ3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcsMTAgQEAKIFNWR0FuaW1hdGVkUHJv
cGVydHk6On5TVkdBbmltYXRlZFByb3BlcnR5KCkKIHsKICAgICAvLyBSZW1vdmUgd3JhcHBlciBm
cm9tIGNhY2hlLgotICAgIGZvciAoYXV0byYgY2FjaGUgOiAqYW5pbWF0ZWRQcm9wZXJ0eUNhY2hl
KCkpIHsKLSAgICAgICAgaWYgKGNhY2hlLnZhbHVlID09IHRoaXMpIHsKLSAgICAgICAgICAgIGFu
aW1hdGVkUHJvcGVydHlDYWNoZSgpLT5yZW1vdmUoY2FjaGUua2V5KTsKKyAgICBDYWNoZSYgY2Fj
aGUgPSAqYW5pbWF0ZWRQcm9wZXJ0eUNhY2hlKCk7CisgICAgZm9yIChhdXRvIGl0ID0gY2FjaGUu
YmVnaW4oKSwgZW5kID0gY2FjaGUuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBp
ZiAoaXQtPnZhbHVlID09IHRoaXMpIHsKKyAgICAgICAgICAgIGNhY2hlLnJlbW92ZShpdCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCShyZXZpc2lvbiAxODQ3MzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAkod29y
a2luZyBjb3B5KQpAQCAtNjIsOCArNjIsOSBAQAogICAgIHsKICAgICAgICAgLy8gU2VlIFNWR1By
b3BlcnR5VGVhck9mZjo6ZGV0YWNoV3JhcHBlcigpIGZvciBhbiBleHBsYW5hdGlvbiBhYm91dCB3
aGF0J3MgaGFwcGVuaW5nIGhlcmUuCiAgICAgICAgIEFTU0VSVCh3cmFwcGVycyk7Ci0gICAgICAg
IGZvciAoYXV0byYgaXRlbSA6ICp3cmFwcGVycykgewotICAgICAgICAgICAgaWYgKGl0ZW0pCisg
ICAgICAgIHVuc2lnbmVkIHNpemUgPSB3cmFwcGVycy0+c2l6ZSgpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBpZiAoTGlzdEl0ZW1U
ZWFyT2ZmKiBpdGVtID0gd3JhcHBlcnMtPmF0KGkpLmdldCgpKQogICAgICAgICAgICAgICAgIGl0
ZW0tPmRldGFjaFdyYXBwZXIoKTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmYuY3BwCShyZXZpc2lvbiAxODQ3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDcgKzMwLDkgQEAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY6OmNs
ZWFyQ29udGV4dEFuZFJvbGVzKCkKIHsKICAgICBBU1NFUlQobV92YWx1ZXMpOwotICAgIGZvciAo
YXV0byYgaXRlbSA6ICptX3ZhbHVlcykgeworICAgIHVuc2lnbmVkIHNpemUgPSBtX3ZhbHVlcy0+
c2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAg
ICAgTGlzdEl0ZW1UeXBlIGl0ZW0gPSBtX3ZhbHVlcy0+YXQoaSk7CiAgICAgICAgIHN0YXRpY19j
YXN0PFNWR1BhdGhTZWdXaXRoQ29udGV4dCo+KGl0ZW0uZ2V0KCkpLT5zZXRDb250ZXh0QW5kUm9s
ZSgwLCBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CiAgICAgfQogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>