<?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>58534</bug_id>
          
          <creation_ts>2011-04-14 05:55:53 -0700</creation_ts>
          <short_desc>Web Inspector: [Chromium] Ready to move detailed heap snapshots storage and processing into workers</short_desc>
          <delta_ts>2011-04-14 07:44:55 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Mikhail Naganov">mnaganov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>385690</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-14 05:55:53 -0700</bug_when>
    <thetext>This patch finishes work started in r83718. Snapshots diffing is now done asynchronously. We are ready to implement snapshots storage and processing using workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385692</commentid>
    <comment_count>1</comment_count>
      <attachid>89567</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-14 05:59:58 -0700</bug_when>
    <thetext>Created attachment 89567
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385753</commentid>
    <comment_count>2</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-14 07:44:55 -0700</bug_when>
    <thetext>Manually committed http://trac.webkit.org/changeset/83850


2011-04-14  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Ready to move detailed heap snapshots storage and processing into workers.
        https://bugs.webkit.org/show_bug.cgi?id=58534

        * inspector/front-end/DetailedHeapshotGridNodes.js:
        (WebInspector.HeapSnapshotGenericObjectNode.prototype.get _countPercent):
        (WebInspector.HeapSnapshotDiffNode):
        (WebInspector.HeapSnapshotDiffNode.prototype.calculateDiff.diffCalculated):
        (WebInspector.HeapSnapshotDiffNode.prototype.calculateDiff):
        (WebInspector.HeapSnapshotDiffNode.prototype.calculateDiff.baseIdsReceived):
        (WebInspector.HeapSnapshotDiffNode.prototype.calculateDiff.idsReceived):
        (WebInspector.HeapSnapshotDiffNode.prototype._createNodesProvider.createProvider):
        (WebInspector.HeapSnapshotDiffNode.prototype._createNodesProvider):
        (WebInspector.HeapSnapshotDiffNode.prototype.get data):
        * inspector/front-end/DetailedHeapshotView.js:
        (WebInspector.HeapSnapshotDiffDataGrid.prototype.setBaseDataSource):
        (WebInspector.HeapSnapshotDiffDataGrid.prototype.populateChildren.baseAggregatesReceived.aggregatesReceived.addNodeIfNonZeroDiff):
        (WebInspector.HeapSnapshotDiffDataGrid.prototype.populateChildren.baseAggregatesReceived.aggregatesReceived):
        (WebInspector.HeapSnapshotDiffDataGrid.prototype.populateChildren):
        * inspector/front-end/HeapSnapshot.js:
        (WebInspector.HeapSnapshot):
        (WebInspector.HeapSnapshot.prototype.dispose):
        (WebInspector.HeapSnapshot.prototype.nodeFieldValuesByIndex):
        (WebInspector.HeapSnapshot.prototype._numbersComparator):
        (WebInspector.HeapSnapshot.prototype.baseSnapshotHasNode):
        (WebInspector.HeapSnapshot.prototype.updateBaseNodeIds):
        (WebInspector.HeapSnapshotsDiff):
        (WebInspector.HeapSnapshotsDiff.prototype.set baseIds):
        (WebInspector.HeapSnapshotsDiff.prototype.set baseSelfSizes):
        (WebInspector.HeapSnapshotsDiff.prototype.calculate):
        * inspector/front-end/HeapSnapshotProxy.js:
        (WebInspector.HeapSnapshotProxy):
        (WebInspector.HeapSnapshotProxy.prototype.createDiff):
        (WebInspector.HeapSnapshotProxy.prototype.createEdgesProvider):
        (WebInspector.HeapSnapshotProxy.prototype.createNodesProvider):
        (WebInspector.HeapSnapshotProxy.prototype.dispose):
        (WebInspector.HeapSnapshotProxy.prototype.nodeFieldValuesByIndex):
        (WebInspector.HeapSnapshotProxy.prototype.pushBaseIds):
        (WebInspector.HeapSnapshotsDiffProxy):
        (WebInspector.HeapSnapshotsDiffProxy.prototype.calculate):
        (WebInspector.HeapSnapshotsDiffProxy.prototype.pushBaseIds):
        (WebInspector.HeapSnapshotsDiffProxy.prototype.pushBaseSelfSizes):

2011-04-14  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Ready to move detailed heap snapshots storage and processing into workers.
        https://bugs.webkit.org/show_bug.cgi?id=58534

        * inspector/profiler/detailed-heapshots-test.js:
        (initialize_DetailedHeapshotTest.):
        (initialize_DetailedHeapshotTest):
        * inspector/profiler/heap-snapshot-test.js:
        (initialize_HeapSnapshotTest.InspectorTest.createHeapSnapshotMock):
        (initialize_HeapSnapshotTest):</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89567</attachid>
            <date>2011-04-14 05:59:58 -0700</date>
            <delta_ts>2011-04-14 06:28:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch-58534</filename>
            <type>text/plain</type>
            <size>23288</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYTY0N2FiLi5lYTMxMDQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQt
MTQgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hy
b21pdW1dIFJlYWR5IHRvIG1vdmUgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMgc3RvcmFnZSBhbmQg
cHJvY2Vzc2luZyBpbnRvIHdvcmtlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01ODUzNAorCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2Rl
dGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZXRhaWxlZEhl
YXBzaG90VGVzdC4pOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZXRhaWxlZEhlYXBzaG90VGVzdCk6
CisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qczoKKyAg
ICAgICAgKGluaXRpYWxpemVfSGVhcFNuYXBzaG90VGVzdC5JbnNwZWN0b3JUZXN0LmNyZWF0ZUhl
YXBTbmFwc2hvdE1vY2spOgorICAgICAgICAoaW5pdGlhbGl6ZV9IZWFwU25hcHNob3RUZXN0KToK
KwogMjAxMS0wNC0xNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIGJhc2VsaW5lcyBmb3IgbmV3IHRlc3RzLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy10
ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90
cy10ZXN0LmpzCmluZGV4IGQzZTQ0MzkuLmQxNDE3Y2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5qcworKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanMKQEAg
LTM3Myw3ICszNzMsNyBAQCBJbnNwZWN0b3JUZXN0LnRha2VBbmRPcGVuU25hcHNob3QgPSBmdW5j
dGlvbihnZW5lcmF0b3IsIGNhbGxiYWNrKQogICAgICAgICBzbmFwc2hvdC5zbmFwc2hvdC50eXBl
SWQgPSBwcm9maWxlLnR5cGVJZDsKICAgICAgICAgc25hcHNob3Quc25hcHNob3QudGl0bGUgPSBw
cm9maWxlLnRpdGxlOwogICAgICAgICBzbmFwc2hvdC5zbmFwc2hvdC51aWQgPSBwcm9maWxlLnVp
ZDsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5fYWRkSGVhcFNuYXBzaG90
Q2h1bmsodWlkLCBKU09OLnN0cmluZ2lmeShnZW5lcmF0b3IoKSkpOworICAgICAgICBXZWJJbnNw
ZWN0b3IucGFuZWxzLnByb2ZpbGVzLl9hZGRIZWFwU25hcHNob3RDaHVuayh1aWQsIEpTT04uc3Ry
aW5naWZ5KHNuYXBzaG90KSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMu
X2ZpbmlzaEhlYXBTbmFwc2hvdCh1aWQpOwogICAgIH0KICAgICBJbnNwZWN0b3JUZXN0Lm92ZXJy
aWRlKFByb2ZpbGVyQWdlbnQsICJnZXRQcm9maWxlIiwgcHVzaEdlbmVyYXRlZFNuYXBzaG90KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90
LXRlc3QuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10
ZXN0LmpzCmluZGV4IGZiNjk1YzYuLjhhZGU5YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcwpAQCAtNjEsNyArNjEsOCBA
QCBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2sgPSBmdW5jdGlvbigpCiAgICAg
ICAgICAgICAxLCAzLCA0LCA0LCAxMCwgIDEsIDEsIDEsIDExLCA1NywKICAgICAgICAgICAgIDEs
IDQsIDUsIDUsICA1LCAyNywgMCwKICAgICAgICAgICAgIDEsIDUsIDYsIDYsICA2LCA0MCwgMF0s
Ci0gICAgICAgIHN0cmluZ3M6IFsiIiwgIkEiLCAiQiIsICJDIiwgIkQiLCAiRSIsICJhIiwgImIi
LCAiYWMiLCAiYmMiLCAiYmQiLCAiY2UiXQorICAgICAgICBzdHJpbmdzOiBbIiIsICJBIiwgIkIi
LCAiQyIsICJEIiwgIkUiLCAiYSIsICJiIiwgImFjIiwgImJjIiwgImJkIiwgImNlIl0sCisgICAg
ICAgIHNuYXBzaG90OiB7fQogICAgIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE5MWNkOS4uOTIz
Y2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDExLTA0LTE0ICBNaWtoYWlsIE5h
Z2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW0Nocm9taXVtXSBSZWFkeSB0
byBtb3ZlIGRldGFpbGVkIGhlYXAgc25hcHNob3RzIHN0b3JhZ2UgYW5kIHByb2Nlc3NpbmcgaW50
byB3b3JrZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTg1MzQKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hv
dEdyaWROb2Rlcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmlj
T2JqZWN0Tm9kZS5wcm90b3R5cGUuZ2V0IF9jb3VudFBlcmNlbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3REaWZmTm9kZS5wcm90b3R5cGUuY2FsY3VsYXRlRGlmZi5kaWZmQ2FsY3VsYXRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBlLmNh
bGN1bGF0ZURpZmYpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2Rl
LnByb3RvdHlwZS5jYWxjdWxhdGVEaWZmLmJhc2VJZHNSZWNlaXZlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBlLmNhbGN1bGF0ZURpZmYuaWRz
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLnBy
b3RvdHlwZS5fY3JlYXRlTm9kZXNQcm92aWRlci5jcmVhdGVQcm92aWRlcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBlLl9jcmVhdGVOb2Rlc1By
b3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90
b3R5cGUuZ2V0IGRhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRI
ZWFwc2hvdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZkRh
dGFHcmlkLnByb3RvdHlwZS5zZXRCYXNlRGF0YVNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RGlmZkRhdGFHcmlkLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuLmJh
c2VBZ2dyZWdhdGVzUmVjZWl2ZWQuYWdncmVnYXRlc1JlY2VpdmVkLmFkZE5vZGVJZk5vblplcm9E
aWZmKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJv
dG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4uYmFzZUFnZ3JlZ2F0ZXNSZWNlaXZlZC5hZ2dyZWdhdGVz
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZEYXRhR3Jp
ZC5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9IZWFwU25hcHNob3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmRpc3Bvc2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUubm9kZUZpZWxk
VmFsdWVzQnlJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZS5fbnVtYmVyc0NvbXBhcmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUuYmFzZVNuYXBzaG90SGFzTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS51cGRhdGVCYXNlTm9kZUlkcyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90c0RpZmYpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdHNEaWZmLnByb3RvdHlwZS5zZXQgYmFzZUlkcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90c0RpZmYucHJvdG90eXBlLnNldCBiYXNlU2VsZlNpemVzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZi5wcm90b3R5cGUuY2FsY3VsYXRl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUuY3JlYXRlRGlmZik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlLmNyZWF0ZUVkZ2VzUHJv
dmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlw
ZS5jcmVhdGVOb2Rlc1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RQcm94eS5wcm90b3R5cGUuZGlzcG9zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90UHJveHkucHJvdG90eXBlLm5vZGVGaWVsZFZhbHVlc0J5SW5kZXgpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZS5wdXNoQmFzZUlkcyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90c0RpZmZQcm94eSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90c0RpZmZQcm94eS5wcm90b3R5cGUuY2FsY3VsYXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZlByb3h5LnByb3RvdHlwZS5w
dXNoQmFzZUlkcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90c0RpZmZQcm94
eS5wcm90b3R5cGUucHVzaEJhc2VTZWxmU2l6ZXMpOgorCiAyMDExLTA0LTE0ICBSZW5hdGEgSG9k
b3ZhbiAgPHJlbmlAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFpp
bW1lcm1hbm4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanMKaW5kZXggNDdlMzZiOS4uZTcw
NmUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRh
aWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcwpAQCAtMTk0LDcgKzE5NCw3IEBA
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5wcm90b3R5cGUgPSB7
CiAKICAgICBnZXQgX2NvdW50UGVyY2VudCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
Y291bnQgLyB0aGlzLnRyZWUuc25hcHNob3Qubm9kZUNvdW50ICogMTAwLjA7CisgICAgICAgIHJl
dHVybiB0aGlzLl9jb3VudCAvIHRoaXMuZGF0YUdyaWQuc25hcHNob3Qubm9kZUNvdW50ICogMTAw
LjA7CiAgICAgfSwKIAogICAgIGdldCBkYXRhKCkKQEAgLTUxNCw1NSArNTE0LDQyIEBAIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RJdGVyYXRvcnNUdXBsZS5wcm90b3R5cGUgPSB7CiAKIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZSA9IGZ1bmN0aW9uKHRyZWUsIGNsYXNzTmFtZSwg
YmFzZUFnZ3JlZ2F0ZSwgYWdncmVnYXRlKQogewotICAgIGlmICghYmFzZUFnZ3JlZ2F0ZSkKLSAg
ICAgICAgYmFzZUFnZ3JlZ2F0ZSA9IHsgY291bnQ6IDAsIHNlbGY6IDAsIG1heFJldDogMCwgdHlw
ZTphZ2dyZWdhdGUudHlwZSwgbmFtZTphZ2dyZWdhdGUubmFtZSwgaWR4czogW10gfTsKLSAgICBp
ZiAoIWFnZ3JlZ2F0ZSkKLSAgICAgICAgYWdncmVnYXRlID0geyBjb3VudDogMCwgc2VsZjogMCwg
bWF4UmV0OiAwLCB0eXBlOmJhc2VBZ2dyZWdhdGUudHlwZSwgbmFtZTpiYXNlQWdncmVnYXRlLm5h
bWUsIGlkeHM6IFtdIH07CiAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLmNh
bGwodGhpcywgdHJlZSwgdHJ1ZSk7CiAgICAgdGhpcy5fbmFtZSA9IGNsYXNzTmFtZTsKLSAgICB0
aGlzLl9jYWxjdWxhdGVEaWZmKHRyZWUuYmFzZVNuYXBzaG90LCB0cmVlLnNuYXBzaG90LCBiYXNl
QWdncmVnYXRlLmlkeHMsIGFnZ3JlZ2F0ZS5pZHhzKTsKLSAgICB0aGlzLl9wcm92aWRlciA9IHRo
aXMuX2NyZWF0ZU5vZGVzUHJvdmlkZXIodHJlZS5iYXNlU25hcHNob3QsIHRyZWUuc25hcHNob3Qs
IGFnZ3JlZ2F0ZS50eXBlLCBjbGFzc05hbWUpOworICAgIHRoaXMuX2Jhc2VJbmRleGVzID0gYmFz
ZUFnZ3JlZ2F0ZSA/IGJhc2VBZ2dyZWdhdGUuaWR4cyA6IFtdOworICAgIHRoaXMuX2luZGV4ZXMg
PSBhZ2dyZWdhdGUgPyBhZ2dyZWdhdGUuaWR4cyA6IFtdOworICAgIHRoaXMuX3Byb3ZpZGVyID0g
dGhpcy5fY3JlYXRlTm9kZXNQcm92aWRlcih0cmVlLmJhc2VTbmFwc2hvdCwgdHJlZS5zbmFwc2hv
dCwgYWdncmVnYXRlID8gYWdncmVnYXRlLnR5cGUgOiBiYXNlQWdncmVnYXRlLnR5cGUsIGNsYXNz
TmFtZSk7CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5cGUg
PSB7Ci0gICAgX2NhbGN1bGF0ZURpZmY6IGZ1bmN0aW9uKGJhc2VTbmFwc2hvdCwgc25hcHNob3Qs
IGJhc2VJbmRleGVzLCBjdXJyZW50SW5kZXhlcykKLSAgICB7Ci0gICAgICAgIHZhciBpID0gMCwg
bCA9IGJhc2VJbmRleGVzLmxlbmd0aDsKLSAgICAgICAgdmFyIGogPSAwLCBtID0gY3VycmVudElu
ZGV4ZXMubGVuZ3RoOwotICAgICAgICB0aGlzLl9hZGRlZENvdW50ID0gMDsKLSAgICAgICAgdGhp
cy5fcmVtb3ZlZENvdW50ID0gMDsKLSAgICAgICAgdGhpcy5fYWRkZWRTaXplID0gMDsKLSAgICAg
ICAgdGhpcy5fcmVtb3ZlZFNpemUgPSAwOwotICAgICAgICB2YXIgbm9kZUEgPSBuZXcgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUoYmFzZVNuYXBzaG90Ll9zbmFwc2hvdCk7Ci0gICAgICAg
IHZhciBub2RlQiA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZShzbmFwc2hvdC5f
c25hcHNob3QpOwotICAgICAgICBub2RlQS5ub2RlSW5kZXggPSBiYXNlSW5kZXhlc1tpXTsKLSAg
ICAgICAgbm9kZUIubm9kZUluZGV4ID0gY3VycmVudEluZGV4ZXNbal07Ci0gICAgICAgIHdoaWxl
IChpIDwgbCAmJiBqIDwgbSkgewotICAgICAgICAgICAgaWYgKG5vZGVBLmlkIDwgbm9kZUIuaWQp
IHsKLSAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVkQ291bnQrKzsKLSAgICAgICAgICAgICAg
ICB0aGlzLl9yZW1vdmVkU2l6ZSArPSBub2RlQS5zZWxmU2l6ZTsKLSAgICAgICAgICAgICAgICBu
b2RlQS5ub2RlSW5kZXggPSBiYXNlSW5kZXhlc1srK2ldOwotICAgICAgICAgICAgfSBlbHNlIGlm
IChub2RlQS5pZCA+IG5vZGVCLmlkKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYWRkZWRDb3Vu
dCsrOwotICAgICAgICAgICAgICAgIHRoaXMuX2FkZGVkU2l6ZSArPSBub2RlQi5zZWxmU2l6ZTsK
LSAgICAgICAgICAgICAgICBub2RlQi5ub2RlSW5kZXggPSBjdXJyZW50SW5kZXhlc1srK2pdOyAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbm9k
ZUEubm9kZUluZGV4ID0gYmFzZUluZGV4ZXNbKytpXTsKLSAgICAgICAgICAgICAgICBub2RlQi5u
b2RlSW5kZXggPSBjdXJyZW50SW5kZXhlc1srK2pdOyAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIH0KKyAgICBjYWxjdWxhdGVEaWZmOiBmdW5jdGlvbihkYXRhR3JpZCwgY2FsbGJhY2spCisg
ICAgeworICAgICAgICB2YXIgZGlmZiA9IGRhdGFHcmlkLnNuYXBzaG90LmNyZWF0ZURpZmYodGhp
cy5fbmFtZSk7CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBkaWZmQ2FsY3VsYXRlZChkaWZm
UmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9kaWZmID0gZGlmZlJlc3VsdDsK
KyAgICAgICAgICAgIHRoaXMuX2Jhc2VJbmRleGVzID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMu
X2luZGV4ZXMgPSBudWxsOworICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fZGlmZi5hZGRlZFNp
emUgPT09IDAgJiYgdGhpcy5fZGlmZi5yZW1vdmVkU2l6ZSA9PT0gMCk7CisgICAgICAgIH0KKyAg
ICAgICAgZnVuY3Rpb24gYmFzZVNlbGZTaXplc1JlY2VpdmVkKGJhc2VTZWxmU2l6ZXMpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRpZmYucHVzaEJhc2VTZWxmU2l6ZXMoYmFzZVNlbGZTaXplcyk7
CisgICAgICAgICAgICBkaWZmLmNhbGN1bGF0ZShkaWZmQ2FsY3VsYXRlZC5iaW5kKHRoaXMpKTsK
ICAgICAgICAgfQotICAgICAgICB3aGlsZSAoaSA8IGwpIHsKLSAgICAgICAgICAgIHRoaXMuX3Jl
bW92ZWRDb3VudCsrOwotICAgICAgICAgICAgdGhpcy5fcmVtb3ZlZFNpemUgKz0gbm9kZUEuc2Vs
ZlNpemU7Ci0gICAgICAgICAgICBub2RlQS5ub2RlSW5kZXggPSBiYXNlSW5kZXhlc1srK2ldOwor
ICAgICAgICBmdW5jdGlvbiBiYXNlSWRzUmVjZWl2ZWQoYmFzZUlkcykKKyAgICAgICAgeworICAg
ICAgICAgICAgZGlmZi5wdXNoQmFzZUlkcyhkYXRhR3JpZC5iYXNlU25hcHNob3QudWlkLCBiYXNl
SWRzKTsKKyAgICAgICAgICAgIGRhdGFHcmlkLnNuYXBzaG90LnB1c2hCYXNlSWRzKGRhdGFHcmlk
LmJhc2VTbmFwc2hvdC51aWQsIHRoaXMuX25hbWUsIGJhc2VJZHMpOworICAgICAgICAgICAgZGF0
YUdyaWQuYmFzZVNuYXBzaG90Lm5vZGVGaWVsZFZhbHVlc0J5SW5kZXgoInNlbGZTaXplIiwgdGhp
cy5fYmFzZUluZGV4ZXMsIGJhc2VTZWxmU2l6ZXNSZWNlaXZlZC5iaW5kKHRoaXMpKTsKICAgICAg
ICAgfQotICAgICAgICB3aGlsZSAoaiA8IG0pIHsKLSAgICAgICAgICAgIHRoaXMuX2FkZGVkQ291
bnQrKzsKLSAgICAgICAgICAgIHRoaXMuX2FkZGVkU2l6ZSArPSBub2RlQi5zZWxmU2l6ZTsKLSAg
ICAgICAgICAgIG5vZGVCLm5vZGVJbmRleCA9IGN1cnJlbnRJbmRleGVzWysral07CisgICAgICAg
IGZ1bmN0aW9uIGlkc1JlY2VpdmVkKGlkcykKKyAgICAgICAgeworICAgICAgICAgICAgZGF0YUdy
aWQuYmFzZVNuYXBzaG90LnB1c2hCYXNlSWRzKGRhdGFHcmlkLnNuYXBzaG90LnVpZCwgdGhpcy5f
bmFtZSwgaWRzKTsKICAgICAgICAgfQotICAgICAgICB0aGlzLl9jb3VudERlbHRhID0gdGhpcy5f
YWRkZWRDb3VudCAtIHRoaXMuX3JlbW92ZWRDb3VudDsKLSAgICAgICAgdGhpcy5fc2l6ZURlbHRh
ID0gdGhpcy5fYWRkZWRTaXplIC0gdGhpcy5fcmVtb3ZlZFNpemU7CisgICAgICAgIGRhdGFHcmlk
LmJhc2VTbmFwc2hvdC5ub2RlRmllbGRWYWx1ZXNCeUluZGV4KCJpZCIsIHRoaXMuX2Jhc2VJbmRl
eGVzLCBiYXNlSWRzUmVjZWl2ZWQuYmluZCh0aGlzKSk7CisgICAgICAgIGRhdGFHcmlkLnNuYXBz
aG90Lm5vZGVGaWVsZFZhbHVlc0J5SW5kZXgoImlkIiwgdGhpcy5faW5kZXhlcywgaWRzUmVjZWl2
ZWQuYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIF9jcmVhdGVDaGlsZE5vZGU6IGZ1bmN0aW9u
KGl0ZW0sIHByb3ZpZGVyKQpAQCAtNTc1LDYgKzU2Miw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3REaWZmTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICBfY3JlYXRlTm9kZXNQcm92aWRlcjog
ZnVuY3Rpb24oYmFzZVNuYXBzaG90LCBzbmFwc2hvdCwgbm9kZVR5cGUsIG5vZGVDbGFzc05hbWUp
CiAgICAgeworICAgICAgICB2YXIgY2xhc3NOYW1lID0gdGhpcy5fbmFtZTsKICAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SXRlcmF0b3JzVHVwbGUoCiAgICAgICAg
ICAgICBjcmVhdGVQcm92aWRlcihzbmFwc2hvdCwgYmFzZVNuYXBzaG90KSwgY3JlYXRlUHJvdmlk
ZXIoYmFzZVNuYXBzaG90LCBzbmFwc2hvdCkpOwogCkBAIC01ODUsNyArNTczLDcgQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAobm9kZSkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUudHlw
ZSA9PT0gbm9kZVR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobm9kZUNsYXNzTmFt
ZSA9PT0gbnVsbCB8fCBub2RlLmNsYXNzTmFtZSA9PT0gbm9kZUNsYXNzTmFtZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAmJiAhdGhpcy5zbmFwc2hvdEhhc05vZGVXaXRoSWQob3RoZXJTbmFw
c2hvdElkLCBub2RlLmlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhdGhpcy5iYXNl
U25hcHNob3RIYXNOb2RlKG90aGVyU25hcHNob3RJZCwgY2xhc3NOYW1lLCBub2RlLmlkKTsKICAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHByb3ZpZGVyLnNuYXBzaG90ID0gc25hcHNo
b3Q7CiAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXI7CkBAIC02NTAsMTkgKzYzOCwxNiBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBlID0gewogICAgIHsKICAg
ICAgICAgdmFyIGRhdGEgPSB7b2JqZWN0OiB0aGlzLl9uYW1lfTsKIAotICAgICAgICBkYXRhWyJh
ZGRlZENvdW50Il0gPSB0aGlzLl9hZGRlZENvdW50OwotICAgICAgICBkYXRhWyJyZW1vdmVkQ291
bnQiXSA9IHRoaXMuX3JlbW92ZWRDb3VudDsKLSAgICAgICAgZGF0YVsiY291bnREZWx0YSJdID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyVkIiwgdGhpcy5fc2lnbkZvckRlbHRhKHRoaXMuX2Nv
dW50RGVsdGEpLCBNYXRoLmFicyh0aGlzLl9jb3VudERlbHRhKSk7Ci0gICAgICAgIGRhdGFbImFk
ZGVkU2l6ZSJdID0gTnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy5fYWRkZWRTaXplKTsKLSAgICAg
ICAgZGF0YVsicmVtb3ZlZFNpemUiXSA9IE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuX3JlbW92
ZWRTaXplKTsKLSAgICAgICAgZGF0YVsic2l6ZURlbHRhIl0gPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIiVzJXMiLCB0aGlzLl9zaWduRm9yRGVsdGEodGhpcy5fc2l6ZURlbHRhKSwgTnVtYmVyLmJ5
dGVzVG9TdHJpbmcoTWF0aC5hYnModGhpcy5fc2l6ZURlbHRhKSkpOworICAgICAgICBkYXRhWyJh
ZGRlZENvdW50Il0gPSB0aGlzLl9kaWZmLmFkZGVkQ291bnQ7CisgICAgICAgIGRhdGFbInJlbW92
ZWRDb3VudCJdID0gdGhpcy5fZGlmZi5yZW1vdmVkQ291bnQ7CisgICAgICAgIHZhciBjb3VudERl
bHRhID0gdGhpcy5fZGlmZi5jb3VudERlbHRhOworICAgICAgICBkYXRhWyJjb3VudERlbHRhIl0g
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVzJWQiLCB0aGlzLl9zaWduRm9yRGVsdGEoY291bnRE
ZWx0YSksIE1hdGguYWJzKGNvdW50RGVsdGEpKTsKKyAgICAgICAgZGF0YVsiYWRkZWRTaXplIl0g
PSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLl9kaWZmLmFkZGVkU2l6ZSk7CisgICAgICAgIGRh
dGFbInJlbW92ZWRTaXplIl0gPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLl9kaWZmLnJlbW92
ZWRTaXplKTsKKyAgICAgICAgdmFyIHNpemVEZWx0YSA9IHRoaXMuX2RpZmYuc2l6ZURlbHRhOwor
ICAgICAgICBkYXRhWyJzaXplRGVsdGEiXSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMlcyIs
IHRoaXMuX3NpZ25Gb3JEZWx0YShzaXplRGVsdGEpLCBOdW1iZXIuYnl0ZXNUb1N0cmluZyhNYXRo
LmFicyhzaXplRGVsdGEpKSk7CiAKICAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgfSwKLQotICAg
IGdldCB6ZXJvRGlmZigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fYWRkZWRDb3VudCA9
PT0gMCAmJiB0aGlzLl9yZW1vdmVkQ291bnQgPT09IDA7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmll
dy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hv
dFZpZXcuanMKaW5kZXggZmE2MTg5ZC4uMWU0NmI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCkBA
IC0xOTgsMjggKzE5OCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIGlm
ICh0aGlzLmJhc2VTbmFwc2hvdCA9PT0gdGhpcy5zbmFwc2hvdCkKICAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBmdW5jdGlvbiBiYXNlU25hcHNob3ROb2RlSWRzUmVjZWl2ZWQobm9kZUlk
cykKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5zbmFwc2hvdC5wdXNoU25hcHNob3ROb2Rl
SWRzKHRoaXMuYmFzZVNuYXBzaG90LnVpZCwgbm9kZUlkcyk7Ci0gICAgICAgICAgICB0aGlzLnBv
cHVsYXRlQ2hpbGRyZW4oKTsKLSAgICAgICAgfQotICAgICAgICBmdW5jdGlvbiBwdXNoQmFzZVNu
YXBzaG90Tm9kZUlkcygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5zbmFwc2hv
dC5oYXNTbmFwc2hvdE5vZGVJZHModGhpcy5iYXNlU25hcHNob3QudWlkKSkKLSAgICAgICAgICAg
ICAgICB0aGlzLmJhc2VTbmFwc2hvdC5ub2RlSWRzKGJhc2VTbmFwc2hvdE5vZGVJZHNSZWNlaXZl
ZC5iaW5kKHRoaXMpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLnBv
cHVsYXRlQ2hpbGRyZW4oKTsgICAgICAgIAotICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uIHNu
YXBzaG90Tm9kZUlkc1JlY2VpdmVkKG5vZGVJZHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRo
aXMuYmFzZVNuYXBzaG90LnB1c2hTbmFwc2hvdE5vZGVJZHModGhpcy5zbmFwc2hvdC51aWQsIG5v
ZGVJZHMpOwotICAgICAgICAgICAgcHVzaEJhc2VTbmFwc2hvdE5vZGVJZHMuY2FsbCh0aGlzKTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoIXRoaXMuYmFzZVNuYXBzaG90Lmhhc1NuYXBzaG90Tm9k
ZUlkcyh0aGlzLnNuYXBzaG90LnVpZCkpCi0gICAgICAgICAgICB0aGlzLnNuYXBzaG90Lm5vZGVJ
ZHMoc25hcHNob3ROb2RlSWRzUmVjZWl2ZWQuYmluZCh0aGlzKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHB1c2hCYXNlU25hcHNob3ROb2RlSWRzLmNhbGwodGhpcyk7CisgICAgICAgIHRo
aXMucG9wdWxhdGVDaGlsZHJlbigpOyAgICAgICAgCiAgICAgfSwKIAogICAgIHBvcHVsYXRlQ2hp
bGRyZW46IGZ1bmN0aW9uKCkKQEAgLTIyOCwxOSArMjA3LDI2IEBAIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB7CiAgICAgICAgICAg
ICBmdW5jdGlvbiBhZ2dyZWdhdGVzUmVjZWl2ZWQoY2xhc3NlcykKICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB2YXIgbm9kZUNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICBmdW5jdGlv
biBhZGROb2RlSWZOb25aZXJvRGlmZihub2RlLCB6ZXJvRGlmZikKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIGlmICghemVyb0RpZmYpCisgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLmFwcGVuZENoaWxkKG5vZGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIS0t
bm9kZUNvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0aW5nQ2hhbmdlZCgp
OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmb3IgKHZhciBjbHNzIGluIGJh
c2VDbGFzc2VzKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3REaWZmTm9kZSh0aGlzLCBjbHNzLCBiYXNlQ2xhc3Nlc1tjbHNzXSwg
Y2xhc3Nlc1tjbHNzXSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS56ZXJvRGlmZikK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgICAg
ICAgICAgICAgICAgICsrbm9kZUNvdW50OworICAgICAgICAgICAgICAgICAgICBub2RlLmNhbGN1
bGF0ZURpZmYodGhpcywgYWRkTm9kZUlmTm9uWmVyb0RpZmYuYmluZCh0aGlzLCBub2RlKSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGZvciAoY2xzcyBpbiBjbGFzc2VzKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghKGNsc3MgaW4gYmFzZUNsYXNzZXMpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90RGlmZk5vZGUodGhpcywgY2xzcywgbnVsbCwgY2xhc3Nlc1tjbHNzXSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIW5vZGUuemVyb0RpZmYpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5hcHBlbmRDaGlsZChub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsr
bm9kZUNvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5jYWxjdWxhdGVEaWZmKHRo
aXMsIGFkZE5vZGVJZk5vblplcm9EaWZmLmJpbmQodGhpcywgbm9kZSkpOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRoaXMuc29ydGlu
Z0NoYW5nZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMuc25hcHNob3QuYWdn
cmVnYXRlcyh0cnVlLCBhZ2dyZWdhdGVzUmVjZWl2ZWQuYmluZCh0aGlzKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBz
aG90LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3Qu
anMKaW5kZXggMmIxYWZlZS4uNzgxYTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKQEAgLTQ4Miw3ICs0ODIsNyBAQCBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZUl0ZXJhdG9yLnByb3RvdHlwZSA9IHsKIAogV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdCA9IGZ1bmN0aW9uKHByb2ZpbGUpCiB7Ci0gICAgdGhpcy51aWQg
PSBwcm9maWxlLnVpZDsKKyAgICB0aGlzLnVpZCA9IHByb2ZpbGUuc25hcHNob3QudWlkOwogICAg
IHRoaXMuX25vZGVzID0gcHJvZmlsZS5ub2RlczsKICAgICB0aGlzLl9zdHJpbmdzID0gcHJvZmls
ZS5zdHJpbmdzOwogCkBAIC01MzQsNiArNTM0LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fYWdncmVnYXRlczsKICAg
ICAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXNXaXRoSW5kZXhlcyA9IGZhbHNlOwogICAgICAgICB9
CisgICAgICAgIGRlbGV0ZSB0aGlzLl9iYXNlTm9kZUlkczsKICAgICB9LAogCiAgICAgZ2V0IF9h
bGxOb2RlcygpCkBAIC01NTIsNiArNTUzLDE3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fbm9kZUNvdW50OwogICAgIH0sCiAK
KyAgICBub2RlRmllbGRWYWx1ZXNCeUluZGV4OiBmdW5jdGlvbihmaWVsZE5hbWUsIGluZGV4ZXMp
CisgICAgeworICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Tm9kZSh0aGlzKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheShpbmRleGVzLmxlbmd0
aCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gaW5kZXhlcy5sZW5ndGg7IGkgPCBsOyAr
K2kpIHsKKyAgICAgICAgICAgIG5vZGUubm9kZUluZGV4ID0gaW5kZXhlc1tpXTsKKyAgICAgICAg
ICAgIHJlc3VsdFtpXSA9IG5vZGVbZmllbGROYW1lXTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0sCisKICAgICBnZXQgcm9vdE5vZGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlzLCB0aGlzLl9yb290
Tm9kZUluZGV4KTsKQEAgLTc1Niw2ICs3NjgsMjAgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUgPSB7CiAgICAgX251bWJlcnNDb21wYXJhdG9yOiBmdW5jdGlvbihhLCBiKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGEgPCBiID8gLTEgOiAoYSA+IGIgPyAxIDogMCk7CisgICAg
fSwKKworICAgIGJhc2VTbmFwc2hvdEhhc05vZGU6IGZ1bmN0aW9uKGJhc2VTbmFwc2hvdElkLCBj
bGFzc05hbWUsIG5vZGVJZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9iYXNlTm9kZUlk
c1tiYXNlU25hcHNob3RJZF1bY2xhc3NOYW1lXS5iaW5hcnlJbmRleE9mKG5vZGVJZCwgdGhpcy5f
bnVtYmVyc0NvbXBhcmF0b3IpICE9PSAtMTsKKyAgICB9LAorCisgICAgdXBkYXRlQmFzZU5vZGVJ
ZHM6IGZ1bmN0aW9uKGJhc2VTbmFwc2hvdElkLCBjbGFzc05hbWUsIG5vZGVJZHMpCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMuX2Jhc2VOb2RlSWRzKQorICAgICAgICAgICAgdGhpcy5fYmFzZU5v
ZGVJZHMgPSBbXTsKKyAgICAgICAgaWYgKCF0aGlzLl9iYXNlTm9kZUlkc1tiYXNlU25hcHNob3RJ
ZF0pCisgICAgICAgICAgICB0aGlzLl9iYXNlTm9kZUlkc1tiYXNlU25hcHNob3RJZF0gPSB7fTsK
KyAgICAgICAgdGhpcy5fYmFzZU5vZGVJZHNbYmFzZVNuYXBzaG90SWRdW2NsYXNzTmFtZV0gPSBu
b2RlSWRzOwogICAgIH0KIH07CiAKQEAgLTExMTksMyArMTE0NSw1OSBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90UGF0aEZpbmRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBzUGF0
aC5qb2luKCIiKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90c0RpZmYg
PSBmdW5jdGlvbihzbmFwc2hvdCwgY2xhc3NOYW1lKQoreworICAgIHRoaXMuX3NuYXBzaG90ID0g
c25hcHNob3Q7CisgICAgdGhpcy5fY2xhc3NOYW1lID0gY2xhc3NOYW1lOworfTsKKworV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZmLnByb3RvdHlwZSA9IHsKKyAgICBzZXQgYmFzZUlkcyhi
YXNlSWRzKQorICAgIHsKKyAgICAgICAgdGhpcy5fYmFzZUlkcyA9IGJhc2VJZHM7CisgICAgfSwK
KworICAgIHNldCBiYXNlU2VsZlNpemVzKGJhc2VTZWxmU2l6ZXMpCisgICAgeworICAgICAgICB0
aGlzLl9iYXNlU2VsZlNpemVzID0gYmFzZVNlbGZTaXplczsKKyAgICB9LAorCisgICAgY2FsY3Vs
YXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgaW5kZXhlcyA9IHRoaXMuX3NuYXBz
aG90LmFnZ3JlZ2F0ZXModHJ1ZSlbdGhpcy5fY2xhc3NOYW1lXS5pZHhzOworICAgICAgICB2YXIg
aSA9IDAsIGwgPSB0aGlzLl9iYXNlSWRzLmxlbmd0aDsKKyAgICAgICAgdmFyIGogPSAwLCBtID0g
aW5kZXhlcy5sZW5ndGg7CisgICAgICAgIHZhciBkaWZmID0geyBhZGRlZENvdW50OiAwLCByZW1v
dmVkQ291bnQ6IDAsIGFkZGVkU2l6ZTogMCwgcmVtb3ZlZFNpemU6IDAgfTsKKyAgICAgICAgICAg
CisgICAgICAgIHZhciBub2RlQiA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0
aGlzLl9zbmFwc2hvdCk7CisgICAgICAgIHdoaWxlIChpIDwgbCAmJiBqIDwgbSkgeworICAgICAg
ICAgICAgdmFyIG5vZGVBSWQgPSB0aGlzLl9iYXNlSWRzW2ldOworICAgICAgICAgICAgaWYgKG5v
ZGVBSWQgPCBub2RlQi5pZCkgeworICAgICAgICAgICAgICAgIGRpZmYucmVtb3ZlZENvdW50Kys7
CisgICAgICAgICAgICAgICAgZGlmZi5yZW1vdmVkU2l6ZSArPSB0aGlzLl9iYXNlU2VsZlNpemVz
W2ldOworICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZUFJ
ZCA+IG5vZGVCLmlkKSB7CisgICAgICAgICAgICAgICAgZGlmZi5hZGRlZENvdW50Kys7CisgICAg
ICAgICAgICAgICAgZGlmZi5hZGRlZFNpemUgKz0gbm9kZUIuc2VsZlNpemU7CisgICAgICAgICAg
ICAgICAgbm9kZUIubm9kZUluZGV4ID0gaW5kZXhlc1srK2pdOyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKytpOworICAgICAgICAgICAgICAg
IG5vZGVCLm5vZGVJbmRleCA9IGluZGV4ZXNbKytqXTsgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGkgPCBsKSB7CisgICAgICAgICAgICBk
aWZmLnJlbW92ZWRDb3VudCsrOworICAgICAgICAgICAgZGlmZi5yZW1vdmVkU2l6ZSArPSB0aGlz
Ll9iYXNlU2VsZlNpemVzW2ldOworICAgICAgICAgICAgKytpOworICAgICAgICB9CisgICAgICAg
IHdoaWxlIChqIDwgbSkgeworICAgICAgICAgICAgZGlmZi5hZGRlZENvdW50Kys7CisgICAgICAg
ICAgICBkaWZmLmFkZGVkU2l6ZSArPSBub2RlQi5zZWxmU2l6ZTsKKyAgICAgICAgICAgIG5vZGVC
Lm5vZGVJbmRleCA9IGluZGV4ZXNbKytqXTsKKyAgICAgICAgfQorICAgICAgICBkaWZmLmNvdW50
RGVsdGEgPSBkaWZmLmFkZGVkQ291bnQgLSBkaWZmLnJlbW92ZWRDb3VudDsKKyAgICAgICAgZGlm
Zi5zaXplRGVsdGEgPSBkaWZmLmFkZGVkU2l6ZSAtIGRpZmYucmVtb3ZlZFNpemU7CisgICAgICAg
IHJldHVybiBkaWZmOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcwppbmRleCAxOWE2MWQ0Li5iYjBh
N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBT
bmFwc2hvdFByb3h5LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SGVhcFNuYXBzaG90UHJveHkuanMKQEAgLTMxLDcgKzMxLDYgQEAKIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RQcm94eSA9IGZ1bmN0aW9uKCkKIHsgICAKICAgICB0aGlzLl9zbmFwc2hvdCA9IG51
bGw7Ci0gICAgdGhpcy5fbm9kZUlkcyA9IFtdOwogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90UHJveHkucHJvdG90eXBlID0gewpAQCAtNjMsMTIgKzYyLDE3IEBAIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB7aWQ6IG5vZGUu
aWQsIG5hbWU6IG5vZGUubmFtZSwgbm9kZUluZGV4OiBub2RlLm5vZGVJbmRleCwgcmV0YWluZWRT
aXplOiBub2RlLnJldGFpbmVkU2l6ZSwgc2VsZlNpemU6IG5vZGUuc2VsZlNpemUsIHR5cGU6IG5v
ZGUudHlwZX07CiAgICAgfSwKIAorICAgIGNyZWF0ZURpZmY6IGZ1bmN0aW9uKGNsYXNzTmFtZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdHNEaWZm
UHJveHkobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZih0aGlzLl9zbmFwc2hvdCwg
Y2xhc3NOYW1lKSk7CisgICAgfSwKKwogICAgIGNyZWF0ZUVkZ2VzUHJvdmlkZXI6IGZ1bmN0aW9u
KG5vZGVJbmRleCwgZmlsdGVyKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gY3JlYXRlUHJvdmlk
ZXIoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZmlsdGVyKQotICAgICAgICAgICAgICAg
IGZpbHRlciA9IGZpbHRlci5iaW5kKHRoaXMpOworICAgICAgICAgICAgICAgIGZpbHRlciA9IGZp
bHRlci5iaW5kKHRoaXMuX3NuYXBzaG90KTsKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzUHJvdmlkZXIodGhpcy5fc25hcHNob3QsIG5vZGVJbmRl
eCwgZmlsdGVyKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RQcm92aWRlclByb3h5KGNyZWF0ZVByb3ZpZGVyLmJpbmQodGhpcyksIHRoaXMu
X2V4dHJhY3RFZGdlRGF0YS5iaW5kKHRoaXMpKTsKQEAgLTc5LDcgKzgzLDcgQEAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVuY3Rpb24gY3Jl
YXRlUHJvdmlkZXIoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZmlsdGVyKQotICAgICAg
ICAgICAgICAgIGZpbHRlciA9IGZpbHRlci5iaW5kKHRoaXMpOworICAgICAgICAgICAgICAgIGZp
bHRlciA9IGZpbHRlci5iaW5kKHRoaXMuX3NuYXBzaG90KTsKICAgICAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIodGhpcy5fc25hcHNob3Qs
IGZpbHRlcik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90UHJvdmlkZXJQcm94eShjcmVhdGVQcm92aWRlci5iaW5kKHRoaXMpLCB0aGlzLl9l
eHRyYWN0Tm9kZURhdGEuYmluZCh0aGlzKSk7CkBAIC05MywxMiArOTcsNiBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlID0gewogICAgIGRpc3Bvc2U6IGZ1bmN0aW9u
KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3NuYXBzaG90LmRpc3Bvc2UoKTsKLSAgICAgICAgZGVs
ZXRlIHRoaXMuX25vZGVJZHM7Ci0gICAgfSwKLQotICAgIGhhc1NuYXBzaG90Tm9kZUlkczogZnVu
Y3Rpb24oc25hcHNob3RJZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzbmFwc2hvdElkIGluIHRo
aXMuX25vZGVJZHM7CiAgICAgfSwKIAogICAgIGZpbmlzaExvYWRpbmc6IGZ1bmN0aW9uKGNhbGxi
YWNrKQpAQCAtMTMzLDYgKzEzMSwxNSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHku
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fbm9kZUNvdW50OwogICAgIH0sCiAK
KyAgICBub2RlRmllbGRWYWx1ZXNCeUluZGV4OiBmdW5jdGlvbihmaWVsZE5hbWUsIGluZGV4ZXMs
IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gcmV0dXJuUmVzdWx0KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fc25hcHNob3Qubm9kZUZpZWxkVmFsdWVz
QnlJbmRleChmaWVsZE5hbWUsIGluZGV4ZXMpKTsKKyAgICAgICAgfQorICAgICAgICBzZXRUaW1l
b3V0KHJldHVyblJlc3VsdC5iaW5kKHRoaXMpLCAwKTsKKyAgICB9LAorCiAgICAgbm9kZUlkczog
ZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9pbnZva2VHZXR0ZXIoIm5v
ZGVJZHMiLCBjYWxsYmFjayk7CkBAIC0xNDUsOSArMTUyLDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFByb3h5LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fanNvbiArPSBjaHVuazsK
ICAgICB9LAogCi0gICAgcHVzaFNuYXBzaG90Tm9kZUlkczogZnVuY3Rpb24oc25hcHNob3RJZCwg
bm9kZUlkcykKKyAgICBwdXNoQmFzZUlkczogZnVuY3Rpb24oc25hcHNob3RJZCwgY2xhc3NOYW1l
LCBub2RlSWRzKQogICAgIHsKLSAgICAgICAgdGhpcy5fbm9kZUlkc1tzbmFwc2hvdElkXSA9IG5v
ZGVJZHM7CisgICAgICAgIHRoaXMuX3NuYXBzaG90LnVwZGF0ZUJhc2VOb2RlSWRzKHNuYXBzaG90
SWQsIGNsYXNzTmFtZSwgbm9kZUlkcyk7CiAgICAgfSwKIAogICAgIGdldCByb290Tm9kZUluZGV4
KCkKQEAgLTE1NSwxNSArMTYyLDYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3ROb2RlSW5kZXg7CiAgICAgfSwK
IAotICAgIHNuYXBzaG90SGFzTm9kZVdpdGhJZDogZnVuY3Rpb24oc25hcHNob3RJZCwgbm9kZUlk
KQotICAgIHsKLSAgICAgICAgdmFyIG5vZGVJZHMgPSB0aGlzLl9ub2RlSWRzW3NuYXBzaG90SWRd
OwotICAgICAgICBpZiAobm9kZUlkcykKLSAgICAgICAgICAgIHJldHVybiBub2RlSWRzLmJpbmFy
eUluZGV4T2Yobm9kZUlkLCB0aGlzLl9zbmFwc2hvdC5fbnVtYmVyc0NvbXBhcmF0b3IpID49IDA7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCiAgICAg
c3RhcnRMb2FkaW5nOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9zbmFwc2hvdCkgewpAQCAtMjYxLDMgKzI1OSwyOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90UGF0aEZpbmRlclByb3h5LnByb3RvdHlwZSA9IHsKICAgICAgICAgc2V0VGltZW91dChhc3lu
Y0ludm9rZS5iaW5kKHRoaXMpLCAwKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90c0RpZmZQcm94eSA9IGZ1bmN0aW9uKGRpZmYpCit7CisgICAgdGhpcy5fZGlmZiA9IGRp
ZmY7Cit9CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RzRGlmZlByb3h5LnByb3RvdHlwZSA9
IHsKKyAgICBjYWxjdWxhdGU6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVu
Y3Rpb24gcmV0dXJuUmVzdWx0KCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FsbGJhY2sodGhp
cy5fZGlmZi5jYWxjdWxhdGUoKSk7CisgICAgICAgIH0KKyAgICAgICAgc2V0VGltZW91dChyZXR1
cm5SZXN1bHQuYmluZCh0aGlzKSwgMCk7CisgICAgfSwKKworICAgIHB1c2hCYXNlSWRzOiBmdW5j
dGlvbihiYXNlU25hcHNob3RJZCwgYmFzZUlkcykKKyAgICB7CisgICAgICAgIHRoaXMuX2RpZmYu
YmFzZUlkcyA9IGJhc2VJZHM7CisgICAgfSwKKworICAgIHB1c2hCYXNlU2VsZlNpemVzOiBmdW5j
dGlvbihiYXNlU2VsZlNpemVzKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGlmZi5iYXNlU2VsZlNp
emVzID0gYmFzZVNlbGZTaXplczsKKyAgICB9Cit9Owo=
</data>
<flag name="review"
          id="82265"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="82266"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
      

    </bug>

</bugzilla>