<?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>57227</bug_id>
          
          <creation_ts>2011-03-28 06:09:07 -0700</creation_ts>
          <short_desc>Web Inspector: [Chromium] Refactor HeapSnapshot-related code to make sure we don&apos;t return big amounts of data to forms</short_desc>
          <delta_ts>2011-03-29 04:45:16 -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>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>374447</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-03-28 06:09:07 -0700</bug_when>
    <thetext>This starts a sequence of changes to offload heap snapshots processing into workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374449</commentid>
    <comment_count>1</comment_count>
      <attachid>87133</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-03-28 06:10:58 -0700</bug_when>
    <thetext>Created attachment 87133
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374450</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-28 06:12:59 -0700</bug_when>
    <thetext>Attachment 87133 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/insp...&quot; exit_code: 1

LayoutTests/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374452</commentid>
    <comment_count>3</comment_count>
      <attachid>87134</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-03-28 06:15:48 -0700</bug_when>
    <thetext>Created attachment 87134
fill in ChangeLog for LayoutTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375191</commentid>
    <comment_count>4</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-03-29 04:45:16 -0700</bug_when>
    <thetext>Manually committed http://trac.webkit.org/changeset/82230


2011-03-29  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Refactor HeapSnapshot-related code to
        make sure we don&apos;t return big amounts of data to forms.
        https://bugs.webkit.org/show_bug.cgi?id=57227

        * inspector/front-end/DetailedHeapshotGridNodes.js:
        (WebInspector.HeapSnapshotGridNode.prototype.populateChildren):
        (WebInspector.HeapSnapshotGenericObjectNode.prototype.get _countPercent):
        (WebInspector.HeapSnapshotObjectNode):
        (WebInspector.HeapSnapshotObjectNode.prototype._createProvider):
        (WebInspector.HeapSnapshotInstanceNode):
        (WebInspector.HeapSnapshotInstanceNode.prototype._createProvider):
        (WebInspector.HeapSnapshotConstructorNode.prototype._createNodesProvider):
        (WebInspector.HeapSnapshotConstructorNode.prototype.get _countPercent):
        (WebInspector.HeapSnapshotDiffNode.prototype._createNodesProvider.createProvider):
        (WebInspector.HeapSnapshotDiffNode.prototype._createNodesProvider):
        (WebInspector.HeapSnapshotDominatorObjectNode.prototype._createProvider):
        * inspector/front-end/DetailedHeapshotView.js:
        (WebInspector.HeapSnapshotContainmentDataGrid.prototype.setDataSource):
        (WebInspector.HeapSnapshotDominatorsDataGrid.prototype.setDataSource):
        * inspector/front-end/HeapSnapshot.js:
        (WebInspector.HeapSnapshotNode.prototype.get dominatorIndex):
        (WebInspector.HeapSnapshotNode.prototype.get retainers):
        (WebInspector.HeapSnapshot):
        (WebInspector.HeapSnapshot.prototype.get _allNodes):
        (WebInspector.HeapSnapshot.prototype.get nodeCount):
        (WebInspector.HeapSnapshot.prototype.get rootNodeIndex):
        (WebInspector.HeapSnapshot.prototype.hasId):
        (WebInspector.HeapSnapshot.prototype.get nodeIds):
        (WebInspector.HeapSnapshot.prototype._retainersForNode):
        (WebInspector.HeapSnapshot.prototype._buildRetainers):
        (WebInspector.HeapSnapshot.prototype._buildAggregates):
        (WebInspector.HeapSnapshot.prototype._buildAggregatesIndexes):
        (WebInspector.HeapSnapshot.prototype._buildIdsList):
        (WebInspector.HeapSnapshot.prototype._buildNodeIndex):
        (WebInspector.HeapSnapshotFilteredOrderedIterator):
        (WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.next):
        (WebInspector.HeapSnapshotEdgesProvider):
        (WebInspector.HeapSnapshotNodesProvider):

2011-03-29  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Refactor HeapSnapshot-related code to
        make sure we don&apos;t return big amounts of data to forms.
        https://bugs.webkit.org/show_bug.cgi?id=57227

        * inspector/profiler/heap-snapshot.html:</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87133</attachid>
            <date>2011-03-28 06:10:58 -0700</date>
            <delta_ts>2011-03-28 06:15:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch-57227</filename>
            <type>text/plain</type>
            <size>22211</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZjQ5ZDQ0Li4xZDNlNTlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEgQEAKKzIwMTEtMDMt
MjggIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3Jp
cHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVy
L2hlYXAtc25hcHNob3QuaHRtbDoKKwogMjAxMS0wMy0yNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxk
bWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0
bWwKaW5kZXggOWI1OTYzNy4uMWMwNGY2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sCkBAIC05MCw3ICs5MCw3IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3RTaW1wbGVUZXN0KG5leHQpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90KEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDYsIHNuYXBzaG90Lm5vZGVzQ291bnQs
ICJub2RlcyBjb3VudCIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
Niwgc25hcHNob3Qubm9kZUNvdW50LCAibm9kZSBjb3VudCIpOwogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHMoMjAsIHNuYXBzaG90LnRvdGFsU2l6ZSwgInRvdGFsIHNpemUi
KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSwKQEAgLTExNiw3ICsxMTYsNyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAiQyI6IFsiQSIsICJCIl0sCiAgICAgICAg
ICAgICAgICAgIkQiOiBbIkIiXSwKICAgICAgICAgICAgICAgICAiRSI6IFsiQyJdfTsKLSAgICAg
ICAgICAgIGZvciAodmFyIG5vZGVzID0gc25hcHNob3QuYWxsTm9kZXM7IG5vZGVzLmhhc05leHQo
KTsgbm9kZXMubmV4dCgpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBub2RlcyA9IHNuYXBzaG90
Ll9hbGxOb2Rlczsgbm9kZXMuaGFzTmV4dCgpOyBub2Rlcy5uZXh0KCkpIHsKICAgICAgICAgICAg
ICAgICB2YXIgbmFtZXMgPSBbXTsKICAgICAgICAgICAgICAgICBmb3IgKHZhciByZXRhaW5lcnMg
PSBub2Rlcy5pdGVtLnJldGFpbmVyczsgcmV0YWluZXJzLmhhc05leHQoKTsgcmV0YWluZXJzLm5l
eHQoKSkKICAgICAgICAgICAgICAgICAgICAgbmFtZXMucHVzaChyZXRhaW5lcnMuaXRlbS5ub2Rl
Lm5hbWUpOwpAQCAtMTY4LDcgKzE2OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAg
ICAgIHJldHVybiBub2RlLnR5cGUgPT09ICJvYmplY3QiICYmIG5vZGUubmFtZSAhPT0gIkIiICYm
IG5vZGUubmFtZSAhPT0gIkQiOwogICAgICAgICAgICAgfQogICAgICAgICAgCi0gICAgICAgICAg
ICB2YXIgcHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlk
ZXIoc25hcHNob3QsIHNuYXBzaG90LmFsbE5vZGVzLCBub2RlRmlsdGVyKTsKKyAgICAgICAgICAg
IHZhciBwcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRl
cihzbmFwc2hvdCwgbm9kZUZpbHRlcik7CiAgICAgICAgICAgICAvLyBTb3J0IGJ5IG5hbWVzIGlu
IHJldmVyc2Ugb3JkZXIuCiAgICAgICAgICAgICBwcm92aWRlci5zb3J0KFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUuY3JlYXRlQ29tcGFy
YXRvcihbIm5hbWUiLCBmYWxzZSwgImlkIiwgZmFsc2VdKSk7CiAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydEVxdWFscygzLCBwcm92aWRlci5sZW5ndGgsICJub2RlcyBwcm92aWRlciBs
ZW5ndGgiKTsKQEAgLTE4OCw3ICsxODgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZWRnZS5uYW1lID09PSAiYiI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAK
LSAgICAgICAgICAgIHZhciBwcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
RWRnZXNQcm92aWRlcihzbmFwc2hvdCwgc25hcHNob3Qucm9vdE5vZGUucmF3RWRnZXMsIGVkZ2VG
aWx0ZXIpOworICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RFZGdlc1Byb3ZpZGVyKHNuYXBzaG90LCBzbmFwc2hvdC5yb290Tm9kZUluZGV4LCBl
ZGdlRmlsdGVyKTsKICAgICAgICAgICAgIHByb3ZpZGVyLnNvcnQoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZS5jcmVhdGVDb21wYXJhdG9y
KFsiIWVkZ2VOYW1lIiwgZmFsc2UsICJpZCIsIGZhbHNlXSkpOwogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHMoMSwgcHJvdmlkZXIubGVuZ3RoLCAiZWRnZXMgcHJvdmlkZXIg
bGVuZ3RoIik7CiAgICAgICAgICAgICB2YXIgbmFtZXMgPSBbXTsKQEAgLTIwOSw3ICsyMDksNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICA1MDogWyJBQDJbMV0uYmQiLCAiQkAz
LmJkIl0sCiAgICAgICAgICAgICAgICAgNTc6IFsiQUAyLmFjLmNlIiwgIkFAMlsxXS5iYy5jZSIs
ICJCQDMuYmMuY2UiXQogICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGZvciAodmFyIG5vZGVz
ID0gc25hcHNob3QuYWxsTm9kZXM7IG5vZGVzLmhhc05leHQoKTsgbm9kZXMubmV4dCgpKSB7Cisg
ICAgICAgICAgICBmb3IgKHZhciBub2RlcyA9IHNuYXBzaG90Ll9hbGxOb2Rlczsgbm9kZXMuaGFz
TmV4dCgpOyBub2Rlcy5uZXh0KCkpIHsKICAgICAgICAgICAgICAgICB2YXIgcGF0aEZpbmRlciA9
IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0aEZpbmRlcihzbmFwc2hvdCwgbm9kZXMu
aW5kZXgpOwogICAgICAgICAgICAgICAgIHZhciBwYXRocyA9IFtdOwogICAgICAgICAgICAgICAg
IHZhciBwYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU0ZjkyMjguLmY4NGIyNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0NiBAQAorMjAxMS0wMy0yOCAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFtDaHJvbWl1bV0gUmVmYWN0b3IgSGVhcFNuYXBzaG90LXJlbGF0
ZWQgY29kZSB0bworICAgICAgICBtYWtlIHN1cmUgd2UgZG9uJ3QgcmV0dXJuIGJpZyBhbW91bnRz
IG9mIGRhdGEgdG8gZm9ybXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NzIyNworCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxl
ZEhlYXBzaG90R3JpZE5vZGVzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dEdyaWROb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5wcm90b3R5cGUuZ2V0IF9jb3VudFBl
cmNlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUucHJvdG90eXBlLl9j
cmVhdGVQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFu
Y2VOb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJbnN0YW5jZU5vZGUu
cHJvdG90eXBlLl9jcmVhdGVQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Q29uc3RydWN0b3JOb2RlLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNQcm92aWRlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlLnByb3RvdHlw
ZS5nZXQgX2NvdW50UGVyY2VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
RGlmZk5vZGUucHJvdG90eXBlLl9jcmVhdGVOb2Rlc1Byb3ZpZGVyLmNyZWF0ZVByb3ZpZGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5cGUuX2Ny
ZWF0ZU5vZGVzUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERv
bWluYXRvck9iamVjdE5vZGUucHJvdG90eXBlLl9jcmVhdGVQcm92aWRlcik6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFHcmlkLnByb3RvdHlwZS5zZXRE
YXRhU291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3Jz
RGF0YUdyaWQucHJvdG90eXBlLnNldERhdGFTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvSGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdE5vZGUucHJvdG90eXBlLmdldCBkb21pbmF0b3JJbmRleCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUuZ2V0IHJldGFpbmVycyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3QucHJvdG90eXBlLmdldCBfYWxsTm9kZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuZ2V0IG5vZGVDb3VudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5nZXQgcm9vdE5vZGVJbmRleCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5oYXNJZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5nZXQgbm9kZUlkcyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fcmV0YWluZXJzRm9yTm9kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGRSZXRh
aW5lcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2J1
aWxkQWdncmVnYXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZS5fYnVpbGRBZ2dyZWdhdGVzSW5kZXhlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGRJZHNMaXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9idWlsZE5vZGVJbmRleCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlw
ZS5uZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc1Byb3ZpZGVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyKToKKwog
MjAxMS0wMy0yNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5v
ZGVzLmpzCmluZGV4IGFjZjMyODAuLjRhYTMyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlkTm9k
ZXMuanMKQEAgLTYxLDggKzYxLDggQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2Rl
LnByb3RvdHlwZSA9IHsKICAgICBwb3B1bGF0ZUNoaWxkcmVuOiBmdW5jdGlvbihwcm92aWRlciwg
aG93TWFueSwgYXRJbmRleCkKICAgICB7CiAgICAgICAgIGlmICghaG93TWFueSAmJiBwcm92aWRl
cikgewotICAgICAgICAgICAgaG93TWFueSA9IHByb3ZpZGVyLmluc3RhbmNlc0NvdW50OwotICAg
ICAgICAgICAgcHJvdmlkZXIucmVzZXRJbnN0YW5jZXNDb3VudCgpOworICAgICAgICAgICAgaG93
TWFueSA9IHByb3ZpZGVyLmluc3RhbmNlQ291bnQ7CisgICAgICAgICAgICBwcm92aWRlci5pbnN0
YW5jZUNvdW50ID0gMDsKICAgICAgICAgfQogICAgICAgICBwcm92aWRlciA9IHByb3ZpZGVyIHx8
IHRoaXMuX3Byb3ZpZGVyOwogICAgICAgICBob3dNYW55ID0gaG93TWFueSB8fCB0aGlzLl9kZWZh
dWx0UG9wdWxhdGVDb3VudDsKQEAgLTc1LDcgKzc1LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdEdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmb3IgKCA7IGhvd01hbnkgPiAwICYmIHByb3Zp
ZGVyLmhhc05leHQoKTsgcHJvdmlkZXIubmV4dCgpLCBwcm92aWRlci5pbmNJbnN0YW5jZXNDb3Vu
dCgpLCAtLWhvd01hbnkpIHsKKyAgICAgICAgZm9yICggOyBob3dNYW55ID4gMCAmJiBwcm92aWRl
ci5oYXNOZXh0KCk7IHByb3ZpZGVyLm5leHQoKSwgKytwcm92aWRlci5pbnN0YW5jZUNvdW50LCAt
LWhvd01hbnkpIHsKICAgICAgICAgICAgIHZhciBpdGVtID0gcHJvdmlkZXIuaXRlbTsKICAgICAg
ICAgICAgIGlmIChoYXZlU2F2ZWRDaGlsZHJlbikgewogICAgICAgICAgICAgICAgIHZhciBoYXNo
ID0gdGhpcy5fY2hpbGRIYXNoRm9yRW50aXR5KGl0ZW0pOwpAQCAtMTY4LDcgKzE2OCw3IEBAIFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5wcm90b3R5cGUgPSB7CiAK
ICAgICBnZXQgX2NvdW50UGVyY2VudCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY291
bnQgLyB0aGlzLnRyZWUuc25hcHNob3Qubm9kZXNDb3VudCAqIDEwMC4wOworICAgICAgICByZXR1
cm4gdGhpcy5fY291bnQgLyB0aGlzLnRyZWUuc25hcHNob3Qubm9kZUNvdW50ICogMTAwLjA7CiAg
ICAgfSwKIAogICAgIGdldCBkYXRhKCkKQEAgLTIzMSw5ICsyMzEsOCBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5vZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5IZQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZSA9IGZ1bmN0
aW9uKHRyZWUsIGVkZ2UpCiB7Ci0gICAgdmFyIG5vZGUgPSBlZGdlLm5vZGU7Ci0gICAgdmFyIHBy
b3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIodHJlZS5zbmFwc2hvdCwgbm9kZS5yYXdFZGdl
cyk7Ci0gICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLmNhbGwo
dGhpcywgdHJlZSwgbm9kZSwgIXByb3ZpZGVyLmlzRW1wdHksIDEwMCk7CisgICAgdmFyIHByb3Zp
ZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIodHJlZS5zbmFwc2hvdCwgZWRnZS5ub2RlSW5kZXgp
OworICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZS5jYWxsKHRo
aXMsIHRyZWUsIGVkZ2Uubm9kZSwgIXByb3ZpZGVyLmlzRW1wdHksIDEwMCk7CiAgICAgdGhpcy5f
cmVmZXJlbmNlTmFtZSA9IGVkZ2UubmFtZTsKICAgICB0aGlzLl9yZWZlcmVuY2VUeXBlID0gZWRn
ZS50eXBlOwogICAgIHRoaXMuX3Byb3ZpZGVyID0gcHJvdmlkZXI7CkBAIC0yNDUsMTIgKzI0NCwx
MiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUodGhp
cy5kYXRhR3JpZCwgcHJvdmlkZXIuaXRlbSk7CiAgICAgfSwKIAotICAgIF9jcmVhdGVQcm92aWRl
cjogZnVuY3Rpb24oc25hcHNob3QsIHJhd0VkZ2VzKQorICAgIF9jcmVhdGVQcm92aWRlcjogZnVu
Y3Rpb24oc25hcHNob3QsIG5vZGVJbmRleCkKICAgICB7CiAgICAgICAgIHZhciBzaG93SGlkZGVu
RGF0YSA9IFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuc2hvd0hp
ZGRlbkRhdGE7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVk
Z2VzUHJvdmlkZXIoCiAgICAgICAgICAgICBzbmFwc2hvdCwKLSAgICAgICAgICAgIHJhd0VkZ2Vz
LAorICAgICAgICAgICAgbm9kZUluZGV4LAogICAgICAgICAgICAgZnVuY3Rpb24oZWRnZSkgewog
ICAgICAgICAgICAgICAgIHJldHVybiAhZWRnZS5pc0ludmlzaWJsZQogICAgICAgICAgICAgICAg
ICAgICAmJiAoc2hvd0hpZGRlbkRhdGEgfHwgKCFlZGdlLmlzSGlkZGVuICYmICFlZGdlLm5vZGUu
aXNIaWRkZW4pKTsKQEAgLTMyMSw3ICszMjAsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
T2JqZWN0Tm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwcwog
CiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlID0gZnVuY3Rpb24odHJlZSwg
YmFzZVNuYXBzaG90LCBzbmFwc2hvdCwgbm9kZSkKIHsKLSAgICB2YXIgcHJvdmlkZXIgPSB0aGlz
Ll9jcmVhdGVQcm92aWRlcihiYXNlU25hcHNob3QgfHwgc25hcHNob3QsIG5vZGUucmF3RWRnZXMp
OyAgCisgICAgdmFyIHByb3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIoYmFzZVNuYXBzaG90
IHx8IHNuYXBzaG90LCBub2RlLm5vZGVJbmRleCk7ICAKICAgICBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90R2VuZXJpY09iamVjdE5vZGUuY2FsbCh0aGlzLCB0cmVlLCBub2RlLCAhcHJvdmlkZXIu
aXNFbXB0eSwgMTAwKTsKICAgICB0aGlzLl9pc0RlbGV0ZWROb2RlID0gISFiYXNlU25hcHNob3Q7
CiAgICAgdGhpcy5fcHJvdmlkZXIgPSBwcm92aWRlcjsgICAgCkBAIC0zMzMsMTIgKzMzMiwxMiBA
QCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZSh0aGlz
LmRhdGFHcmlkLCBwcm92aWRlci5pdGVtKTsKICAgICB9LAogCi0gICAgX2NyZWF0ZVByb3ZpZGVy
OiBmdW5jdGlvbihzbmFwc2hvdCwgcmF3RWRnZXMpCisgICAgX2NyZWF0ZVByb3ZpZGVyOiBmdW5j
dGlvbihzbmFwc2hvdCwgbm9kZUluZGV4KQogICAgIHsKICAgICAgICAgdmFyIHNob3dIaWRkZW5E
YXRhID0gV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5zaG93SGlk
ZGVuRGF0YTsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRn
ZXNQcm92aWRlcigKICAgICAgICAgICAgIHNuYXBzaG90LAotICAgICAgICAgICAgcmF3RWRnZXMs
CisgICAgICAgICAgICBub2RlSW5kZXgsCiAgICAgICAgICAgICBmdW5jdGlvbihlZGdlKSB7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuICFlZGdlLmlzSW52aXNpYmxlCiAgICAgICAgICAgICAgICAg
ICAgICYmIChzaG93SGlkZGVuRGF0YSB8fCAoIWVkZ2UuaXNIaWRkZW4gJiYgIWVkZ2Uubm9kZS5p
c0hpZGRlbikpOwpAQCAtNDE0LDcgKzQxMyw2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RD
b25zdHJ1Y3Rvck5vZGUucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlcigKICAgICAgICAgICAgIHNuYXBz
aG90LAotICAgICAgICAgICAgc25hcHNob3QuYWxsTm9kZXMsCiAgICAgICAgICAgICBmdW5jdGlv
biAobm9kZSkgewogICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS50eXBlID09PSBub2RlVHlw
ZQogICAgICAgICAgICAgICAgICAgICAmJiAobm9kZUNsYXNzTmFtZSA9PT0gbnVsbCB8fCBub2Rl
LmNsYXNzTmFtZSA9PT0gbm9kZUNsYXNzTmFtZSk7CkBAIC00NTYsNyArNDU0LDcgQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICBn
ZXQgX2NvdW50UGVyY2VudCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY291bnQgLyB0
aGlzLmRhdGFHcmlkLnNuYXBzaG90Lm5vZGVzQ291bnQgKiAxMDAuMDsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2NvdW50IC8gdGhpcy5kYXRhR3JpZC5zbmFwc2hvdC5ub2RlQ291bnQgKiAxMDAuMDsK
ICAgICB9LAogCiAgICAgZ2V0IF9yZXRhaW5lZFNpemVQZXJjZW50KCkKQEAgLTQ4NSwxMiArNDgz
LDYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEl0ZXJhdG9yc1R1cGxlLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5faXQyLmZpcnN0KCk7CiAgICAgfSwKIAotICAgIHJlc2V0SW5zdGFu
Y2VzQ291bnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2l0MS5yZXNldEluc3Rh
bmNlc0NvdW50KCk7Ci0gICAgICAgIHRoaXMuX2l0Mi5yZXNldEluc3RhbmNlc0NvdW50KCk7Ci0g
ICAgfSwKLQogICAgIHNvcnQ6IGZ1bmN0aW9uKGNvbXBhcmF0b3IpCiAgICAgewogICAgICAgICB0
aGlzLl9pdDEuc29ydChjb21wYXJhdG9yKTsKQEAgLTU2OCw3ICs1NjAsNiBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUucHJvdG90eXBlID0gewogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyKAog
ICAgICAgICAgICAgICAgIHNuYXBzaG90LAotICAgICAgICAgICAgICAgIHNuYXBzaG90LmFsbE5v
ZGVzLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChub2RlKSB7CiAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbm9kZS50eXBlID09PSBub2RlVHlwZQogICAgICAgICAgICAgICAgICAgICAg
ICAgICYmIChub2RlQ2xhc3NOYW1lID09PSBudWxsIHx8IG5vZGUuY2xhc3NOYW1lID09PSBub2Rl
Q2xhc3NOYW1lKQpAQCAtNjU1LDkgKzY0Niw4IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RE
b21pbmF0b3JPYmplY3ROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHNob3dIaWRkZW5E
YXRhID0gV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5zaG93SGlk
ZGVuRGF0YTsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9k
ZXNQcm92aWRlcigKICAgICAgICAgICAgIHNuYXBzaG90LAotICAgICAgICAgICAgc25hcHNob3Qu
YWxsTm9kZXMsCiAgICAgICAgICAgICBmdW5jdGlvbiAobm9kZSkgewotICAgICAgICAgICAgICAg
ICB2YXIgZG9taW5hdG9ySW5kZXggPSBub2RlLmRvbWluYXRvckluZGV4KCk7CisgICAgICAgICAg
ICAgICAgIHZhciBkb21pbmF0b3JJbmRleCA9IG5vZGUuZG9taW5hdG9ySW5kZXg7CiAgICAgICAg
ICAgICAgICAgIHJldHVybiBkb21pbmF0b3JJbmRleCA9PT0gbm9kZUluZGV4CiAgICAgICAgICAg
ICAgICAgICAgICAmJiBkb21pbmF0b3JJbmRleCAhPT0gbm9kZS5ub2RlSW5kZXgKICAgICAgICAg
ICAgICAgICAgICAgICYmIChzaG93SGlkZGVuRGF0YSB8fCAhbm9kZS5pc0hpZGRlbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNo
b3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhl
YXBzaG90Vmlldy5qcwppbmRleCA1NDU1NGJiLi4yZjY3M2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcu
anMKQEAgLTQ1LDggKzQ1LDggQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRhaW5tZW50
RGF0YUdyaWQucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhpcy5zbmFwc2hvdFZpZXcg
PSBzbmFwc2hvdFZpZXc7CiAgICAgICAgIHRoaXMuc25hcHNob3QgPSBzbmFwc2hvdDsKLSAgICAg
ICAgdGhpcy5zbmFwc2hvdE5vZGVJbmRleCA9IHRoaXMuc25hcHNob3QuX3Jvb3ROb2RlSW5kZXg7
Ci0gICAgICAgIHRoaXMuX3Byb3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIoc25hcHNob3Qs
IHNuYXBzaG90LnJvb3ROb2RlLnJhd0VkZ2VzKTsKKyAgICAgICAgdGhpcy5zbmFwc2hvdE5vZGVJ
bmRleCA9IHRoaXMuc25hcHNob3Qucm9vdE5vZGVJbmRleDsKKyAgICAgICAgdGhpcy5fcHJvdmlk
ZXIgPSB0aGlzLl9jcmVhdGVQcm92aWRlcihzbmFwc2hvdCwgdGhpcy5zbmFwc2hvdE5vZGVJbmRl
eCk7CiAgICAgICAgIHRoaXMuc29ydCgpOwogICAgIH0KIH07CkBAIC0yMjcsNyArMjI3LDcgQEAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvcnNEYXRhR3JpZC5wcm90b3R5cGUgPSB7
CiAgICAgewogICAgICAgICB0aGlzLnNuYXBzaG90VmlldyA9IHNuYXBzaG90VmlldzsKICAgICAg
ICAgdGhpcy5zbmFwc2hvdCA9IHNuYXBzaG90OwotICAgICAgICB0aGlzLnNuYXBzaG90Tm9kZUlu
ZGV4ID0gdGhpcy5zbmFwc2hvdC5fcm9vdE5vZGVJbmRleDsKKyAgICAgICAgdGhpcy5zbmFwc2hv
dE5vZGVJbmRleCA9IHRoaXMuc25hcHNob3Qucm9vdE5vZGVJbmRleDsKICAgICAgICAgdGhpcy5f
cHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVQcm92aWRlcihzbmFwc2hvdCwgdGhpcy5zbmFwc2hvdE5v
ZGVJbmRleCk7CiAgICAgICAgIHRoaXMuc29ydCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKaW5kZXggYWY5YjExOS4u
YzlkMWUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3QuanMKQEAgLTM1MSw3ICszNTEsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgZG9taW5hdG9y
SW5kZXg6IGZ1bmN0aW9uKCkKKyAgICBnZXQgZG9taW5hdG9ySW5kZXgoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMubm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2Rv
bWluYXRvck9mZnNldF07CiAgICAgfSwKQEAgLTQwNCw3ICs0MDQsNyBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICBnZXQgcmV0YWluZXJzKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbmVy
RWRnZUl0ZXJhdG9yKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlKHRo
aXMuX3NuYXBzaG90LCB0aGlzLl9zbmFwc2hvdC5yZXRhaW5lcnModGhpcykpKTsKKyAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlSXRlcmF0b3Io
bmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5lckVkZ2UodGhpcy5fc25hcHNob3Qs
IHRoaXMuX3NuYXBzaG90Ll9yZXRhaW5lcnNGb3JOb2RlKHRoaXMpKSk7CiAgICAgfSwKIAogICAg
IGdldCBzZWxmU2l6ZSgpCkBAIC00ODIsNiArNDgyLDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdE5vZGVJdGVyYXRvci5wcm90b3R5cGUgPSB7CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3QgPSBmdW5jdGlvbihwcm9maWxlKQogeworICAgIHRoaXMudWlkID0gcHJvZmlsZS51aWQ7CiAg
ICAgdGhpcy5fbm9kZXMgPSBwcm9maWxlLm5vZGVzOwogICAgIHRoaXMuX3N0cmluZ3MgPSBwcm9m
aWxlLnN0cmluZ3M7CiAKQEAgLTUzNSwyMCArNTM2LDIwIEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIGdldCBhbGxOb2Rl
cygpCisgICAgZ2V0IF9hbGxOb2RlcygpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3ROb2RlSXRlcmF0b3IodGhpcy5yb290Tm9kZSk7CiAgICAgfSwK
IAotICAgIGdldCBub2Rlc0NvdW50KCkKKyAgICBnZXQgbm9kZUNvdW50KCkKICAgICB7Ci0gICAg
ICAgIGlmICh0aGlzLl9ub2Rlc0NvdW50KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVz
Q291bnQ7CisgICAgICAgIGlmICh0aGlzLl9ub2RlQ291bnQpCisgICAgICAgICAgICByZXR1cm4g
dGhpcy5fbm9kZUNvdW50OwogCi0gICAgICAgIHRoaXMuX25vZGVzQ291bnQgPSAwOwotICAgICAg
ICBmb3IgKHZhciBpdGVyID0gdGhpcy5hbGxOb2RlczsgaXRlci5oYXNOZXh0KCk7IGl0ZXIubmV4
dCgpKQotICAgICAgICAgICAgKyt0aGlzLl9ub2Rlc0NvdW50OwotICAgICAgICByZXR1cm4gdGhp
cy5fbm9kZXNDb3VudDsKKyAgICAgICAgdGhpcy5fbm9kZUNvdW50ID0gMDsKKyAgICAgICAgZm9y
ICh2YXIgaXRlciA9IHRoaXMuX2FsbE5vZGVzOyBpdGVyLmhhc05leHQoKTsgaXRlci5uZXh0KCkp
CisgICAgICAgICAgICArK3RoaXMuX25vZGVDb3VudDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25v
ZGVDb3VudDsKICAgICB9LAogCiAgICAgcmVzdG9yZTogZnVuY3Rpb24ocHJvZmlsZSkKQEAgLTU2
Miw2ICs1NjMsMTEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUodGhpcywgdGhp
cy5fcm9vdE5vZGVJbmRleCk7CiAgICAgfSwKIAorICAgIGdldCByb290Tm9kZUluZGV4KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yb290Tm9kZUluZGV4OworICAgIH0sCisKICAgICBn
ZXQgdG90YWxTaXplKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnJvb3ROb2RlLnJldGFp
bmVkU2l6ZTsKQEAgLTU2OSwxMiArNTc1LDE3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlID0gewogCiAgICAgaGFzSWQ6IGZ1bmN0aW9uKGlkKQogICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMubm9kZUlkcy5iaW5hcnlJbmRleE9mKGlkLCB0aGlzLl9udW1iZXJzQ29tcGFy
YXRvcikgPj0gMDsKKyAgICB9LAorCisgICAgZ2V0IG5vZGVJZHMoKQorICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9pZHNMaXN0KQogICAgICAgICAgICAgdGhpcy5fYnVpbGRJZHNMaXN0KCk7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9pZHNMaXN0LmJpbmFyeUluZGV4T2YoaWQsIHRoaXMuX251bWJl
cnNDb21wYXJhdG9yKSA+PSAwOworICAgICAgICByZXR1cm4gdGhpcy5faWRzTGlzdDsKICAgICB9
LAogCi0gICAgcmV0YWluZXJzOiBmdW5jdGlvbihub2RlKQorICAgIF9yZXRhaW5lcnNGb3JOb2Rl
OiBmdW5jdGlvbihub2RlKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXRhaW5lcnMpCiAg
ICAgICAgICAgICB0aGlzLl9idWlsZFJldGFpbmVycygpOwpAQCAtNjAxLDcgKzYxMiw3IEBAIFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZXRh
aW5lckluZGV4ID0gbmV3IEFycmF5KHRoaXMuX25vZGVJbmRleC5sZW5ndGgpOwogICAgICAgICBm
b3IgKHZhciBpID0gMCwgbCA9IHRoaXMuX3JldGFpbmVySW5kZXgubGVuZ3RoOyBpIDwgbDsgKytp
KQogICAgICAgICAgICAgdGhpcy5fcmV0YWluZXJJbmRleFtpXSA9IDA7Ci0gICAgICAgIGZvciAo
dmFyIG5vZGVzSXRlciA9IHRoaXMuYWxsTm9kZXM7IG5vZGVzSXRlci5oYXNOZXh0KCk7IG5vZGVz
SXRlci5uZXh0KCkpIHsKKyAgICAgICAgZm9yICh2YXIgbm9kZXNJdGVyID0gdGhpcy5fYWxsTm9k
ZXM7IG5vZGVzSXRlci5oYXNOZXh0KCk7IG5vZGVzSXRlci5uZXh0KCkpIHsKICAgICAgICAgICAg
IHZhciBub2RlID0gbm9kZXNJdGVyLm5vZGU7CiAgICAgICAgICAgICBmb3IgKHZhciBlZGdlc0l0
ZXIgPSBub2RlLmVkZ2VzOyBlZGdlc0l0ZXIuaGFzTmV4dCgpOyBlZGdlc0l0ZXIubmV4dCgpKSB7
CiAgICAgICAgICAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc0l0ZXIuZWRnZTsKQEAgLTYyMCw3ICs2
MzEsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX3JldGFpbmVySW5kZXhbaV0gPSByZXRhaW5lclBvc2l0aW9uOwogICAgICAgICAg
ICAgcmV0YWluZXJQb3NpdGlvbiArPSByZXRhaW5lckNvdW50OwogICAgICAgICB9Ci0gICAgICAg
IGZvciAobm9kZXNJdGVyID0gdGhpcy5hbGxOb2Rlczsgbm9kZXNJdGVyLmhhc05leHQoKTsgbm9k
ZXNJdGVyLm5leHQoKSkgeworICAgICAgICBmb3IgKG5vZGVzSXRlciA9IHRoaXMuX2FsbE5vZGVz
OyBub2Rlc0l0ZXIuaGFzTmV4dCgpOyBub2Rlc0l0ZXIubmV4dCgpKSB7CiAgICAgICAgICAgICB2
YXIgbm9kZSA9IG5vZGVzSXRlci5ub2RlOwogICAgICAgICAgICAgZm9yICh2YXIgZWRnZXNJdGVy
ID0gbm9kZS5lZGdlczsgZWRnZXNJdGVyLmhhc05leHQoKTsgZWRnZXNJdGVyLm5leHQoKSkgewog
ICAgICAgICAgICAgICAgIHZhciBlZGdlID0gZWRnZXNJdGVyLmVkZ2U7CkBAIC02MzUsNyArNjQ2
LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgX2J1aWxk
QWdncmVnYXRlczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fYWdncmVnYXRlcyA9
IHt9OwotICAgICAgICBmb3IgKHZhciBpdGVyID0gdGhpcy5hbGxOb2RlczsgaXRlci5oYXNOZXh0
KCk7IGl0ZXIubmV4dCgpKSB7CisgICAgICAgIGZvciAodmFyIGl0ZXIgPSB0aGlzLl9hbGxOb2Rl
czsgaXRlci5oYXNOZXh0KCk7IGl0ZXIubmV4dCgpKSB7CiAgICAgICAgICAgICB2YXIgbm9kZSA9
IGl0ZXIubm9kZTsKICAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSBub2RlLmNsYXNzTmFtZTsK
ICAgICAgICAgICAgIHZhciBuYW1lTWF0dGVycyA9IG5vZGUudHlwZSA9PT0gIm9iamVjdCIgfHwg
bm9kZS50eXBlID09PSAibmF0aXZlIjsKQEAgLTY1Myw3ICs2NjQsNyBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKIAogICAgIF9idWlsZEFnZ3JlZ2F0ZXNJbmRleGVz
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmb3IgKHZhciBpdGVyID0gdGhpcy5hbGxOb2Rl
czsgaXRlci5oYXNOZXh0KCk7IGl0ZXIubmV4dCgpKSB7CisgICAgICAgIGZvciAodmFyIGl0ZXIg
PSB0aGlzLl9hbGxOb2RlczsgaXRlci5oYXNOZXh0KCk7IGl0ZXIubmV4dCgpKSB7CiAgICAgICAg
ICAgICB2YXIgbm9kZSA9IGl0ZXIubm9kZTsKICAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSBu
b2RlLmNsYXNzTmFtZTsKICAgICAgICAgICAgIHZhciBjbHNzID0gdGhpcy5fYWdncmVnYXRlc1tj
bGFzc05hbWVdOwpAQCAtNjc3LDEwICs2ODgsMTAgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUgPSB7CiAgICAgX2J1aWxkSWRzTGlzdDogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgdmFyIGNvdW50ID0gMDsKLSAgICAgICAgZm9yICh2YXIgbm9kZXNJdGVyID0gdGhpcy5h
bGxOb2Rlczsgbm9kZXNJdGVyLmhhc05leHQoKTsgbm9kZXNJdGVyLm5leHQoKSwgKytjb3VudCk7
CisgICAgICAgIGZvciAodmFyIG5vZGVzSXRlciA9IHRoaXMuX2FsbE5vZGVzOyBub2Rlc0l0ZXIu
aGFzTmV4dCgpOyBub2Rlc0l0ZXIubmV4dCgpLCArK2NvdW50KTsKICAgICAgICAgdGhpcy5faWRz
TGlzdCA9IG5ldyBBcnJheShjb3VudCk7CiAgICAgICAgIGNvdW50ID0gMDsKLSAgICAgICAgZm9y
IChub2Rlc0l0ZXIgPSB0aGlzLmFsbE5vZGVzOyBub2Rlc0l0ZXIuaGFzTmV4dCgpOyBub2Rlc0l0
ZXIubmV4dCgpLCArK2NvdW50KQorICAgICAgICBmb3IgKG5vZGVzSXRlciA9IHRoaXMuX2FsbE5v
ZGVzOyBub2Rlc0l0ZXIuaGFzTmV4dCgpOyBub2Rlc0l0ZXIubmV4dCgpLCArK2NvdW50KQogICAg
ICAgICAgICAgdGhpcy5faWRzTGlzdFtjb3VudF0gPSBub2Rlc0l0ZXIubm9kZS5pZDsKICAgICAg
ICAgdGhpcy5faWRzTGlzdC5zb3J0KHRoaXMuX251bWJlcnNDb21wYXJhdG9yKTsKICAgICB9LApA
QCAtNjg4LDEwICs2OTksMTAgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUg
PSB7CiAgICAgX2J1aWxkTm9kZUluZGV4OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIg
Y291bnQgPSAwOwotICAgICAgICBmb3IgKHZhciBub2Rlc0l0ZXIgPSB0aGlzLmFsbE5vZGVzOyBu
b2Rlc0l0ZXIuaGFzTmV4dCgpOyBub2Rlc0l0ZXIubmV4dCgpLCArK2NvdW50KTsKKyAgICAgICAg
Zm9yICh2YXIgbm9kZXNJdGVyID0gdGhpcy5fYWxsTm9kZXM7IG5vZGVzSXRlci5oYXNOZXh0KCk7
IG5vZGVzSXRlci5uZXh0KCksICsrY291bnQpOwogICAgICAgICB0aGlzLl9ub2RlSW5kZXggPSBu
ZXcgQXJyYXkoY291bnQgKyAxKTsKICAgICAgICAgY291bnQgPSAwOwotICAgICAgICBmb3IgKG5v
ZGVzSXRlciA9IHRoaXMuYWxsTm9kZXM7IG5vZGVzSXRlci5oYXNOZXh0KCk7IG5vZGVzSXRlci5u
ZXh0KCksICsrY291bnQpCisgICAgICAgIGZvciAobm9kZXNJdGVyID0gdGhpcy5fYWxsTm9kZXM7
IG5vZGVzSXRlci5oYXNOZXh0KCk7IG5vZGVzSXRlci5uZXh0KCksICsrY291bnQpCiAgICAgICAg
ICAgICB0aGlzLl9ub2RlSW5kZXhbY291bnRdID0gbm9kZXNJdGVyLmluZGV4OwogICAgICAgICB0
aGlzLl9ub2RlSW5kZXhbY291bnRdID0gdGhpcy5fbm9kZXMubGVuZ3RoOwogICAgIH0sCkBAIC03
NjEsNyArNzcyLDYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0
ZXJhdG9yID0gZnVuY3Rpb24oaXRlcmF0b3IsIGZpbHRlcikKICAgICB0aGlzLl9pdGVyYXRpb25P
cmRlciA9IG51bGw7CiAgICAgdGhpcy5fcG9zaXRpb24gPSAwOwogICAgIHRoaXMuX2xhc3RDb21w
YXJhdG9yID0gbnVsbDsKLSAgICB0aGlzLl9pbnN0YW5jZXNDb3VudCA9IDA7CiB9CiAKIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUgPSB7
CkBAIC03OTAsMTYgKzgwMCw2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9y
ZGVyZWRJdGVyYXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlv
biA8IHRoaXMuX2l0ZXJhdGlvbk9yZGVyLmxlbmd0aDsKICAgICB9LAogCi0gICAgaW5jSW5zdGFu
Y2VzQ291bnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgICsrdGhpcy5faW5zdGFuY2VzQ291
bnQ7Ci0gICAgfSwKLQotICAgIGdldCBpbnN0YW5jZXNDb3VudCgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5faW5zdGFuY2VzQ291bnQ7Ci0gICAgfSwKLQogICAgIGdldCBpc0VtcHR5KCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9pdGVyYXRpb25PcmRlcikKQEAgLTgyMCwxMSArODIw
LDYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZXJhdG9yLml0ZW07CiAgICAgfSwK
IAotICAgIGdldCBsYXN0Q29tcGFyYXRvcigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
bGFzdENvbXBhcmF0b3I7Ci0gICAgfSwKLQogICAgIGdldCBsZW5ndGgoKQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9pdGVyYXRpb25PcmRlcikKQEAgLTgzNiwxMSArODMxLDYgQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgICsrdGhpcy5fcG9zaXRpb247CiAgICAgfSwKLQotICAgIHJlc2V0SW5z
dGFuY2VzQ291bnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2luc3RhbmNlc0Nv
dW50ID0gMDsKLSAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9y
ZGVyZWRJdGVyYXRvci5wcm90b3R5cGUuY3JlYXRlQ29tcGFyYXRvciA9IGZ1bmN0aW9uKGZpZWxk
TmFtZXMpCkBAIC04NDgsMTAgKzgzOCwxMSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Rmls
dGVyZWRPcmRlcmVkSXRlcmF0b3IucHJvdG90eXBlLmNyZWF0ZUNvbXBhcmF0b3IgPSBmdQogICAg
IHJldHVybiB7ZmllbGROYW1lMTpmaWVsZE5hbWVzWzBdLCBhc2NlbmRpbmcxOmZpZWxkTmFtZXNb
MV0sIGZpZWxkTmFtZTI6ZmllbGROYW1lc1syXSwgYXNjZW5kaW5nMjpmaWVsZE5hbWVzWzNdfTsK
IH0KIAotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzUHJvdmlkZXIgPSBmdW5jdGlvbihz
bmFwc2hvdCwgcmF3RWRnZXMsIGZpbHRlcikKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdl
c1Byb3ZpZGVyID0gZnVuY3Rpb24oc25hcHNob3QsIG5vZGVJbmRleCwgZmlsdGVyKQogewogICAg
IHRoaXMuc25hcHNob3QgPSBzbmFwc2hvdDsKLSAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IuY2FsbCh0aGlzLCBuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdEVkZ2VJdGVyYXRvcihuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2Uoc25h
cHNob3QsIHJhd0VkZ2VzKSksIGZpbHRlcik7CisgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdE5vZGUoc25hcHNob3QsIG5vZGVJbmRleCk7CisgICAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLmNhbGwodGhpcywgbmV3IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlSXRlcmF0b3IobmV3IFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RFZGdlKHNuYXBzaG90LCBub2RlLnJhd0VkZ2VzKSksIGZpbHRlcik7CiB9CiAKIFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc1Byb3ZpZGVyLnByb3RvdHlwZSA9IHsKQEAgLTkz
MSwxMCArOTIyLDEwIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc1Byb3ZpZGVyLnBy
b3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzUHJvdmlkZXIucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVy
ZWRJdGVyYXRvci5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1By
b3ZpZGVyID0gZnVuY3Rpb24oc25hcHNob3QsIG5vZGVzLCBmaWx0ZXIpCitXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlciA9IGZ1bmN0aW9uKHNuYXBzaG90LCBmaWx0ZXIpCiB7
CiAgICAgdGhpcy5zbmFwc2hvdCA9IHNuYXBzaG90OwotICAgIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5jYWxsKHRoaXMsIG5vZGVzLCBmaWx0ZXIpOwor
ICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5jYWxs
KHRoaXMsIHNuYXBzaG90Ll9hbGxOb2RlcywgZmlsdGVyKTsKIH0KIAogV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIucHJvdG90eXBlID0gewo=
</data>
<flag name="commit-queue"
          id="79538"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87134</attachid>
            <date>2011-03-28 06:15:48 -0700</date>
            <delta_ts>2011-03-29 04:15:33 -0700</delta_ts>
            <desc>fill in ChangeLog for LayoutTests</desc>
            <filename>patch-57227</filename>
            <type>text/plain</type>
            <size>22350</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZjQ5ZDQ0Li5mNjI0NWU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMt
MjggIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hy
b21pdW1dIFJlZmFjdG9yIEhlYXBTbmFwc2hvdC1yZWxhdGVkIGNvZGUgdG8KKyAgICAgICAgbWFr
ZSBzdXJlIHdlIGRvbid0IHJldHVybiBiaWcgYW1vdW50cyBvZiBkYXRhIHRvIGZvcm1zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyMjcKKworICAg
ICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWw6CisKIDIwMTEtMDMt
MjcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1sCmluZGV4IDliNTk2MzcuLjFjMDRmNjIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbApA
QCAtOTAsNyArOTAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZnVuY3Rpb24gaGVhcFNu
YXBzaG90U2ltcGxlVGVzdChuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgc25hcHNo
b3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhl
YXBTbmFwc2hvdE1vY2soKSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyg2LCBzbmFwc2hvdC5ub2Rlc0NvdW50LCAibm9kZXMgY291bnQiKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDYsIHNuYXBzaG90Lm5vZGVDb3VudCwgIm5vZGUgY291
bnQiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDIwLCBzbmFwc2hv
dC50b3RhbFNpemUsICJ0b3RhbCBzaXplIik7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAg
IH0sCkBAIC0xMTYsNyArMTE2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAg
IkMiOiBbIkEiLCAiQiJdLAogICAgICAgICAgICAgICAgICJEIjogWyJCIl0sCiAgICAgICAgICAg
ICAgICAgIkUiOiBbIkMiXX07Ci0gICAgICAgICAgICBmb3IgKHZhciBub2RlcyA9IHNuYXBzaG90
LmFsbE5vZGVzOyBub2Rlcy5oYXNOZXh0KCk7IG5vZGVzLm5leHQoKSkgeworICAgICAgICAgICAg
Zm9yICh2YXIgbm9kZXMgPSBzbmFwc2hvdC5fYWxsTm9kZXM7IG5vZGVzLmhhc05leHQoKTsgbm9k
ZXMubmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgdmFyIG5hbWVzID0gW107CiAgICAgICAgICAg
ICAgICAgZm9yICh2YXIgcmV0YWluZXJzID0gbm9kZXMuaXRlbS5yZXRhaW5lcnM7IHJldGFpbmVy
cy5oYXNOZXh0KCk7IHJldGFpbmVycy5uZXh0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5hbWVz
LnB1c2gocmV0YWluZXJzLml0ZW0ubm9kZS5uYW1lKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS50eXBlID09PSAib2JqZWN0
IiAmJiBub2RlLm5hbWUgIT09ICJCIiAmJiBub2RlLm5hbWUgIT09ICJEIjsKICAgICAgICAgICAg
IH0KICAgICAgICAgIAotICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyKHNuYXBzaG90LCBzbmFwc2hvdC5hbGxOb2Rlcywg
bm9kZUZpbHRlcik7CisgICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIoc25hcHNob3QsIG5vZGVGaWx0ZXIpOwogICAgICAg
ICAgICAgLy8gU29ydCBieSBuYW1lcyBpbiByZXZlcnNlIG9yZGVyLgogICAgICAgICAgICAgcHJv
dmlkZXIuc29ydChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0
b3IucHJvdG90eXBlLmNyZWF0ZUNvbXBhcmF0b3IoWyJuYW1lIiwgZmFsc2UsICJpZCIsIGZhbHNl
XSkpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMywgcHJvdmlkZXIu
bGVuZ3RoLCAibm9kZXMgcHJvdmlkZXIgbGVuZ3RoIik7CkBAIC0xODgsNyArMTg4LDcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVkZ2UubmFtZSA9PT0gImIiOwog
ICAgICAgICAgICAgfQogICAgICAgICAgCi0gICAgICAgICAgICB2YXIgcHJvdmlkZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzUHJvdmlkZXIoc25hcHNob3QsIHNuYXBzaG90
LnJvb3ROb2RlLnJhd0VkZ2VzLCBlZGdlRmlsdGVyKTsKKyAgICAgICAgICAgIHZhciBwcm92aWRl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNQcm92aWRlcihzbmFwc2hvdCwg
c25hcHNob3Qucm9vdE5vZGVJbmRleCwgZWRnZUZpbHRlcik7CiAgICAgICAgICAgICBwcm92aWRl
ci5zb3J0KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5w
cm90b3R5cGUuY3JlYXRlQ29tcGFyYXRvcihbIiFlZGdlTmFtZSIsIGZhbHNlLCAiaWQiLCBmYWxz
ZV0pKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDEsIHByb3ZpZGVy
Lmxlbmd0aCwgImVkZ2VzIHByb3ZpZGVyIGxlbmd0aCIpOwogICAgICAgICAgICAgdmFyIG5hbWVz
ID0gW107CkBAIC0yMDksNyArMjA5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAg
ICAgNTA6IFsiQUAyWzFdLmJkIiwgIkJAMy5iZCJdLAogICAgICAgICAgICAgICAgIDU3OiBbIkFA
Mi5hYy5jZSIsICJBQDJbMV0uYmMuY2UiLCAiQkAzLmJjLmNlIl0KICAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICBmb3IgKHZhciBub2RlcyA9IHNuYXBzaG90LmFsbE5vZGVzOyBub2Rlcy5oYXNO
ZXh0KCk7IG5vZGVzLm5leHQoKSkgeworICAgICAgICAgICAgZm9yICh2YXIgbm9kZXMgPSBzbmFw
c2hvdC5fYWxsTm9kZXM7IG5vZGVzLmhhc05leHQoKTsgbm9kZXMubmV4dCgpKSB7CiAgICAgICAg
ICAgICAgICAgdmFyIHBhdGhGaW5kZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBh
dGhGaW5kZXIoc25hcHNob3QsIG5vZGVzLmluZGV4KTsKICAgICAgICAgICAgICAgICB2YXIgcGF0
aHMgPSBbXTsKICAgICAgICAgICAgICAgICB2YXIgcGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNGY5MjI4
Li5mODRiMjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDMtMjggIE1pa2hh
aWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hyb21pdW1dIFJl
ZmFjdG9yIEhlYXBTbmFwc2hvdC1yZWxhdGVkIGNvZGUgdG8KKyAgICAgICAgbWFrZSBzdXJlIHdl
IGRvbid0IHJldHVybiBiaWcgYW1vdW50cyBvZiBkYXRhIHRvIGZvcm1zLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyMjcKKworICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGls
ZHJlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJpY09iamVjdE5v
ZGUucHJvdG90eXBlLmdldCBfY291bnRQZXJjZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RPYmplY3ROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RPYmplY3ROb2RlLnByb3RvdHlwZS5fY3JlYXRlUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90SW5zdGFuY2VOb2RlLnByb3RvdHlwZS5fY3JlYXRlUHJvdmlkZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yTm9kZS5wcm90b3R5cGUu
X2NyZWF0ZU5vZGVzUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dENvbnN0cnVjdG9yTm9kZS5wcm90b3R5cGUuZ2V0IF9jb3VudFBlcmNlbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNQ
cm92aWRlci5jcmVhdGVQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90RGlmZk5vZGUucHJvdG90eXBlLl9jcmVhdGVOb2Rlc1Byb3ZpZGVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JPYmplY3ROb2RlLnByb3RvdHlwZS5fY3Jl
YXRlUHJvdmlkZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFw
c2hvdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1l
bnREYXRhR3JpZC5wcm90b3R5cGUuc2V0RGF0YVNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yc0RhdGFHcmlkLnByb3RvdHlwZS5zZXREYXRhU291cmNl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZS5nZXQgZG9taW5hdG9y
SW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBl
LmdldCByZXRhaW5lcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5nZXQgX2FsbE5vZGVz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmdldCBub2Rl
Q291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuZ2V0
IHJvb3ROb2RlSW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUuaGFzSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5
cGUuZ2V0IG5vZGVJZHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUuX3JldGFpbmVyc0Zvck5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUuX2J1aWxkUmV0YWluZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QucHJvdG90eXBlLl9idWlsZEFnZ3JlZ2F0ZXMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2J1aWxkQWdncmVnYXRlc0luZGV4ZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2J1aWxkSWRzTGlz
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGRO
b2RlSW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3Jk
ZXJlZEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJl
ZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUubmV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RWRnZXNQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Tm9kZXNQcm92aWRlcik6CisKIDIwMTEtMDMtMjcgIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNr
eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWls
ZWRIZWFwc2hvdEdyaWROb2Rlcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcwppbmRleCBhY2YzMjgwLi40YWEzMjZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVh
cHNob3RHcmlkTm9kZXMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzCkBAIC02MSw4ICs2MSw4IEBAIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgcG9wdWxhdGVDaGls
ZHJlbjogZnVuY3Rpb24ocHJvdmlkZXIsIGhvd01hbnksIGF0SW5kZXgpCiAgICAgewogICAgICAg
ICBpZiAoIWhvd01hbnkgJiYgcHJvdmlkZXIpIHsKLSAgICAgICAgICAgIGhvd01hbnkgPSBwcm92
aWRlci5pbnN0YW5jZXNDb3VudDsKLSAgICAgICAgICAgIHByb3ZpZGVyLnJlc2V0SW5zdGFuY2Vz
Q291bnQoKTsKKyAgICAgICAgICAgIGhvd01hbnkgPSBwcm92aWRlci5pbnN0YW5jZUNvdW50Owor
ICAgICAgICAgICAgcHJvdmlkZXIuaW5zdGFuY2VDb3VudCA9IDA7CiAgICAgICAgIH0KICAgICAg
ICAgcHJvdmlkZXIgPSBwcm92aWRlciB8fCB0aGlzLl9wcm92aWRlcjsKICAgICAgICAgaG93TWFu
eSA9IGhvd01hbnkgfHwgdGhpcy5fZGVmYXVsdFBvcHVsYXRlQ291bnQ7CkBAIC03NSw3ICs3NSw3
IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZm9y
ICggOyBob3dNYW55ID4gMCAmJiBwcm92aWRlci5oYXNOZXh0KCk7IHByb3ZpZGVyLm5leHQoKSwg
cHJvdmlkZXIuaW5jSW5zdGFuY2VzQ291bnQoKSwgLS1ob3dNYW55KSB7CisgICAgICAgIGZvciAo
IDsgaG93TWFueSA+IDAgJiYgcHJvdmlkZXIuaGFzTmV4dCgpOyBwcm92aWRlci5uZXh0KCksICsr
cHJvdmlkZXIuaW5zdGFuY2VDb3VudCwgLS1ob3dNYW55KSB7CiAgICAgICAgICAgICB2YXIgaXRl
bSA9IHByb3ZpZGVyLml0ZW07CiAgICAgICAgICAgICBpZiAoaGF2ZVNhdmVkQ2hpbGRyZW4pIHsK
ICAgICAgICAgICAgICAgICB2YXIgaGFzaCA9IHRoaXMuX2NoaWxkSGFzaEZvckVudGl0eShpdGVt
KTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R2VuZXJpY09i
amVjdE5vZGUucHJvdG90eXBlID0gewogCiAgICAgZ2V0IF9jb3VudFBlcmNlbnQoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX2NvdW50IC8gdGhpcy50cmVlLnNuYXBzaG90Lm5vZGVzQ291
bnQgKiAxMDAuMDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvdW50IC8gdGhpcy50cmVlLnNuYXBz
aG90Lm5vZGVDb3VudCAqIDEwMC4wOwogICAgIH0sCiAKICAgICBnZXQgZGF0YSgpCkBAIC0yMzEs
OSArMjMxLDggQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGUKIAogV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE9iamVjdE5vZGUgPSBmdW5jdGlvbih0cmVlLCBlZGdlKQogewotICAgIHZhciBub2Rl
ID0gZWRnZS5ub2RlOwotICAgIHZhciBwcm92aWRlciA9IHRoaXMuX2NyZWF0ZVByb3ZpZGVyKHRy
ZWUuc25hcHNob3QsIG5vZGUucmF3RWRnZXMpOwotICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RHZW5lcmljT2JqZWN0Tm9kZS5jYWxsKHRoaXMsIHRyZWUsIG5vZGUsICFwcm92aWRlci5pc0Vt
cHR5LCAxMDApOworICAgIHZhciBwcm92aWRlciA9IHRoaXMuX2NyZWF0ZVByb3ZpZGVyKHRyZWUu
c25hcHNob3QsIGVkZ2Uubm9kZUluZGV4KTsKKyAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
R2VuZXJpY09iamVjdE5vZGUuY2FsbCh0aGlzLCB0cmVlLCBlZGdlLm5vZGUsICFwcm92aWRlci5p
c0VtcHR5LCAxMDApOwogICAgIHRoaXMuX3JlZmVyZW5jZU5hbWUgPSBlZGdlLm5hbWU7CiAgICAg
dGhpcy5fcmVmZXJlbmNlVHlwZSA9IGVkZ2UudHlwZTsKICAgICB0aGlzLl9wcm92aWRlciA9IHBy
b3ZpZGVyOwpAQCAtMjQ1LDEyICsyNDQsMTIgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9i
amVjdE5vZGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RPYmplY3ROb2RlKHRoaXMuZGF0YUdyaWQsIHByb3ZpZGVyLml0ZW0pOwogICAg
IH0sCiAKLSAgICBfY3JlYXRlUHJvdmlkZXI6IGZ1bmN0aW9uKHNuYXBzaG90LCByYXdFZGdlcykK
KyAgICBfY3JlYXRlUHJvdmlkZXI6IGZ1bmN0aW9uKHNuYXBzaG90LCBub2RlSW5kZXgpCiAgICAg
ewogICAgICAgICB2YXIgc2hvd0hpZGRlbkRhdGEgPSBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFw
c2hvdFZpZXcucHJvdG90eXBlLnNob3dIaWRkZW5EYXRhOwogICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc1Byb3ZpZGVyKAogICAgICAgICAgICAgc25hcHNo
b3QsCi0gICAgICAgICAgICByYXdFZGdlcywKKyAgICAgICAgICAgIG5vZGVJbmRleCwKICAgICAg
ICAgICAgIGZ1bmN0aW9uKGVkZ2UpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gIWVkZ2UuaXNJ
bnZpc2libGUKICAgICAgICAgICAgICAgICAgICAgJiYgKHNob3dIaWRkZW5EYXRhIHx8ICghZWRn
ZS5pc0hpZGRlbiAmJiAhZWRnZS5ub2RlLmlzSGlkZGVuKSk7CkBAIC0zMjEsNyArMzIwLDcgQEAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5IZWFwU25hcHMKIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEluc3Rh
bmNlTm9kZSA9IGZ1bmN0aW9uKHRyZWUsIGJhc2VTbmFwc2hvdCwgc25hcHNob3QsIG5vZGUpCiB7
Ci0gICAgdmFyIHByb3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIoYmFzZVNuYXBzaG90IHx8
IHNuYXBzaG90LCBub2RlLnJhd0VkZ2VzKTsgIAorICAgIHZhciBwcm92aWRlciA9IHRoaXMuX2Ny
ZWF0ZVByb3ZpZGVyKGJhc2VTbmFwc2hvdCB8fCBzbmFwc2hvdCwgbm9kZS5ub2RlSW5kZXgpOyAg
CiAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLmNhbGwodGhp
cywgdHJlZSwgbm9kZSwgIXByb3ZpZGVyLmlzRW1wdHksIDEwMCk7CiAgICAgdGhpcy5faXNEZWxl
dGVkTm9kZSA9ICEhYmFzZVNuYXBzaG90OwogICAgIHRoaXMuX3Byb3ZpZGVyID0gcHJvdmlkZXI7
ICAgIApAQCAtMzMzLDEyICszMzIsMTIgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEluc3Rh
bmNlTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdE9iamVjdE5vZGUodGhpcy5kYXRhR3JpZCwgcHJvdmlkZXIuaXRlbSk7CiAgICAg
fSwKIAotICAgIF9jcmVhdGVQcm92aWRlcjogZnVuY3Rpb24oc25hcHNob3QsIHJhd0VkZ2VzKQor
ICAgIF9jcmVhdGVQcm92aWRlcjogZnVuY3Rpb24oc25hcHNob3QsIG5vZGVJbmRleCkKICAgICB7
CiAgICAgICAgIHZhciBzaG93SGlkZGVuRGF0YSA9IFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBz
aG90Vmlldy5wcm90b3R5cGUuc2hvd0hpZGRlbkRhdGE7CiAgICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzUHJvdmlkZXIoCiAgICAgICAgICAgICBzbmFwc2hv
dCwKLSAgICAgICAgICAgIHJhd0VkZ2VzLAorICAgICAgICAgICAgbm9kZUluZGV4LAogICAgICAg
ICAgICAgZnVuY3Rpb24oZWRnZSkgewogICAgICAgICAgICAgICAgIHJldHVybiAhZWRnZS5pc0lu
dmlzaWJsZQogICAgICAgICAgICAgICAgICAgICAmJiAoc2hvd0hpZGRlbkRhdGEgfHwgKCFlZGdl
LmlzSGlkZGVuICYmICFlZGdlLm5vZGUuaXNIaWRkZW4pKTsKQEAgLTQxNCw3ICs0MTMsNiBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlLnByb3RvdHlwZSA9IHsKICAg
ICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJv
dmlkZXIoCiAgICAgICAgICAgICBzbmFwc2hvdCwKLSAgICAgICAgICAgIHNuYXBzaG90LmFsbE5v
ZGVzLAogICAgICAgICAgICAgZnVuY3Rpb24gKG5vZGUpIHsKICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5vZGUudHlwZSA9PT0gbm9kZVR5cGUKICAgICAgICAgICAgICAgICAgICAgJiYgKG5vZGVD
bGFzc05hbWUgPT09IG51bGwgfHwgbm9kZS5jbGFzc05hbWUgPT09IG5vZGVDbGFzc05hbWUpOwpA
QCAtNDU2LDcgKzQ1NCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rvck5v
ZGUucHJvdG90eXBlID0gewogCiAgICAgZ2V0IF9jb3VudFBlcmNlbnQoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvdW50IC8gdGhpcy5kYXRhR3JpZC5zbmFwc2hvdC5ub2Rlc0NvdW50
ICogMTAwLjA7CisgICAgICAgIHJldHVybiB0aGlzLl9jb3VudCAvIHRoaXMuZGF0YUdyaWQuc25h
cHNob3Qubm9kZUNvdW50ICogMTAwLjA7CiAgICAgfSwKIAogICAgIGdldCBfcmV0YWluZWRTaXpl
UGVyY2VudCgpCkBAIC00ODUsMTIgKzQ4Myw2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJ
dGVyYXRvcnNUdXBsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2l0Mi5maXJzdCgpOwog
ICAgIH0sCiAKLSAgICByZXNldEluc3RhbmNlc0NvdW50OiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0aGlzLl9pdDEucmVzZXRJbnN0YW5jZXNDb3VudCgpOwotICAgICAgICB0aGlzLl9pdDIu
cmVzZXRJbnN0YW5jZXNDb3VudCgpOwotICAgIH0sCi0KICAgICBzb3J0OiBmdW5jdGlvbihjb21w
YXJhdG9yKQogICAgIHsKICAgICAgICAgdGhpcy5faXQxLnNvcnQoY29tcGFyYXRvcik7CkBAIC01
NjgsNyArNTYwLDYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90Tm9kZXNQcm92aWRlcigKICAgICAgICAgICAgICAgICBzbmFwc2hvdCwKLSAgICAg
ICAgICAgICAgICBzbmFwc2hvdC5hbGxOb2RlcywKICAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
bm9kZSkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gbm9kZVR5
cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobm9kZUNsYXNzTmFtZSA9PT0gbnVsbCB8
fCBub2RlLmNsYXNzTmFtZSA9PT0gbm9kZUNsYXNzTmFtZSkKQEAgLTY1NSw5ICs2NDYsOCBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yT2JqZWN0Tm9kZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHZhciBzaG93SGlkZGVuRGF0YSA9IFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBz
aG90Vmlldy5wcm90b3R5cGUuc2hvd0hpZGRlbkRhdGE7CiAgICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIoCiAgICAgICAgICAgICBzbmFwc2hv
dCwKLSAgICAgICAgICAgIHNuYXBzaG90LmFsbE5vZGVzLAogICAgICAgICAgICAgZnVuY3Rpb24g
KG5vZGUpIHsKLSAgICAgICAgICAgICAgICAgdmFyIGRvbWluYXRvckluZGV4ID0gbm9kZS5kb21p
bmF0b3JJbmRleCgpOworICAgICAgICAgICAgICAgICB2YXIgZG9taW5hdG9ySW5kZXggPSBub2Rl
LmRvbWluYXRvckluZGV4OwogICAgICAgICAgICAgICAgICByZXR1cm4gZG9taW5hdG9ySW5kZXgg
PT09IG5vZGVJbmRleAogICAgICAgICAgICAgICAgICAgICAgJiYgZG9taW5hdG9ySW5kZXggIT09
IG5vZGUubm9kZUluZGV4CiAgICAgICAgICAgICAgICAgICAgICAmJiAoc2hvd0hpZGRlbkRhdGEg
fHwgIW5vZGUuaXNIaWRkZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKaW5kZXggNTQ1NTRiYi4uMmY2
NzNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRh
aWxlZEhlYXBzaG90Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCkBAIC00NSw4ICs0NSw4IEBAIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICB7CiAg
ICAgICAgIHRoaXMuc25hcHNob3RWaWV3ID0gc25hcHNob3RWaWV3OwogICAgICAgICB0aGlzLnNu
YXBzaG90ID0gc25hcHNob3Q7Ci0gICAgICAgIHRoaXMuc25hcHNob3ROb2RlSW5kZXggPSB0aGlz
LnNuYXBzaG90Ll9yb290Tm9kZUluZGV4OwotICAgICAgICB0aGlzLl9wcm92aWRlciA9IHRoaXMu
X2NyZWF0ZVByb3ZpZGVyKHNuYXBzaG90LCBzbmFwc2hvdC5yb290Tm9kZS5yYXdFZGdlcyk7Cisg
ICAgICAgIHRoaXMuc25hcHNob3ROb2RlSW5kZXggPSB0aGlzLnNuYXBzaG90LnJvb3ROb2RlSW5k
ZXg7CisgICAgICAgIHRoaXMuX3Byb3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIoc25hcHNo
b3QsIHRoaXMuc25hcHNob3ROb2RlSW5kZXgpOwogICAgICAgICB0aGlzLnNvcnQoKTsKICAgICB9
CiB9OwpAQCAtMjI3LDcgKzIyNyw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0
b3JzRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhpcy5zbmFwc2hvdFZp
ZXcgPSBzbmFwc2hvdFZpZXc7CiAgICAgICAgIHRoaXMuc25hcHNob3QgPSBzbmFwc2hvdDsKLSAg
ICAgICAgdGhpcy5zbmFwc2hvdE5vZGVJbmRleCA9IHRoaXMuc25hcHNob3QuX3Jvb3ROb2RlSW5k
ZXg7CisgICAgICAgIHRoaXMuc25hcHNob3ROb2RlSW5kZXggPSB0aGlzLnNuYXBzaG90LnJvb3RO
b2RlSW5kZXg7CiAgICAgICAgIHRoaXMuX3Byb3ZpZGVyID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIo
c25hcHNob3QsIHRoaXMuc25hcHNob3ROb2RlSW5kZXgpOwogICAgICAgICB0aGlzLnNvcnQoKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hl
YXBTbmFwc2hvdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNu
YXBzaG90LmpzCmluZGV4IGFmOWIxMTkuLmM5ZDFlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCkBAIC0zNTEsNyArMzUxLDcg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBlID0gewogICAgICAgICB9
CiAgICAgfSwKIAotICAgIGRvbWluYXRvckluZGV4OiBmdW5jdGlvbigpCisgICAgZ2V0IGRvbWlu
YXRvckluZGV4KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc1t0aGlzLm5vZGVJ
bmRleCArIHRoaXMuX3NuYXBzaG90Ll9kb21pbmF0b3JPZmZzZXRdOwogICAgIH0sCkBAIC00MDQs
NyArNDA0LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBlID0gewog
CiAgICAgZ2V0IHJldGFpbmVycygpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RSZXRhaW5lckVkZ2VJdGVyYXRvcihuZXcgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFJldGFpbmVyRWRnZSh0aGlzLl9zbmFwc2hvdCwgdGhpcy5fc25hcHNob3QucmV0
YWluZXJzKHRoaXMpKSk7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFJldGFpbmVyRWRnZUl0ZXJhdG9yKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0
YWluZXJFZGdlKHRoaXMuX3NuYXBzaG90LCB0aGlzLl9zbmFwc2hvdC5fcmV0YWluZXJzRm9yTm9k
ZSh0aGlzKSkpOwogICAgIH0sCiAKICAgICBnZXQgc2VsZlNpemUoKQpAQCAtNDgyLDYgKzQ4Miw3
IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlSXRlcmF0b3IucHJvdG90eXBlID0gewog
CiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90ID0gZnVuY3Rpb24ocHJvZmlsZSkKIHsKKyAgICB0
aGlzLnVpZCA9IHByb2ZpbGUudWlkOwogICAgIHRoaXMuX25vZGVzID0gcHJvZmlsZS5ub2RlczsK
ICAgICB0aGlzLl9zdHJpbmdzID0gcHJvZmlsZS5zdHJpbmdzOwogCkBAIC01MzUsMjAgKzUzNiwy
MCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
ICAgIH0sCiAKLSAgICBnZXQgYWxsTm9kZXMoKQorICAgIGdldCBfYWxsTm9kZXMoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZUl0ZXJhdG9y
KHRoaXMucm9vdE5vZGUpOwogICAgIH0sCiAKLSAgICBnZXQgbm9kZXNDb3VudCgpCisgICAgZ2V0
IG5vZGVDb3VudCgpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fbm9kZXNDb3VudCkKLSAgICAg
ICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc0NvdW50OworICAgICAgICBpZiAodGhpcy5fbm9kZUNv
dW50KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVDb3VudDsKIAotICAgICAgICB0aGlz
Ll9ub2Rlc0NvdW50ID0gMDsKLSAgICAgICAgZm9yICh2YXIgaXRlciA9IHRoaXMuYWxsTm9kZXM7
IGl0ZXIuaGFzTmV4dCgpOyBpdGVyLm5leHQoKSkKLSAgICAgICAgICAgICsrdGhpcy5fbm9kZXND
b3VudDsKLSAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzQ291bnQ7CisgICAgICAgIHRoaXMuX25v
ZGVDb3VudCA9IDA7CisgICAgICAgIGZvciAodmFyIGl0ZXIgPSB0aGlzLl9hbGxOb2RlczsgaXRl
ci5oYXNOZXh0KCk7IGl0ZXIubmV4dCgpKQorICAgICAgICAgICAgKyt0aGlzLl9ub2RlQ291bnQ7
CisgICAgICAgIHJldHVybiB0aGlzLl9ub2RlQ291bnQ7CiAgICAgfSwKIAogICAgIHJlc3RvcmU6
IGZ1bmN0aW9uKHByb2ZpbGUpCkBAIC01NjIsNiArNTYzLDExIEBAIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3ROb2RlKHRoaXMsIHRoaXMuX3Jvb3ROb2RlSW5kZXgpOwogICAgIH0sCiAKKyAg
ICBnZXQgcm9vdE5vZGVJbmRleCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcm9vdE5v
ZGVJbmRleDsKKyAgICB9LAorCiAgICAgZ2V0IHRvdGFsU2l6ZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5yb290Tm9kZS5yZXRhaW5lZFNpemU7CkBAIC01NjksMTIgKzU3NSwxNyBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKIAogICAgIGhhc0lkOiBmdW5j
dGlvbihpZCkKICAgICB7CisgICAgICAgIHJldHVybiB0aGlzLm5vZGVJZHMuYmluYXJ5SW5kZXhP
ZihpZCwgdGhpcy5fbnVtYmVyc0NvbXBhcmF0b3IpID49IDA7CisgICAgfSwKKworICAgIGdldCBu
b2RlSWRzKCkKKyAgICB7CiAgICAgICAgIGlmICghdGhpcy5faWRzTGlzdCkKICAgICAgICAgICAg
IHRoaXMuX2J1aWxkSWRzTGlzdCgpOwotICAgICAgICByZXR1cm4gdGhpcy5faWRzTGlzdC5iaW5h
cnlJbmRleE9mKGlkLCB0aGlzLl9udW1iZXJzQ29tcGFyYXRvcikgPj0gMDsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2lkc0xpc3Q7CiAgICAgfSwKIAotICAgIHJldGFpbmVyczogZnVuY3Rpb24obm9k
ZSkKKyAgICBfcmV0YWluZXJzRm9yTm9kZTogZnVuY3Rpb24obm9kZSkKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5fcmV0YWluZXJzKQogICAgICAgICAgICAgdGhpcy5fYnVpbGRSZXRhaW5lcnMo
KTsKQEAgLTYwMSw3ICs2MTIsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fcmV0YWluZXJJbmRleCA9IG5ldyBBcnJheSh0aGlzLl9ub2Rl
SW5kZXgubGVuZ3RoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSB0aGlzLl9yZXRhaW5l
ckluZGV4Lmxlbmd0aDsgaSA8IGw7ICsraSkKICAgICAgICAgICAgIHRoaXMuX3JldGFpbmVySW5k
ZXhbaV0gPSAwOwotICAgICAgICBmb3IgKHZhciBub2Rlc0l0ZXIgPSB0aGlzLmFsbE5vZGVzOyBu
b2Rlc0l0ZXIuaGFzTmV4dCgpOyBub2Rlc0l0ZXIubmV4dCgpKSB7CisgICAgICAgIGZvciAodmFy
IG5vZGVzSXRlciA9IHRoaXMuX2FsbE5vZGVzOyBub2Rlc0l0ZXIuaGFzTmV4dCgpOyBub2Rlc0l0
ZXIubmV4dCgpKSB7CiAgICAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzSXRlci5ub2RlOwogICAg
ICAgICAgICAgZm9yICh2YXIgZWRnZXNJdGVyID0gbm9kZS5lZGdlczsgZWRnZXNJdGVyLmhhc05l
eHQoKTsgZWRnZXNJdGVyLm5leHQoKSkgewogICAgICAgICAgICAgICAgIHZhciBlZGdlID0gZWRn
ZXNJdGVyLmVkZ2U7CkBAIC02MjAsNyArNjMxLDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9yZXRhaW5lckluZGV4W2ldID0gcmV0
YWluZXJQb3NpdGlvbjsKICAgICAgICAgICAgIHJldGFpbmVyUG9zaXRpb24gKz0gcmV0YWluZXJD
b3VudDsKICAgICAgICAgfQotICAgICAgICBmb3IgKG5vZGVzSXRlciA9IHRoaXMuYWxsTm9kZXM7
IG5vZGVzSXRlci5oYXNOZXh0KCk7IG5vZGVzSXRlci5uZXh0KCkpIHsKKyAgICAgICAgZm9yIChu
b2Rlc0l0ZXIgPSB0aGlzLl9hbGxOb2Rlczsgbm9kZXNJdGVyLmhhc05leHQoKTsgbm9kZXNJdGVy
Lm5leHQoKSkgewogICAgICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc0l0ZXIubm9kZTsKICAgICAg
ICAgICAgIGZvciAodmFyIGVkZ2VzSXRlciA9IG5vZGUuZWRnZXM7IGVkZ2VzSXRlci5oYXNOZXh0
KCk7IGVkZ2VzSXRlci5uZXh0KCkpIHsKICAgICAgICAgICAgICAgICB2YXIgZWRnZSA9IGVkZ2Vz
SXRlci5lZGdlOwpAQCAtNjM1LDcgKzY0Niw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlID0gewogICAgIF9idWlsZEFnZ3JlZ2F0ZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXMgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgaXRlciA9IHRo
aXMuYWxsTm9kZXM7IGl0ZXIuaGFzTmV4dCgpOyBpdGVyLm5leHQoKSkgeworICAgICAgICBmb3Ig
KHZhciBpdGVyID0gdGhpcy5fYWxsTm9kZXM7IGl0ZXIuaGFzTmV4dCgpOyBpdGVyLm5leHQoKSkg
ewogICAgICAgICAgICAgdmFyIG5vZGUgPSBpdGVyLm5vZGU7CiAgICAgICAgICAgICB2YXIgY2xh
c3NOYW1lID0gbm9kZS5jbGFzc05hbWU7CiAgICAgICAgICAgICB2YXIgbmFtZU1hdHRlcnMgPSBu
b2RlLnR5cGUgPT09ICJvYmplY3QiIHx8IG5vZGUudHlwZSA9PT0gIm5hdGl2ZSI7CkBAIC02NTMs
NyArNjY0LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAKICAg
ICBfYnVpbGRBZ2dyZWdhdGVzSW5kZXhlczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgZm9y
ICh2YXIgaXRlciA9IHRoaXMuYWxsTm9kZXM7IGl0ZXIuaGFzTmV4dCgpOyBpdGVyLm5leHQoKSkg
eworICAgICAgICBmb3IgKHZhciBpdGVyID0gdGhpcy5fYWxsTm9kZXM7IGl0ZXIuaGFzTmV4dCgp
OyBpdGVyLm5leHQoKSkgewogICAgICAgICAgICAgdmFyIG5vZGUgPSBpdGVyLm5vZGU7CiAgICAg
ICAgICAgICB2YXIgY2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWU7CiAgICAgICAgICAgICB2YXIg
Y2xzcyA9IHRoaXMuX2FnZ3JlZ2F0ZXNbY2xhc3NOYW1lXTsKQEAgLTY3NywxMCArNjg4LDEwIEBA
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgIF9idWlsZElkc0xp
c3Q6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBjb3VudCA9IDA7Ci0gICAgICAgIGZv
ciAodmFyIG5vZGVzSXRlciA9IHRoaXMuYWxsTm9kZXM7IG5vZGVzSXRlci5oYXNOZXh0KCk7IG5v
ZGVzSXRlci5uZXh0KCksICsrY291bnQpOworICAgICAgICBmb3IgKHZhciBub2Rlc0l0ZXIgPSB0
aGlzLl9hbGxOb2Rlczsgbm9kZXNJdGVyLmhhc05leHQoKTsgbm9kZXNJdGVyLm5leHQoKSwgKytj
b3VudCk7CiAgICAgICAgIHRoaXMuX2lkc0xpc3QgPSBuZXcgQXJyYXkoY291bnQpOwogICAgICAg
ICBjb3VudCA9IDA7Ci0gICAgICAgIGZvciAobm9kZXNJdGVyID0gdGhpcy5hbGxOb2Rlczsgbm9k
ZXNJdGVyLmhhc05leHQoKTsgbm9kZXNJdGVyLm5leHQoKSwgKytjb3VudCkKKyAgICAgICAgZm9y
IChub2Rlc0l0ZXIgPSB0aGlzLl9hbGxOb2Rlczsgbm9kZXNJdGVyLmhhc05leHQoKTsgbm9kZXNJ
dGVyLm5leHQoKSwgKytjb3VudCkKICAgICAgICAgICAgIHRoaXMuX2lkc0xpc3RbY291bnRdID0g
bm9kZXNJdGVyLm5vZGUuaWQ7CiAgICAgICAgIHRoaXMuX2lkc0xpc3Quc29ydCh0aGlzLl9udW1i
ZXJzQ29tcGFyYXRvcik7CiAgICAgfSwKQEAgLTY4OCwxMCArNjk5LDEwIEBAIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgIF9idWlsZE5vZGVJbmRleDogZnVuY3Rp
b24oKQogICAgIHsKICAgICAgICAgdmFyIGNvdW50ID0gMDsKLSAgICAgICAgZm9yICh2YXIgbm9k
ZXNJdGVyID0gdGhpcy5hbGxOb2Rlczsgbm9kZXNJdGVyLmhhc05leHQoKTsgbm9kZXNJdGVyLm5l
eHQoKSwgKytjb3VudCk7CisgICAgICAgIGZvciAodmFyIG5vZGVzSXRlciA9IHRoaXMuX2FsbE5v
ZGVzOyBub2Rlc0l0ZXIuaGFzTmV4dCgpOyBub2Rlc0l0ZXIubmV4dCgpLCArK2NvdW50KTsKICAg
ICAgICAgdGhpcy5fbm9kZUluZGV4ID0gbmV3IEFycmF5KGNvdW50ICsgMSk7CiAgICAgICAgIGNv
dW50ID0gMDsKLSAgICAgICAgZm9yIChub2Rlc0l0ZXIgPSB0aGlzLmFsbE5vZGVzOyBub2Rlc0l0
ZXIuaGFzTmV4dCgpOyBub2Rlc0l0ZXIubmV4dCgpLCArK2NvdW50KQorICAgICAgICBmb3IgKG5v
ZGVzSXRlciA9IHRoaXMuX2FsbE5vZGVzOyBub2Rlc0l0ZXIuaGFzTmV4dCgpOyBub2Rlc0l0ZXIu
bmV4dCgpLCArK2NvdW50KQogICAgICAgICAgICAgdGhpcy5fbm9kZUluZGV4W2NvdW50XSA9IG5v
ZGVzSXRlci5pbmRleDsKICAgICAgICAgdGhpcy5fbm9kZUluZGV4W2NvdW50XSA9IHRoaXMuX25v
ZGVzLmxlbmd0aDsKICAgICB9LApAQCAtNzYxLDcgKzc3Miw2IEBAIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvciA9IGZ1bmN0aW9uKGl0ZXJhdG9yLCBmaWx0
ZXIpCiAgICAgdGhpcy5faXRlcmF0aW9uT3JkZXIgPSBudWxsOwogICAgIHRoaXMuX3Bvc2l0aW9u
ID0gMDsKICAgICB0aGlzLl9sYXN0Q29tcGFyYXRvciA9IG51bGw7Ci0gICAgdGhpcy5faW5zdGFu
Y2VzQ291bnQgPSAwOwogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRl
cmVkSXRlcmF0b3IucHJvdG90eXBlID0gewpAQCAtNzkwLDE2ICs4MDAsNiBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IucHJvdG90eXBlID0gewogICAg
ICAgICByZXR1cm4gdGhpcy5fcG9zaXRpb24gPCB0aGlzLl9pdGVyYXRpb25PcmRlci5sZW5ndGg7
CiAgICAgfSwKIAotICAgIGluY0luc3RhbmNlc0NvdW50OiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICArK3RoaXMuX2luc3RhbmNlc0NvdW50OwotICAgIH0sCi0KLSAgICBnZXQgaW5zdGFuY2Vz
Q291bnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlc0NvdW50OwotICAg
IH0sCi0KICAgICBnZXQgaXNFbXB0eSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faXRlcmF0
aW9uT3JkZXIpCkBAIC04MjAsMTEgKzgyMCw2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RG
aWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9pdGVyYXRvci5pdGVtOwogICAgIH0sCiAKLSAgICBnZXQgbGFzdENvbXBhcmF0b3IoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RDb21wYXJhdG9yOwotICAgIH0sCi0KICAgICBn
ZXQgbGVuZ3RoKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5faXRlcmF0aW9uT3JkZXIpCkBA
IC04MzYsMTEgKzgzMSw2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVy
ZWRJdGVyYXRvci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICArK3RoaXMuX3Bvc2l0aW9u
OwogICAgIH0sCi0KLSAgICByZXNldEluc3RhbmNlc0NvdW50OiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICB0aGlzLl9pbnN0YW5jZXNDb3VudCA9IDA7Ci0gICAgfQogfQogCiBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IucHJvdG90eXBlLmNyZWF0ZUNv
bXBhcmF0b3IgPSBmdW5jdGlvbihmaWVsZE5hbWVzKQpAQCAtODQ4LDEwICs4MzgsMTEgQEAgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZS5j
cmVhdGVDb21wYXJhdG9yID0gZnUKICAgICByZXR1cm4ge2ZpZWxkTmFtZTE6ZmllbGROYW1lc1sw
XSwgYXNjZW5kaW5nMTpmaWVsZE5hbWVzWzFdLCBmaWVsZE5hbWUyOmZpZWxkTmFtZXNbMl0sIGFz
Y2VuZGluZzI6ZmllbGROYW1lc1szXX07CiB9CiAKLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RF
ZGdlc1Byb3ZpZGVyID0gZnVuY3Rpb24oc25hcHNob3QsIHJhd0VkZ2VzLCBmaWx0ZXIpCitXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNQcm92aWRlciA9IGZ1bmN0aW9uKHNuYXBzaG90LCBu
b2RlSW5kZXgsIGZpbHRlcikKIHsKICAgICB0aGlzLnNuYXBzaG90ID0gc25hcHNob3Q7Ci0gICAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLmNhbGwodGhp
cywgbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlSXRlcmF0b3IobmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RFZGdlKHNuYXBzaG90LCByYXdFZGdlcykpLCBmaWx0ZXIpOworICAg
IHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKHNuYXBzaG90LCBu
b2RlSW5kZXgpOworICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJ
dGVyYXRvci5jYWxsKHRoaXMsIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZUl0ZXJh
dG9yKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZShzbmFwc2hvdCwgbm9kZS5yYXdF
ZGdlcykpLCBmaWx0ZXIpOwogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNQcm92
aWRlci5wcm90b3R5cGUgPSB7CkBAIC05MzEsMTAgKzkyMiwxMCBAQCBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90RWRnZXNQcm92aWRlci5wcm90b3R5cGUgPSB7CiAKIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RFZGdlc1Byb3ZpZGVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IucHJvdG90eXBlOwogCi1XZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlciA9IGZ1bmN0aW9uKHNuYXBzaG90LCBub2Rl
cywgZmlsdGVyKQorV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIgPSBmdW5j
dGlvbihzbmFwc2hvdCwgZmlsdGVyKQogewogICAgIHRoaXMuc25hcHNob3QgPSBzbmFwc2hvdDsK
LSAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IuY2Fs
bCh0aGlzLCBub2RlcywgZmlsdGVyKTsKKyAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Rmls
dGVyZWRPcmRlcmVkSXRlcmF0b3IuY2FsbCh0aGlzLCBzbmFwc2hvdC5fYWxsTm9kZXMsIGZpbHRl
cik7CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyLnByb3RvdHlw
ZSA9IHsK
</data>
<flag name="review"
          id="79539"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="79540"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
      

    </bug>

</bugzilla>