<?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>74391</bug_id>
          
          <creation_ts>2011-12-13 01:58:22 -0800</creation_ts>
          <short_desc>Web Inspector: make ProfilesPanel scale as the number of ProfileTypes grows</short_desc>
          <delta_ts>2011-12-15 01:37:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>74004</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>mnaganov</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>519963</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-13 01:58:22 -0800</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519992</commentid>
    <comment_count>1</comment_count>
      <attachid>118987</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-13 02:54:25 -0800</bug_when>
    <thetext>Created attachment 118987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520003</commentid>
    <comment_count>2</comment_count>
      <attachid>118987</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-13 03:28:06 -0800</bug_when>
    <thetext>Comment on attachment 118987
Patch

Few things are broken here: there is no need to take concurrent profiles. And profiled agent should only do CPU profiling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520005</commentid>
    <comment_count>3</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-13 03:31:27 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 118987 [details])
&gt; Few things are broken here: there is no need to take concurrent profiles. And profiled agent should only do CPU profiling.

Could you please be more verbose and suggest the desired approach? From our last discussion offline I gained an impression that the entire thing should be exposed through the Profiles panel, which quite logically interacts with the InspectorProfilerAgent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520006</commentid>
    <comment_count>4</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-13 03:33:37 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 118987 [details])
[snip]
&gt; And profiled agent should only do CPU profiling.

As a side note, currently InspectorProfilerAgent deals not only with CPU profiling but also with heap snapshotting which is quite a different thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520022</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-13 04:18:17 -0800</bug_when>
    <thetext>&gt; Could you please be more verbose and suggest the desired approach? From our last discussion offline I gained an impression that the entire thing should be exposed through the Profiles panel, which quite logically interacts with the InspectorProfilerAgent.

InspectorProfilerAgent is responsible for the JavaScript profiling domain. Instead of putting more things into it, we should extract heap profiling routines from it into a separate agent. So we do expose various profilings in the Profiles panel, but you should use different agents for that. In case of CSS profiling, it would make more sense to put corresponding backend routines into the CSS domain agent.

The other thing is that taking several profiles at a time is fundamentally wrong. Any background activity is skewing the profile. We are currently working on disabling unrelated agents while CPU profiling. Enabling concurrent profiles is moving us in the opposite direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520026</commentid>
    <comment_count>6</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-12-13 04:25:51 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 118987 [details] [details])
&gt; [snip]
&gt; &gt; And profiled agent should only do CPU profiling.
&gt; 
&gt; As a side note, currently InspectorProfilerAgent deals not only with CPU profiling but also with heap snapshotting which is quite a different thing.

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

&gt; Source/WebCore/inspector/InspectorProfilerAgent.cpp:310
&gt; +        String title = getCurrentUserInitiatedProfileName(true);

That means, we will share m_currentUserInitiatedProfileNumber for all kinds of profiles. Are you OK with that?

&gt; Source/WebCore/inspector/InspectorProfilerAgent.cpp:340
&gt; +        String title = getCurrentUserInitiatedProfileName();

Hmm. Will it be possible to have two profiles of different kinds started in parallel? If yes, you&apos;ll have a problem with a shared counter here.

&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:825
&gt; +        return this[&quot;_temporaryRecordingProfile&quot; + profileType];

Ouch. Perhaps, using a map object called &quot;this._temporaryRecordingProfile&quot; with entries for profileTypes will look better?

&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:840
&gt;                      title: WebInspector.UIString(&quot;Recordingâ¦&quot;),

Not your fault, but could I ask you to change the string to use a char code for ellipsis, please?

&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:862
&gt;                      title: WebInspector.UIString(&quot;Snapshottingâ¦&quot;),

And here as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520877</commentid>
    <comment_count>7</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-14 05:35:07 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Could you please be more verbose and suggest the desired approach? From our last discussion offline I gained an impression that the entire thing should be exposed through the Profiles panel, which quite logically interacts with the InspectorProfilerAgent.
&gt; 
&gt; InspectorProfilerAgent is responsible for the JavaScript profiling domain. Instead of putting more things into it, we should extract heap profiling routines from it into a separate agent. So we do expose various profilings in the Profiles panel, but you should use different agents for that. In case of CSS profiling, it would make more sense to put corresponding backend routines into the CSS domain agent.

Got it, will do.

&gt; The other thing is that taking several profiles at a time is fundamentally wrong. Any background activity is skewing the profile. We are currently working on disabling unrelated agents while CPU profiling. Enabling concurrent profiles is moving us in the opposite direction.

Good point. Do we have a thought-out approach that scales relative to the number of different profile types? Shall we forbid launching of other profile types?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520959</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-14 08:48:51 -0800</bug_when>
    <thetext>&gt; Good point. Do we have a thought-out approach that scales relative to the number of different profile types? Shall we forbid launching of other profile types?

I think we should do a welcome page on the ProfilesPanel much like we have one for the Audits. That&apos;s the place where users will start various profiles (instead of the poorly discoverable icons in the status bar). Then we simply forbit taking a new profile while some profiling is running. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520969</commentid>
    <comment_count>9</comment_count>
      <attachid>119227</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-14 08:59:08 -0800</bug_when>
    <thetext>Created attachment 119227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521711</commentid>
    <comment_count>10</comment_count>
      <attachid>119227</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-15 00:14:06 -0800</bug_when>
    <thetext>Comment on attachment 119227
Patch

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

&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:506
&gt; +    updateProfileTypeButtons: function(isProfiling, effectButton)

Please annotate this using jsdoc.

&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:759
&gt; +                this._profileTypeButtonsByIdMap[typeId].element.removeStyleClass(&quot;hidden&quot;);

this._profileTypeButtonsByIdMap[typeId].visible = true;

&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:767
&gt; +                this._profileTypeButtonsByIdMap[typeId].element.addStyleClass(&quot;hidden&quot;);

this._profileTypeButtonsByIdMap[typeId].visible = false;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521743</commentid>
    <comment_count>11</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-15 01:37:48 -0800</bug_when>
    <thetext>Committed r102906: &lt;http://trac.webkit.org/changeset/102906&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118987</attachid>
            <date>2011-12-13 02:54:25 -0800</date>
            <delta_ts>2011-12-14 08:58:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74391-20111213145423.patch</filename>
            <type>text/plain</type>
            <size>20942</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjEyM2ZiZjViOGU3NWVm
YzdmZTQwMTg4NWNjOWE5N2EzN2Q2ZDU3OC4uNTllMmVmMDMzMTJkMDZmMGIwMzkwOTAyMDg1YThk
ZTE0YWJmN2Y2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDExLTEyLTEzICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogRW5hYmxlIHNldmVyYWwgcHJvZmlsZSB0eXBlcyB0byBiZSByZWNvcmRlZCBjb25jdXJy
ZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0
MzkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBhcyB0aGlzIGlzIGEgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBFbmdsaXNo
Lmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvclByb2Zp
bGVyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVt
b3ZlUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50Ojpy
ZXNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNs
ZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnRvZ2dsZVJlY29yZEJ1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRPYmplY3RC
eUhlYXBPYmplY3RJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLnByb3RvdHlwZS5nZXQgYnV0dG9uVG9v
bHRpcCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlLmdl
dCBidXR0b25TdHlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJv
dG90eXBlLmJ1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVU
eXBlLnByb3RvdHlwZS5zdGFydFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNQVVByb2ZpbGVUeXBlLnByb3RvdHlwZS5zdG9wUmVjb3JkaW5nUHJvZmlsZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9hZGRQcm9maWxlSGVhZGVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fZ2V0VGVtcG9yYXJ5
UmVjb3JkaW5nUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5w
cm90b3R5cGUuX3NldFRlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9zZXRSZWNvcmRpbmdQcm9maWxlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS50YWtlSGVhcFNuYXBz
aG90KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fcmVw
b3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVy
RGlzcGF0Y2hlci5wcm90b3R5cGUuc2V0UmVjb3JkaW5nUHJvZmlsZSk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAgICAoLnJlY29yZC1jcHUtcHJv
ZmlsZS1zdGF0dXMtYmFyLWl0ZW0gLmdseXBoKToKKyAgICAgICAgKC5yZWNvcmQtY3B1LXByb2Zp
bGUtc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoKToKKwogMjAxMS0xMi0xMyAgWW9z
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuZGVyVGhlbWUg
c2hvdWxkIGhhdmUgYSBmdW5jdGlvbiBmb3IgZGlzYWJsZWQgdGV4dCBjb2xvciBhZGp1c3RtZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMK
aW5kZXggYjQzNDMwNDE0NzBlYTczZDhlN2IxMTQzNzUwNzFkYjAzZDg1OGQ4Mi4uODc3NzVhMTdi
OWQwMGQxYjU1MWYyNjAxNTMxYjg5NzE3MzkwOGIzNSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApk
ZWx0YSA1NQp6Y21kbjZmI3QjbW1KUmIzT2IjJVhuI3tMUTNRV0lTWUF8YClmYHJYRTMqQV90NTw8
LVIzPFo7WWpiJTUjVGsyRTwKRTBHRTBldE47SzIKCmRlbHRhIDU5CnpjbWNieGZuQF5fJjA4PjhX
bnNpKnhySjwjTWZgOygtJnJhJio9OFhKbjlhQSRVfnw8JTQ7SDl8MWM9X3V4NkcqcwpFME9+TG9i
cFFZVwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
biBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCAxMmJhM2M2
M2FhNDFlODI5MTY4MjQ5YjhjZWVhZDc1MmI0MjMxOGYzLi5lNzNlM2M2MWZlNDQ2MGQwNTVlMGY1
NzZkYzk2MThiZjRjZGEzNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCkBAIC0yMTUzLDEwICsyMTUzLDE2IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGlz
YWJsZSIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIm5h
bWUiOiAic3RhcnQiCisgICAgICAgICAgICAgICAgIm5hbWUiOiAic3RhcnQiLAorICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBy
b2ZpbGVUeXBlIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlByb2ZpbGUgdHlw
ZSB0byBzdGFydCByZWNvcmRpbmcuIiB9CisgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAg
fSwKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJzdG9wIgorICAgICAg
ICAgICAgICAgICJuYW1lIjogInN0b3AiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByb2ZpbGVUeXBlIiwgInR5cGUiOiAi
c3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlByb2ZpbGUgdHlwZSB0byBzdG9wIHJlY29yZGluZy4i
IH0KKyAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICJuYW1lIjogImdldFByb2ZpbGVIZWFkZXJzIiwKQEAgLTIyMjMsNiArMjIy
OSw3IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAic2V0UmVjb3Jk
aW5nUHJvZmlsZSIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAicHJvZmlsZVR5cGUiLCAidHlwZSI6ICJzdHJpbmciIH0sCiAg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNQcm9maWxpbmciLCAidHlwZSI6ICJib29s
ZWFuIiB9CiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRleCAyMjI4
MjIzMjRhMjk1MzY5NGRkZDg5Zjg2ZGIwYTZmZTgzOGRjMjI1Li5iMjEyNGY0ZWNlMWI4Y2ZkYzIy
Mzc0Mjc2NGI2YjY3Yjc1OGViN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBQcm9maWxlckFnZW50U3RhdGUgewotc3RhdGljIGNv
bnN0IGNoYXIgdXNlckluaXRpYXRlZFByb2ZpbGluZ1tdID0gInVzZXJJbml0aWF0ZWRQcm9maWxp
bmciOworc3RhdGljIGNvbnN0IGNoYXIgdXNlckluaXRpYXRlZENQVVByb2ZpbGluZ1tdID0gInVz
ZXJJbml0aWF0ZWRDUFVQcm9maWxpbmciOwogc3RhdGljIGNvbnN0IGNoYXIgcHJvZmlsZXJFbmFi
bGVkW10gPSAicHJvZmlsZXJFbmFibGVkIjsKIH0KIApAQCAtNzQsNyArNzQsNyBAQCBJbnNwZWN0
b3JQcm9maWxlckFnZW50OjpJbnNwZWN0b3JQcm9maWxlckFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbgogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQogICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9lbmFibGVkKGZhbHNl
KQotICAgICwgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZShmYWxzZSkKKyAgICAsIG1f
cmVjb3JkaW5nVXNlckluaXRpYXRlZENQVVByb2ZpbGUoZmFsc2UpCiAgICAgLCBtX2N1cnJlbnRV
c2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcigtMSkKICAgICAsIG1fbmV4dFVzZXJJbml0aWF0ZWRQ
cm9maWxlTnVtYmVyKDEpCiAgICAgLCBtX25leHRVc2VySW5pdGlhdGVkSGVhcFNuYXBzaG90TnVt
YmVyKDEpCkBAIC0xMzcsNyArMTM3LDYgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVNuYXBzaG90SGVhZGVyKGNvbnN0IFMKICAgICBy
ZXR1cm4gaGVhZGVyOwogfQogCi0KIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y2F1c2Vz
UmVjb21waWxhdGlvbihFcnJvclN0cmluZyosIGJvb2wqIHJlc3VsdCkKIHsKICAgICAqcmVzdWx0
ID0gU2NyaXB0UHJvZmlsZXI6OmNhdXNlc1JlY29tcGlsYXRpb24oKTsKQEAgLTI0MiwxOCArMjQx
LDE1IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5zaWduCiAKIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6cmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5z
aWduZWQgdWlkKQogewotICAgIGlmICh0eXBlID09IENQVVByb2ZpbGVUeXBlKSB7Ci0gICAgICAg
IGlmIChtX3Byb2ZpbGVzLmNvbnRhaW5zKHVpZCkpCi0gICAgICAgICAgICBtX3Byb2ZpbGVzLnJl
bW92ZSh1aWQpOwotICAgIH0gZWxzZSBpZiAodHlwZSA9PSBIZWFwUHJvZmlsZVR5cGUpIHsKLSAg
ICAgICAgaWYgKG1fc25hcHNob3RzLmNvbnRhaW5zKHVpZCkpCi0gICAgICAgICAgICBtX3NuYXBz
aG90cy5yZW1vdmUodWlkKTsKLSAgICB9CisgICAgaWYgKHR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUp
CisgICAgICAgIG1fcHJvZmlsZXMucmVtb3ZlKHVpZCk7CisgICAgZWxzZSBpZiAodHlwZSA9PSBI
ZWFwUHJvZmlsZVR5cGUpCisgICAgICAgIG1fc25hcHNob3RzLnJlbW92ZSh1aWQpOwogfQogCiB2
b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc2V0U3RhdGUoKQogewotICAgIHN0b3AoKTsK
KyAgICBzdG9wKDAsIENQVVByb2ZpbGVUeXBlKTsKICAgICBtX3Byb2ZpbGVzLmNsZWFyKCk7CiAg
ICAgbV9zbmFwc2hvdHMuY2xlYXIoKTsKICAgICBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmls
ZU51bWJlciA9IDE7CkBAIC0yNzgsNyArMjc0LDcgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB2b2lkIEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQogewogICAgIG1fZnJvbnRlbmQgPSAw
OwotICAgIHN0b3AoKTsKKyAgICBzdG9wKDAsIENQVVByb2ZpbGVUeXBlKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXN0b3JlKCkKQEAgLTI4OCw4ICsyODQsOCBAQCB2b2lk
IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc3RvcmUoKQogCiAgICAgLy8gUmV2aXNpdCB0aGlz
LgogICAgIHJlc2V0RnJvbnRlbmRQcm9maWxlcygpOwotICAgIGlmIChtX3N0YXRlLT5nZXRCb29s
ZWFuKFByb2ZpbGVyQWdlbnRTdGF0ZTo6dXNlckluaXRpYXRlZFByb2ZpbGluZykpCi0gICAgICAg
IHN0YXJ0KCk7CisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oUHJvZmlsZXJBZ2VudFN0YXRl
Ojp1c2VySW5pdGlhdGVkQ1BVUHJvZmlsaW5nKSkKKyAgICAgICAgc3RhcnQoMCwgQ1BVUHJvZmls
ZVR5cGUpOwogfQogCiB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc3RvcmVFbmFibGVt
ZW50KCkKQEAgLTMwMCw0NSArMjk2LDU4IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
cmVzdG9yZUVuYWJsZW1lbnQoKQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpzdGFydChFcnJvclN0cmluZyopCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnN0
YXJ0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBwcm9maWxlVHlwZSkK
IHsKLSAgICBpZiAobV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmICghZW5hYmxlZCgpKSB7Ci0gICAgICAgIGVuYWJsZSh0cnVlKTsKLSAgICAg
ICAgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9u
cygwKTsKLSAgICB9Ci0gICAgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSA9IHRydWU7
Ci0gICAgU3RyaW5nIHRpdGxlID0gZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSh0
cnVlKTsKKyAgICBpZiAocHJvZmlsZVR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUpIHsKKyAgICAgICAg
aWYgKG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZENQVVByb2ZpbGUpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZENQVVByb2ZpbGUgPSB0cnVlOwor
CisgICAgICAgIGlmICghZW5hYmxlZCgpKSB7CisgICAgICAgICAgICBlbmFibGUodHJ1ZSk7Cisg
ICAgICAgICAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJlY29tcGlsZUFsbEpT
RnVuY3Rpb25zKDApOworICAgICAgICB9CisgICAgICAgIFN0cmluZyB0aXRsZSA9IGdldEN1cnJl
bnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUodHJ1ZSk7CiAjaWYgVVNFKEpTQykKLSAgICBKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSB0b0pTRE9NV2luZG93KG1faW5zcGVjdGVkUGFnZS0+
bWFpbkZyYW1lKCksIGRlYnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSlND
OjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gdG9KU0RPTVdpbmRvdyhtX2luc3BlY3RlZFBhZ2Ut
Pm1haW5GcmFtZSgpLCBkZWJ1Z2dlcldvcmxkKCkpLT5nbG9iYWxFeGVjKCk7CiAjZWxzZQotICAg
IFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IDA7CisgICAgICAgIFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZSA9IDA7CiAjZW5kaWYKLSAgICBTY3JpcHRQcm9maWxlcjo6c3RhcnQoc2NyaXB0U3Rh
dGUsIHRpdGxlKTsKLSAgICBhZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUodGl0bGUs
IDAsIFN0cmluZygpKTsKLSAgICB0b2dnbGVSZWNvcmRCdXR0b24odHJ1ZSk7Ci0gICAgbV9zdGF0
ZS0+c2V0Qm9vbGVhbihQcm9maWxlckFnZW50U3RhdGU6OnVzZXJJbml0aWF0ZWRQcm9maWxpbmcs
IHRydWUpOworICAgICAgICBTY3JpcHRQcm9maWxlcjo6c3RhcnQoc2NyaXB0U3RhdGUsIHRpdGxl
KTsKKyAgICAgICAgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKHRpdGxlLCAwLCBl
bXB0eVN0cmluZygpKTsKKyAgICAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQcm9maWxlckFnZW50
U3RhdGU6OnVzZXJJbml0aWF0ZWRDUFVQcm9maWxpbmcsIHRydWUpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmIChlcnJvclN0cmluZykKKyAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJVbmtu
b3duIHByb2ZpbGUgdHlwZSI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdG9nZ2xlUmVj
b3JkQnV0dG9uKHByb2ZpbGVUeXBlLCB0cnVlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpzdG9wKEVycm9yU3RyaW5nKikKK3ZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
c3RvcChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcHJvZmlsZVR5cGUp
CiB7Ci0gICAgaWYgKCFtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSA9IGZhbHNlOwotICAg
IFN0cmluZyB0aXRsZSA9IGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoKTsKKyAg
ICBpZiAocHJvZmlsZVR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUpIHsKKyAgICAgICAgaWYgKCFtX3Jl
Y29yZGluZ1VzZXJJbml0aWF0ZWRDUFVQcm9maWxlKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRDUFVQcm9maWxlID0gZmFsc2U7CiAjaWYgVVNF
KEpTQykKLSAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSB0b0pTRE9NV2luZG93KG1f
aW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCksIGRlYnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4ZWMo
KTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gdG9KU0RPTVdpbmRvdyht
X2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLCBkZWJ1Z2dlcldvcmxkKCkpLT5nbG9iYWxFeGVj
KCk7CiAjZWxzZQotICAgIC8vIFVzZSBudWxsIHNjcmlwdCBzdGF0ZSB0byBhdm9pZCBmaWx0ZXJp
bmcgYnkgY29udGV4dCBzZWN1cml0eSB0b2tlbi4KLSAgICAvLyBBbGwgZnVuY3Rpb25zIGZyb20g
YWxsIGlmcmFtZXMgc2hvdWxkIGJlIHZpc2libGUgZnJvbSBJbnNwZWN0b3IgVUkuCi0gICAgU2Ny
aXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gMDsKKyAgICAgICAgLy8gVXNlIG51bGwgc2NyaXB0IHN0
YXRlIHRvIGF2b2lkIGZpbHRlcmluZyBieSBjb250ZXh0IHNlY3VyaXR5IHRva2VuLgorICAgICAg
ICAvLyBBbGwgZnVuY3Rpb25zIGZyb20gYWxsIGlmcmFtZXMgc2hvdWxkIGJlIHZpc2libGUgZnJv
bSBJbnNwZWN0b3IgVUkuCisgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IDA7CiAj
ZW5kaWYKLSAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IFNjcmlwdFByb2ZpbGVy
OjpzdG9wKHNjcmlwdFN0YXRlLCB0aXRsZSk7Ci0gICAgaWYgKHByb2ZpbGUpCi0gICAgICAgIGFk
ZFByb2ZpbGUocHJvZmlsZSwgMCwgU3RyaW5nKCkpOwotICAgIHRvZ2dsZVJlY29yZEJ1dHRvbihm
YWxzZSk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQcm9maWxlckFnZW50U3RhdGU6OnVzZXJJ
bml0aWF0ZWRQcm9maWxpbmcsIGZhbHNlKTsKKyAgICAgICAgU3RyaW5nIHRpdGxlID0gZ2V0Q3Vy
cmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSgpOworICAgICAgICBSZWZQdHI8U2NyaXB0UHJv
ZmlsZT4gcHJvZmlsZSA9IFNjcmlwdFByb2ZpbGVyOjpzdG9wKHNjcmlwdFN0YXRlLCB0aXRsZSk7
CisgICAgICAgIGlmIChwcm9maWxlKQorICAgICAgICAgICAgYWRkUHJvZmlsZShwcm9maWxlLCAw
LCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQcm9maWxlckFn
ZW50U3RhdGU6OnVzZXJJbml0aWF0ZWRDUFVQcm9maWxpbmcsIGZhbHNlKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBpZiAoZXJyb3JTdHJpbmcpCisgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAi
VW5rbm93biBwcm9maWxlIHR5cGUiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRvZ2ds
ZVJlY29yZEJ1dHRvbihwcm9maWxlVHlwZSwgZmFsc2UpOwogfQogCiBuYW1lc3BhY2UgewpAQCAt
Mzc5LDEwICszODgsMTAgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0YWtlSGVhcFNu
YXBzaG90KEVycm9yU3RyaW5nKikKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6dG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpCit2b2lkIEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQ6OnRvZ2dsZVJlY29yZEJ1dHRvbihjb25zdCBTdHJpbmcmIHByb2ZpbGVU
eXBlLCBib29sIGlzUHJvZmlsaW5nKQogewogICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICBt
X2Zyb250ZW5kLT5zZXRSZWNvcmRpbmdQcm9maWxlKGlzUHJvZmlsaW5nKTsKKyAgICAgICAgbV9m
cm9udGVuZC0+c2V0UmVjb3JkaW5nUHJvZmlsZShwcm9maWxlVHlwZSwgaXNQcm9maWxpbmcpOwog
fQogCiB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVjdElk
KEVycm9yU3RyaW5nKiBlcnJvciwgaW50IGlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVz
dWx0KQpAQCAtMzkxLDcgKzQwMCw3IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0
T2JqZWN0QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQgaWQsCiAgICAgaWYg
KCFoZWFwT2JqZWN0LT5pc051bGwoKSkKICAgICAgICAgaGVhcE9iamVjdC0+YXNPYmplY3QocmVz
dWx0KTsKICAgICBlbHNlCi0gICAgICAgICplcnJvciA9ICJPYmplY3QgaXMgbm90IGF2YWlsYWJs
ZS4iOworICAgICAgICAqZXJyb3IgPSAiT2JqZWN0IGlzIG5vdCBhdmFpbGFibGUiOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuaAppbmRleCBkNDczMzkwYTM3MjE4ZWY3ODdmZjQ1NmQ1NTk2
ZTNhYjI5MmUwYWEwLi5jYjAxYmNjNjUzYTMyNjg1NjdhYzU3Yjk4OTFmMTRiNDIwMWM0OTM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50
LmgKQEAgLTc0LDggKzc0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJp
bmcqKTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2b2lkIHN0YXJ0KEVy
cm9yU3RyaW5nKiA9IDApOwotICAgIHZvaWQgc3RvcChFcnJvclN0cmluZyogPSAwKTsKKyAgICB2
b2lkIHN0YXJ0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzdG9wKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIGRpc2FibGUoKTsKICAgICB2
b2lkIGVuYWJsZShib29sIHNraXBSZWNvbXBpbGUpOwpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKIAogICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hv
dChFcnJvclN0cmluZyopOwotICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9m
aWxpbmcpOworICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGNvbnN0IFN0cmluZyYsIGJvb2wg
aXNQcm9maWxpbmcpOwogCiAgICAgdm9pZCBnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0
cmluZyosIGludCBpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CiAKQEAgLTEx
MCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OlByb2ZpbGVyKiBtX2Zy
b250ZW5kOwogICAgIGJvb2wgbV9lbmFibGVkOwotICAgIGJvb2wgbV9yZWNvcmRpbmdVc2VySW5p
dGlhdGVkUHJvZmlsZTsKKyAgICBib29sIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZENQVVByb2Zp
bGU7CiAgICAgaW50IG1fY3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyOwogICAgIHVu
c2lnbmVkIG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyOwogICAgIHVuc2lnbmVkIG1f
bmV4dFVzZXJJbml0aWF0ZWRIZWFwU25hcHNob3ROdW1iZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwppbmRleCA3NGNkM2IyZTY2YWNk
Mzg5NjIyMjYyNWE4MTU5ODdhOTE4YjJiMWE1Li40MGMwNjkwY2ZhYWQ0ODBjMGVjNTQxM2NlOWE2
Nzk2MTA5ZjIwMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Byb2ZpbGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUHJvZmlsZVZpZXcuanMKQEAgLTU3NCwxMiArNTc0LDEyIEBAIFdlYkluc3BlY3Rvci5DUFVQ
cm9maWxlVHlwZS5UeXBlSWQgPSAiQ1BVIjsKIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5w
cm90b3R5cGUgPSB7CiAgICAgZ2V0IGJ1dHRvblRvb2x0aXAoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX3JlY29yZGluZyA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RvcCBwcm9maWxp
bmcuIikgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IHByb2ZpbGluZy4iKTsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZyA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RvcCBD
UFUgcHJvZmlsaW5nLiIpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBDUFUgcHJvZmls
aW5nLiIpOwogICAgIH0sCiAKICAgICBnZXQgYnV0dG9uU3R5bGUoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX3JlY29yZGluZyA/ICJyZWNvcmQtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0g
c3RhdHVzLWJhci1pdGVtIHRvZ2dsZWQtb24iIDogInJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXIt
aXRlbSBzdGF0dXMtYmFyLWl0ZW0iOworICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nID8g
InJlY29yZC1jcHUtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1pdGVtIHRvZ2ds
ZWQtb24iIDogInJlY29yZC1jcHUtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1p
dGVtIjsKICAgICB9LAogCiAgICAgYnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQpAQCAtNTg3LDkg
KzU4Nyw5IEBAIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX3JlY29yZGluZyA9ICF0aGlzLl9yZWNvcmRpbmc7CiAKICAgICAgICAgaWYgKHRo
aXMuX3JlY29yZGluZykKLSAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuc3RhcnQoKTsKKyAgICAg
ICAgICAgIFByb2ZpbGVyQWdlbnQuc3RhcnQoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5
cGVJZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuc3RvcCgpOwor
ICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5zdG9wKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlw
ZS5UeXBlSWQpOwogICAgIH0sCiAKICAgICBnZXQgd2VsY29tZU1lc3NhZ2UoKQpAQCAtNjA1LDEz
ICs2MDUsMTMgQEAgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKICAg
ICBzdGFydFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMu
X3JlY29yZGluZyA9IHRydWU7Ci0gICAgICAgIFByb2ZpbGVyQWdlbnQuc3RhcnQoKTsKKyAgICAg
ICAgUHJvZmlsZXJBZ2VudC5zdGFydChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlk
KTsKICAgICB9LAogCiAgICAgc3RvcFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3JlY29yZGluZyA9IGZhbHNlOwotICAgICAgICBQcm9maWxlckFnZW50
LnN0b3AoKTsKKyAgICAgICAgUHJvZmlsZXJBZ2VudC5zdG9wKFdlYkluc3BlY3Rvci5DUFVQcm9m
aWxlVHlwZS5UeXBlSWQpOwogICAgIH0sCiAKICAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5j
dGlvbihpc1Byb2ZpbGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUHJvZmlsZXNQYW5lbC5qcwppbmRleCA4ZDhhOTdhMDE2OGJkOWI1NTMyNGJkZTE3N2E3
Mjc1YWViYTBmOTRhLi44Y2IxNzkyMjQ3YjM2NjQyNTRkNzVjN2MzNDcwOWFkNDg1NDVjNzJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1Bh
bmVsLmpzCkBAIC0yODYsMTIgKzI4Niw4IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnBy
b3RvdHlwZSA9IHsKIAogICAgIF9hZGRQcm9maWxlSGVhZGVyOiBmdW5jdGlvbihwcm9maWxlKQog
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMuaGFzVGVtcG9yYXJ5UHJvZmlsZShwcm9maWxlLnR5cGVJ
ZCkpIHsKLSAgICAgICAgICAgIGlmIChwcm9maWxlLnR5cGVJZCA9PT0gV2ViSW5zcGVjdG9yLkNQ
VVByb2ZpbGVUeXBlLlR5cGVJZCkKLSAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9maWxl
SGVhZGVyKHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9y
YXJ5VGFraW5nU25hcHNob3QpOwotICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLmhhc1RlbXBv
cmFyeVByb2ZpbGUocHJvZmlsZS50eXBlSWQpKQorICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJv
ZmlsZUhlYWRlcih0aGlzLl9nZXRUZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlKHByb2ZpbGUudHlw
ZUlkKSk7CiAKICAgICAgICAgdmFyIHR5cGVJZCA9IHByb2ZpbGUudHlwZUlkOwogICAgICAgICB2
YXIgcHJvZmlsZVR5cGUgPSB0aGlzLmdldFByb2ZpbGVUeXBlKHR5cGVJZCk7CkBAIC04MjQsMjMg
KzgyMCwzNSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMucHJvZmlsZVZpZXdTdGF0dXNCYXJJdGVtc0NvbnRhaW5lci5zdHlsZS5sZWZ0ID0g
TWF0aC5tYXgoNiAqIDMxLCB3aWR0aCkgKyAicHgiOwogICAgIH0sCiAKLSAgICBfc2V0UmVjb3Jk
aW5nUHJvZmlsZTogZnVuY3Rpb24oaXNQcm9maWxpbmcpCisgICAgX2dldFRlbXBvcmFyeVJlY29y
ZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGVUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXNbIl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlIiArIHByb2ZpbGVUeXBlXTsKKyAgICB9
LAorCisgICAgX3NldFRlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGVU
eXBlLCBwcm9maWxlKQorICAgIHsKKyAgICAgICAgdGhpc1siX3RlbXBvcmFyeVJlY29yZGluZ1By
b2ZpbGUiICsgcHJvZmlsZVR5cGVdID0gcHJvZmlsZTsKKyAgICB9LAorCisgICAgX3NldFJlY29y
ZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGVUeXBlLCBpc1Byb2ZpbGluZykKICAgICB7Ci0g
ICAgICAgIHRoaXMuZ2V0UHJvZmlsZVR5cGUoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5
cGVJZCkuc2V0UmVjb3JkaW5nUHJvZmlsZShpc1Byb2ZpbGluZyk7Ci0gICAgICAgIGlmICh0aGlz
Lmhhc1RlbXBvcmFyeVByb2ZpbGUoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5cGVJZCkg
IT09IGlzUHJvZmlsaW5nKSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX3RlbXBvcmFyeVJlY29y
ZGluZ1Byb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQ
cm9maWxlID0gewotICAgICAgICAgICAgICAgICAgICB0eXBlSWQ6IFdlYkluc3BlY3Rvci5DUFVQ
cm9maWxlVHlwZS5UeXBlSWQsCisgICAgICAgIHRoaXMuZ2V0UHJvZmlsZVR5cGUocHJvZmlsZVR5
cGUpLnNldFJlY29yZGluZ1Byb2ZpbGUoaXNQcm9maWxpbmcpOworICAgICAgICBpZiAodGhpcy5o
YXNUZW1wb3JhcnlQcm9maWxlKHByb2ZpbGVUeXBlKSAhPT0gaXNQcm9maWxpbmcpIHsKKyAgICAg
ICAgICAgIGlmICghdGhpcy5fZ2V0VGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZShwcm9maWxlVHlw
ZSkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXRUZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxl
KHByb2ZpbGVUeXBlLCB7CisgICAgICAgICAgICAgICAgICAgIHR5cGVJZDogcHJvZmlsZVR5cGUs
CiAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY29y
ZGluZ+KApiIpLAogICAgICAgICAgICAgICAgICAgICB1aWQ6IC0xLAogICAgICAgICAgICAgICAg
ICAgICBpc1RlbXBvcmFyeTogdHJ1ZQotICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgdGVtcG9yYXJ5UHJvZmlsZSA9
IHRoaXMuX2dldFRlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUocHJvZmlsZVR5cGUpOwogICAgICAg
ICAgICAgaWYgKGlzUHJvZmlsaW5nKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYWRkUHJvZmls
ZUhlYWRlcih0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlKTsKLSAgICAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IudXNlck1ldHJpY3MuUHJvZmlsZXNDUFVQcm9maWxlVGFrZW4ucmVjb3Jk
KCk7CisgICAgICAgICAgICAgICAgdGhpcy5fYWRkUHJvZmlsZUhlYWRlcih0ZW1wb3JhcnlQcm9m
aWxlKTsKKyAgICAgICAgICAgICAgICBpZiAocHJvZmlsZVR5cGUgPT09IFdlYkluc3BlY3Rvci5D
UFVQcm9maWxlVHlwZS5UeXBlSWQpCisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci51
c2VyTWV0cmljcy5Qcm9maWxlc0NQVVByb2ZpbGVUYWtlbi5yZWNvcmQoKTsKICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGhpcy5f
dGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZSk7CisgICAgICAgICAgICAgICAgdGhpcy5fcmVtb3Zl
UHJvZmlsZUhlYWRlcih0ZW1wb3JhcnlQcm9maWxlKTsKICAgICAgICAgfQogICAgICAgICB0aGlz
LnVwZGF0ZVByb2ZpbGVUeXBlQnV0dG9ucygpOwogICAgIH0sCkBAIC04NDgsMTUgKzg1NiwxNSBA
QCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgdGFrZUhlYXBT
bmFwc2hvdDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmhhc1RlbXBvcmFy
eVByb2ZpbGUoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5UeXBlSWQp
KSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX3RlbXBvcmFyeVRha2luZ1NuYXBzaG90KSB7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5fdGVtcG9yYXJ5VGFraW5nU25hcHNob3QgPSB7CisgICAgICAg
ICAgICBpZiAoIXRoaXMuX2dldFRlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUoV2ViSW5zcGVjdG9y
LkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5UeXBlSWQpKSB7CisgICAgICAgICAgICAgICAg
dGhpcy5fc2V0VGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZShXZWJJbnNwZWN0b3IuRGV0YWlsZWRI
ZWFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwgewogICAgICAgICAgICAgICAgICAgICB0eXBlSWQ6
IFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkLAogICAgICAg
ICAgICAgICAgICAgICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTbmFwc2hvdHRpbmfi
gKYiKSwKICAgICAgICAgICAgICAgICAgICAgdWlkOiAtMSwKICAgICAgICAgICAgICAgICAgICAg
aXNUZW1wb3Jhcnk6IHRydWUKLSAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5fYWRkUHJvZmlsZUhlYWRlcih0aGlz
Ll90ZW1wb3JhcnlUYWtpbmdTbmFwc2hvdCk7CisgICAgICAgICAgICB0aGlzLl9hZGRQcm9maWxl
SGVhZGVyKHRoaXMuX2dldFRlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUoV2ViSW5zcGVjdG9yLkRl
dGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5UeXBlSWQpKTsKICAgICAgICAgfQogICAgICAgICBQ
cm9maWxlckFnZW50LnRha2VIZWFwU25hcHNob3QoKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnVz
ZXJNZXRyaWNzLlByb2ZpbGVzSGVhcFByb2ZpbGVUYWtlbi5yZWNvcmQoKTsKQEAgLTg2NSwxMCAr
ODczLDExIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICBf
cmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3M6IGZ1bmN0aW9uKGRvbmUsIHRvdGFsKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuaGFzVGVtcG9yYXJ5UHJvZmlsZShXZWJJbnNwZWN0b3IuRGV0YWls
ZWRIZWFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCkpIHsKLSAgICAgICAgICAgIHRoaXMuX3RlbXBv
cmFyeVRha2luZ1NuYXBzaG90LnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCIlLjJmJSUiLCAoZG9uZSAvIHRvdGFsKSAqIDEwMCk7Ci0gICAgICAgICAgICB0
aGlzLl90ZW1wb3JhcnlUYWtpbmdTbmFwc2hvdC5zaWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsK
KyAgICAgICAgICAgIHZhciB0ZW1wU25hcHNob3QgPSB0aGlzLl9nZXRUZW1wb3JhcnlSZWNvcmRp
bmdQcm9maWxlKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlk
KTsKKyAgICAgICAgICAgIHRlbXBTbmFwc2hvdC5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiJS4yZiUlIiwgKGRvbmUgLyB0b3RhbCkgKiAxMDApOworICAg
ICAgICAgICAgdGVtcFNuYXBzaG90LnNpZGViYXJFbGVtZW50LndhaXQgPSB0cnVlOwogICAgICAg
ICAgICAgaWYgKGRvbmUgPj0gdG90YWwpCi0gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJv
ZmlsZUhlYWRlcih0aGlzLl90ZW1wb3JhcnlUYWtpbmdTbmFwc2hvdCk7CisgICAgICAgICAgICAg
ICAgdGhpcy5fcmVtb3ZlUHJvZmlsZUhlYWRlcih0ZW1wU25hcHNob3QpOwogICAgICAgICB9CiAg
ICAgfQogfQpAQCAtOTAyLDkgKzkxMSw5IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNo
ZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wcm9maWxlci5fZmluaXNoSGVhcFNuYXBz
aG90KHVpZCk7CiAgICAgfSwKIAotICAgIHNldFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKGlz
UHJvZmlsaW5nKQorICAgIHNldFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGVUeXBl
LCBpc1Byb2ZpbGluZykKICAgICB7Ci0gICAgICAgIHRoaXMuX3Byb2ZpbGVyLl9zZXRSZWNvcmRp
bmdQcm9maWxlKGlzUHJvZmlsaW5nKTsKKyAgICAgICAgdGhpcy5fcHJvZmlsZXIuX3NldFJlY29y
ZGluZ1Byb2ZpbGUocHJvZmlsZVR5cGUsIGlzUHJvZmlsaW5nKTsKICAgICB9LAogCiAgICAgcmVw
b3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3M6IGZ1bmN0aW9uKGRvbmUsIHRvdGFsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IGRhNWNh
M2I4ZjkzZThkM2M3NDM2MGI5NzgzNTU3ZDI1NWFhMWI2YWQuLjAxNjY4OTM2OWZhMzlkZWE1ZTVj
ZDljZjhkMjFmYWQ4NmM3YTA3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTI1MDUsMTEgKzI1MDUsMTEgQEAgYm9keS5wbGF0
Zm9ybS1tYWMgI2RyYXdlci1zdGF0dXMtYmFyIC5zZWFyY2gtc3RhdHVzLWJhci1wcm9ncmVzcyB7
CiAgICAgd2hpdGUtc3BhY2U6IHByZTsKIH0KIAotLnJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXIt
aXRlbSAuZ2x5cGggeworLnJlY29yZC1jcHUtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gLmdseXBo
IHsKICAgICAtd2Via2l0LW1hc2stcG9zaXRpb246IC0yODhweCAwOwogfQogCi0ucmVjb3JkLXBy
b2ZpbGUtc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoIHsKKy5yZWNvcmQtY3B1LXBy
b2ZpbGUtc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoIHsKICAgICAtd2Via2l0LW1h
c2stcG9zaXRpb246IC0yODhweCAtMjRweDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjE2
LCAwLCAwKSAhaW1wb3J0YW50OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119227</attachid>
            <date>2011-12-14 08:59:08 -0800</date>
            <delta_ts>2011-12-15 00:14:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74391-20111214205905.patch</filename>
            <type>text/plain</type>
            <size>13917</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRjY2JkNTNmNWI4Y2E0
Y2RkOTE3OTdhOTAwMTFhZDg5MjNjY2ZmMS4uOWZhYmU0MjQ0OTYwODNjZmZmMDE1OWVmOWRkODdl
Njg2MjU5YjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDExLTEyLTE0ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogbWFrZSBQcm9maWxlc1BhbmVsIHNjYWxlIGFzIHRoZSBudW1iZXIgb2YgUHJvZmlsZVR5
cGVzIGdyb3dzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDM5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW5ldmVyIGEgcHJvZmlsZSBpcyBzdGFydGVkLCB0aGlzIGNoYW5nZSBkaXNhYmxlcyBhbGwg
cHJvZmlsZSByZWNvcmRpbmcgYnV0dG9ucywgZXhjZXB0IHRoZSBvbmUKKyAgICAgICAgdGhhdCBj
b3JyZXBvbmRzIHRvIHRoZSBydW5uaW5nIHByb2ZpbGUuIE9uY2UgdGhlIHByb2ZpbGluZyBpcyBm
aW5pc2hlZCwgYWxsIGJ1dHRvbnMgZ2V0IGVuYWJsZWQgYmFjayBhZ2Fpbi4KKworICAgICAgICAq
IEVuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2Zp
bGVWaWV3LnByb2ZpbGVDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmls
ZVR5cGUucHJvdG90eXBlLmdldCBidXR0b25Ub29sdGlwKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUuZ2V0IGJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUuYnV0dG9uQ2xpY2tlZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLmdldCBzdGF0dXNCYXJJdGVtcy5jbGlj
a0hhbmRsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBl
LmdldCBzdGF0dXNCYXJJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5l
bC5wcm90b3R5cGUuX2FkZFByb2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWwucHJvdG90eXBlLnVwZGF0ZVByb2ZpbGVUeXBlQnV0dG9ucyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUludGVyZmFjZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuc2V0UmVjb3Jk
aW5nUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5
cGUudGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5l
bC5wcm90b3R5cGUuX3JlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlLnNldFJlY29yZGluZ1Byb2ZpbGUp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAg
KC5yZWNvcmQtY3B1LXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIC5nbHlwaCk6CisgICAgICAgICgu
cmVjb3JkLWNwdS1wcm9maWxlLXN0YXR1cy1iYXItaXRlbS50b2dnbGVkLW9uIC5nbHlwaCk6CisK
IDIwMTEtMTItMTQgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CiAKICAg
ICAgICAgW1F0XSBNb2JpbGUgdGhlbWUgY291bGQgdXNlIGEgbGl0dGxlIHJlZnJlc2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBi
L1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCBi
NDM0MzA0MTQ3MGVhNzNkOGU3YjExNDM3NTA3MWRiMDNkODU4ZDgyLi44Nzc3NWExN2I5ZDAwZDFi
NTUxZjI2MDE1MzFiODk3MTczOTA4YjM1IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDU1
CnpjbWRuNmYjdCNtbUpSYjNPYiMlWG4je0xRM1FXSVNZQXxgKWZgclhFMypBX3Q1PDwtUjM8WjtZ
amIlNSNUazJFPApFMEdFMGV0TjtLMgoKZGVsdGEgNTkKemNtY2J4Zm5AXl8mMDg+OFduc2kqeHJK
PCNNZmA7KC0mcmEmKj04WEpuOWFBJFV+fDwlNDtIOXwxYz1fdXg2RypzCkUwT35Mb2JwUVlXCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmll
dy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMK
aW5kZXggNzRjZDNiMmU2NmFjZDM4OTYyMjI2MjVhODE1OTg3YTkxOGIyYjFhNS4uZGRjMTliYWUz
Mjc3M2MxYzk3MTczMWQ0ZWMxNmRjNjMyNTdkZGI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzCkBAIC04NSw2ICs4NSwxMSBAQCBX
ZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9maWxlKQogICAgIHsKICAg
ICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghcHJv
ZmlsZS5oZWFkKSB7CisgICAgICAgICAgICAvLyBQcm9maWxpbmcgd2FzIHRlbnRhdGl2ZWx5IHRl
cm1pbmF0ZWQgd2l0aCB0aGUgIkNsZWFyIGFsbCBwcm9maWxlcy4iIGJ1dHRvbi4KKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICB0aGlzLnByb2ZpbGUuaGVhZCA9IHByb2Zp
bGUuaGVhZDsKICAgICAgICAgdGhpcy5fYXNzaWduUGFyZW50c0luUHJvZmlsZSgpOwogICAgICAg
ICB0aGlzLl9jaGFuZ2VWaWV3KCk7CkBAIC01NzQsMjIgKzU3OSwyMCBAQCBXZWJJbnNwZWN0b3Iu
Q1BVUHJvZmlsZVR5cGUuVHlwZUlkID0gIkNQVSI7CiBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5
cGUucHJvdG90eXBlID0gewogICAgIGdldCBidXR0b25Ub29sdGlwKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9yZWNvcmRpbmcgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3AgcHJv
ZmlsaW5nLiIpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBwcm9maWxpbmcuIik7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRpbmcgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0
b3AgQ1BVIHByb2ZpbGluZy4iKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhcnQgQ1BVIHBy
b2ZpbGluZy4iKTsKICAgICB9LAogCiAgICAgZ2V0IGJ1dHRvblN0eWxlKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9yZWNvcmRpbmcgPyAicmVjb3JkLXByb2ZpbGUtc3RhdHVzLWJhci1p
dGVtIHN0YXR1cy1iYXItaXRlbSB0b2dnbGVkLW9uIiA6ICJyZWNvcmQtcHJvZmlsZS1zdGF0dXMt
YmFyLWl0ZW0gc3RhdHVzLWJhci1pdGVtIjsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZGlu
ZyA/ICJyZWNvcmQtY3B1LXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIHN0YXR1cy1iYXItaXRlbSB0
b2dnbGVkLW9uIiA6ICJyZWNvcmQtY3B1LXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIHN0YXR1cy1i
YXItaXRlbSI7CiAgICAgfSwKIAogICAgIGJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIHRoaXMuX3JlY29yZGluZyA9ICF0aGlzLl9yZWNvcmRpbmc7Ci0KICAgICAgICAg
aWYgKHRoaXMuX3JlY29yZGluZykKLSAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuc3RhcnQoKTsK
KyAgICAgICAgICAgIHRoaXMuc3RvcFJlY29yZGluZ1Byb2ZpbGUoKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5zdG9wKCk7CisgICAgICAgICAgICB0aGlzLnN0YXJ0
UmVjb3JkaW5nUHJvZmlsZSgpOwogICAgIH0sCiAKICAgICBnZXQgd2VsY29tZU1lc3NhZ2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1Bh
bmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVs
LmpzCmluZGV4IDhkOGE5N2EwMTY4YmQ5YjU1MzI0YmRlMTc3YTcyNzVhZWJhMGY5NGEuLmY3YWEx
YzRjMmZlZGVmNTdkYzFkMjVmN2Q3YzJmZDA1MGYzMmZlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTE1MiwxMCAr
MTUyLDExIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
IGdldCBzdGF0dXNCYXJJdGVtcygpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBjbGlja0hhbmRs
ZXIocHJvZmlsZVR5cGUsIGJ1dHRvbkVsZW1lbnQpCisgICAgICAgIGZ1bmN0aW9uIGNsaWNrSGFu
ZGxlcihwcm9maWxlVHlwZSwgYnV0dG9uKQogICAgICAgICB7CisgICAgICAgICAgICB2YXIgd2Fz
UHJvZmlsaW5nID0gYnV0dG9uLnRvZ2dsZWQ7CiAgICAgICAgICAgICBwcm9maWxlVHlwZS5idXR0
b25DbGlja2VkLmNhbGwocHJvZmlsZVR5cGUpOwotICAgICAgICAgICAgdGhpcy51cGRhdGVQcm9m
aWxlVHlwZUJ1dHRvbnMoKTsKKyAgICAgICAgICAgIHRoaXMudXBkYXRlUHJvZmlsZVR5cGVCdXR0
b25zKCF3YXNQcm9maWxpbmcsIGJ1dHRvbik7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgaXRl
bXMgPSBbdGhpcy5lbmFibGVUb2dnbGVCdXR0b24uZWxlbWVudF07CkBAIC0xNjMsOSArMTY0LDkg
QEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBmb3Ig
KHZhciB0eXBlSWQgaW4gdGhpcy5fcHJvZmlsZVR5cGVzQnlJZE1hcCkgewogICAgICAgICAgICAg
dmFyIHByb2ZpbGVUeXBlID0gdGhpcy5nZXRQcm9maWxlVHlwZSh0eXBlSWQpOwogICAgICAgICAg
ICAgaWYgKHByb2ZpbGVUeXBlLmJ1dHRvblN0eWxlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGJ1
dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKHByb2ZpbGVUeXBlLmJ1dHRv
blRvb2x0aXAsIHByb2ZpbGVUeXBlLmJ1dHRvblN0eWxlLCBwcm9maWxlVHlwZS5idXR0b25DYXB0
aW9uKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9wcm9maWxlVHlwZUJ1dHRvbnNCeUlkTWFwW3R5
cGVJZF0gPSBidXR0b24uZWxlbWVudDsKLSAgICAgICAgICAgICAgICBidXR0b24uZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGNsaWNrSGFuZGxlci5iaW5kKHRoaXMsIHByb2ZpbGVU
eXBlLCBidXR0b24uZWxlbWVudCksIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB2YXIgYnV0dG9u
ID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24ocHJvZmlsZVR5cGUuYnV0dG9uVG9v
bHRpcCwgcHJvZmlsZVR5cGUuYnV0dG9uU3R5bGUpOworICAgICAgICAgICAgICAgIHRoaXMuX3By
b2ZpbGVUeXBlQnV0dG9uc0J5SWRNYXBbdHlwZUlkXSA9IGJ1dHRvbjsKKyAgICAgICAgICAgICAg
ICBidXR0b24uZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGNsaWNrSGFuZGxlci5i
aW5kKHRoaXMsIHByb2ZpbGVUeXBlLCBidXR0b24pLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAg
aXRlbXMucHVzaChidXR0b24uZWxlbWVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTI4NiwxMiArMjg3LDggQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0g
ewogCiAgICAgX2FkZFByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgewotICAg
ICAgICBpZiAodGhpcy5oYXNUZW1wb3JhcnlQcm9maWxlKHByb2ZpbGUudHlwZUlkKSkgewotICAg
ICAgICAgICAgaWYgKHByb2ZpbGUudHlwZUlkID09PSBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5
cGUuVHlwZUlkKQotICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGhp
cy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvZmlsZUhlYWRlcih0aGlzLl90ZW1wb3JhcnlUYWtpbmdT
bmFwc2hvdCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMuaGFzVGVtcG9yYXJ5UHJvZmls
ZShwcm9maWxlLnR5cGVJZCkpCisgICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9maWxlSGVhZGVy
KHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOwogCiAgICAgICAgIHZhciB0eXBlSWQg
PSBwcm9maWxlLnR5cGVJZDsKICAgICAgICAgdmFyIHByb2ZpbGVUeXBlID0gdGhpcy5nZXRQcm9m
aWxlVHlwZSh0eXBlSWQpOwpAQCAtMzUyLDYgKzM0OSw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxl
c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICghdGhpcy52aXNpYmxlVmlldykK
ICAgICAgICAgICAgICAgICB0aGlzLnNob3dQcm9maWxlKHByb2ZpbGUpOwogICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInByb2ZpbGUgYWRkZWQiKTsKKyAgICAgICAg
ICAgIHRoaXMudXBkYXRlUHJvZmlsZVR5cGVCdXR0b25zKGZhbHNlLCB0aGlzLl9wcm9maWxlVHlw
ZUJ1dHRvbnNCeUlkTWFwW3R5cGVJZF0pOwogICAgICAgICB9CiAgICAgfSwKIApAQCAtNTA1LDE0
ICs1MDMsMjAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLnNob3dQcm9maWxlKHRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhpcy5fbWFrZUtleSht
YXRjaFszXSwgbWF0Y2hbMV0pXSk7CiAgICAgfSwKIAotICAgIHVwZGF0ZVByb2ZpbGVUeXBlQnV0
dG9uczogZnVuY3Rpb24oKQorICAgIHVwZGF0ZVByb2ZpbGVUeXBlQnV0dG9uczogZnVuY3Rpb24o
aXNQcm9maWxpbmcsIGVmZmVjdEJ1dHRvbikKICAgICB7CiAgICAgICAgIGZvciAodmFyIHR5cGVJ
ZCBpbiB0aGlzLl9wcm9maWxlVHlwZUJ1dHRvbnNCeUlkTWFwKSB7Ci0gICAgICAgICAgICB2YXIg
YnV0dG9uRWxlbWVudCA9IHRoaXMuX3Byb2ZpbGVUeXBlQnV0dG9uc0J5SWRNYXBbdHlwZUlkXTsK
KyAgICAgICAgICAgIHZhciBidXR0b24gPSB0aGlzLl9wcm9maWxlVHlwZUJ1dHRvbnNCeUlkTWFw
W3R5cGVJZF07CiAgICAgICAgICAgICB2YXIgcHJvZmlsZVR5cGUgPSB0aGlzLmdldFByb2ZpbGVU
eXBlKHR5cGVJZCk7Ci0gICAgICAgICAgICBidXR0b25FbGVtZW50LmNsYXNzTmFtZSA9IHByb2Zp
bGVUeXBlLmJ1dHRvblN0eWxlOwotICAgICAgICAgICAgYnV0dG9uRWxlbWVudC50aXRsZSA9IHBy
b2ZpbGVUeXBlLmJ1dHRvblRvb2x0aXA7CisgICAgICAgICAgICBidXR0b24uZWxlbWVudC5jbGFz
c05hbWUgPSBwcm9maWxlVHlwZS5idXR0b25TdHlsZTsKKyAgICAgICAgICAgIGJ1dHRvbi5lbGVt
ZW50LnRpdGxlID0gcHJvZmlsZVR5cGUuYnV0dG9uVG9vbHRpcDsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBBcHBseSBwcm9maWxlVHlwZS5idXR0b25DYXB0aW9uIG9uY2UgY2FwdGlvbnMgYXJlIGFk
ZGVkIHRvIGJ1dHRvbiBjb250cm9scy4KKyAgICAgICAgICAgIGlmICghaXNQcm9maWxpbmcpCisg
ICAgICAgICAgICAgICAgYnV0dG9uLmRpc2FibGVkID0gZmFsc2U7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZiAoZWZmZWN0QnV0dG9uICYmIGJ1dHRvbiAhPT0gZWZmZWN0
QnV0dG9uKQorICAgICAgICAgICAgICAgICAgICBidXR0b24uZGlzYWJsZWQgPSB0cnVlOworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSwKIApAQCAtNzUyLDcgKzc1Niw3IEBAIFdlYklu
c3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZW5h
YmxlVG9nZ2xlQnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9maWxpbmcg
ZW5hYmxlZC4gQ2xpY2sgdG8gZGlzYWJsZS4iKTsKICAgICAgICAgICAgIHRoaXMuZW5hYmxlVG9n
Z2xlQnV0dG9uLnRvZ2dsZWQgPSB0cnVlOwogICAgICAgICAgICAgZm9yICh2YXIgdHlwZUlkIGlu
IHRoaXMuX3Byb2ZpbGVUeXBlQnV0dG9uc0J5SWRNYXApCi0gICAgICAgICAgICAgICAgdGhpcy5f
cHJvZmlsZVR5cGVCdXR0b25zQnlJZE1hcFt0eXBlSWRdLnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRl
biIpOworICAgICAgICAgICAgICAgIHRoaXMuX3Byb2ZpbGVUeXBlQnV0dG9uc0J5SWRNYXBbdHlw
ZUlkXS5lbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOwogICAgICAgICAgICAgdGhp
cy5wcm9maWxlVmlld1N0YXR1c0Jhckl0ZW1zQ29udGFpbmVyLnJlbW92ZVN0eWxlQ2xhc3MoImhp
ZGRlbiIpOwogICAgICAgICAgICAgdGhpcy5jbGVhclJlc3VsdHNCdXR0b24uZWxlbWVudC5yZW1v
dmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgICAgIHRoaXMucGFuZWxFbmFibGVyVmll
dy5kZXRhY2goKTsKQEAgLTc2MCw3ICs3NjQsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmVuYWJsZVRvZ2dsZUJ1dHRvbi50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJvZmlsaW5nIGRpc2FibGVkLiBDbGljayB0byBl
bmFibGUuIik7CiAgICAgICAgICAgICB0aGlzLmVuYWJsZVRvZ2dsZUJ1dHRvbi50b2dnbGVkID0g
ZmFsc2U7CiAgICAgICAgICAgICBmb3IgKHZhciB0eXBlSWQgaW4gdGhpcy5fcHJvZmlsZVR5cGVC
dXR0b25zQnlJZE1hcCkKLSAgICAgICAgICAgICAgICB0aGlzLl9wcm9maWxlVHlwZUJ1dHRvbnNC
eUlkTWFwW3R5cGVJZF0uYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CisgICAgICAgICAgICAgICAg
dGhpcy5fcHJvZmlsZVR5cGVCdXR0b25zQnlJZE1hcFt0eXBlSWRdLmVsZW1lbnQuYWRkU3R5bGVD
bGFzcygiaGlkZGVuIik7CiAgICAgICAgICAgICB0aGlzLnByb2ZpbGVWaWV3U3RhdHVzQmFySXRl
bXNDb250YWluZXIuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CiAgICAgICAgICAgICB0aGlzLmNs
ZWFyUmVzdWx0c0J1dHRvbi5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOwogICAgICAg
ICAgICAgdGhpcy5wYW5lbEVuYWJsZXJWaWV3LnNob3codGhpcy5lbGVtZW50KTsKQEAgLTgyNCwz
OSArODI4LDQxIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5wcm9maWxlVmlld1N0YXR1c0Jhckl0ZW1zQ29udGFpbmVyLnN0eWxlLmxlZnQg
PSBNYXRoLm1heCg2ICogMzEsIHdpZHRoKSArICJweCI7CiAgICAgfSwKIAotICAgIF9zZXRSZWNv
cmRpbmdQcm9maWxlOiBmdW5jdGlvbihpc1Byb2ZpbGluZykKKyAgICBzZXRSZWNvcmRpbmdQcm9m
aWxlOiBmdW5jdGlvbihwcm9maWxlVHlwZSwgaXNQcm9maWxpbmcpCiAgICAgewotICAgICAgICB0
aGlzLmdldFByb2ZpbGVUeXBlKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQpLnNl
dFJlY29yZGluZ1Byb2ZpbGUoaXNQcm9maWxpbmcpOwotICAgICAgICBpZiAodGhpcy5oYXNUZW1w
b3JhcnlQcm9maWxlKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQpICE9PSBpc1By
b2ZpbGluZykgeworICAgICAgICB0aGlzLmdldFByb2ZpbGVUeXBlKHByb2ZpbGVUeXBlKS5zZXRS
ZWNvcmRpbmdQcm9maWxlKGlzUHJvZmlsaW5nKTsKKyAgICAgICAgaWYgKHRoaXMuaGFzVGVtcG9y
YXJ5UHJvZmlsZShwcm9maWxlVHlwZSkgIT09IGlzUHJvZmlsaW5nKSB7CiAgICAgICAgICAgICBp
ZiAoIXRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpIHsKICAgICAgICAgICAgICAgICB0
aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlID0gewotICAgICAgICAgICAgICAgICAgICB0
eXBlSWQ6IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQsCi0gICAgICAgICAgICAg
ICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY29yZGluZ+KApiIpLAorICAg
ICAgICAgICAgICAgICAgICB0eXBlSWQ6IHByb2ZpbGVUeXBlLAorICAgICAgICAgICAgICAgICAg
ICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNvcmRpbmdcdTIwMjYiKSwKICAgICAg
ICAgICAgICAgICAgICAgdWlkOiAtMSwKICAgICAgICAgICAgICAgICAgICAgaXNUZW1wb3Jhcnk6
IHRydWUKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KGlzUHJvZmlsaW5nKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fYWRkUHJvZmlsZUhlYWRlcih0
aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlKTsKLSAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IudXNlck1ldHJpY3MuUHJvZmlsZXNDUFVQcm9maWxlVGFrZW4ucmVjb3JkKCk7Ci0gICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBpZiAocHJvZmlsZVR5cGUgPT09IFdlYklu
c3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQpCisgICAgICAgICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci51c2VyTWV0cmljcy5Qcm9maWxlc0NQVVByb2ZpbGVUYWtlbi5yZWNvcmQoKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvZmlsZUhl
YWRlcih0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlKTsKKyAgICAgICAgICAgICAgICBk
ZWxldGUgdGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgICAgICB0aGlzLnVwZGF0ZVByb2ZpbGVUeXBlQnV0dG9ucygpOwogICAgIH0s
CiAKICAgICB0YWtlSGVhcFNuYXBzaG90OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuaGFzVGVtcG9yYXJ5UHJvZmlsZShXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFBy
b2ZpbGVUeXBlLlR5cGVJZCkpIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5fdGVtcG9yYXJ5VGFr
aW5nU25hcHNob3QpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl90ZW1wb3JhcnlUYWtpbmdTbmFw
c2hvdCA9IHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmls
ZSkgeworICAgICAgICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUgPSB7
CiAgICAgICAgICAgICAgICAgICAgIHR5cGVJZDogV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNo
b3RQcm9maWxlVHlwZS5UeXBlSWQsCi0gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlNuYXBzaG90dGluZ+KApiIpLAorICAgICAgICAgICAgICAgICAgICB0
aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTbmFwc2hvdHRpbmdcdTIwMjYiKSwKICAgICAg
ICAgICAgICAgICAgICAgdWlkOiAtMSwKICAgICAgICAgICAgICAgICAgICAgaXNUZW1wb3Jhcnk6
IHRydWUKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhp
cy5fYWRkUHJvZmlsZUhlYWRlcih0aGlzLl90ZW1wb3JhcnlUYWtpbmdTbmFwc2hvdCk7CisgICAg
ICAgICAgICB0aGlzLl9hZGRQcm9maWxlSGVhZGVyKHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1By
b2ZpbGUpOwogICAgICAgICB9CiAgICAgICAgIFByb2ZpbGVyQWdlbnQudGFrZUhlYXBTbmFwc2hv
dCgpOwogICAgICAgICBXZWJJbnNwZWN0b3IudXNlck1ldHJpY3MuUHJvZmlsZXNIZWFwUHJvZmls
ZVRha2VuLnJlY29yZCgpOwpAQCAtODY1LDEwICs4NzEsMTAgQEAgV2ViSW5zcGVjdG9yLlByb2Zp
bGVzUGFuZWwucHJvdG90eXBlID0gewogICAgIF9yZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzczog
ZnVuY3Rpb24oZG9uZSwgdG90YWwpCiAgICAgewogICAgICAgICBpZiAodGhpcy5oYXNUZW1wb3Jh
cnlQcm9maWxlKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlk
KSkgewotICAgICAgICAgICAgdGhpcy5fdGVtcG9yYXJ5VGFraW5nU25hcHNob3Quc2lkZWJhckVs
ZW1lbnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiUuMmYlJSIsIChkb25lIC8g
dG90YWwpICogMTAwKTsKLSAgICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVRha2luZ1NuYXBzaG90
LnNpZGViYXJFbGVtZW50LndhaXQgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5fdGVtcG9yYXJ5
UmVjb3JkaW5nUHJvZmlsZS5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiJS4yZiUlIiwgKGRvbmUgLyB0b3RhbCkgKiAxMDApOworICAgICAgICAgICAgdGhp
cy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZS5zaWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsK
ICAgICAgICAgICAgIGlmIChkb25lID49IHRvdGFsKQotICAgICAgICAgICAgICAgIHRoaXMuX3Jl
bW92ZVByb2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9yYXJ5VGFraW5nU25hcHNob3QpOworICAgICAg
ICAgICAgICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9yYXJ5UmVjb3Jk
aW5nUHJvZmlsZSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC05MDQsNyArOTEwLDcgQEAgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAKICAgICBzZXRSZWNv
cmRpbmdQcm9maWxlOiBmdW5jdGlvbihpc1Byb2ZpbGluZykKICAgICB7Ci0gICAgICAgIHRoaXMu
X3Byb2ZpbGVyLl9zZXRSZWNvcmRpbmdQcm9maWxlKGlzUHJvZmlsaW5nKTsKKyAgICAgICAgdGhp
cy5fcHJvZmlsZXIuc2V0UmVjb3JkaW5nUHJvZmlsZShXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5
cGUuVHlwZUlkLCBpc1Byb2ZpbGluZyk7CiAgICAgfSwKIAogICAgIHJlcG9ydEhlYXBTbmFwc2hv
dFByb2dyZXNzOiBmdW5jdGlvbihkb25lLCB0b3RhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCAxMDBlMmY2NjNiY2FhZGRhN2Vl
NGZhNTkyNTI5YmUwZjc4YzRmYTczLi5iYTAwNjNjZDRkZGUxYTRjZDI5ODkxOTFkYmVjYTdlYjI0
ZWUyZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzCkBAIC0yNTA3LDExICsyNTA3LDExIEBAIGJvZHkucGxhdGZvcm0tbWFjICNkcmF3
ZXItc3RhdHVzLWJhciAuc2VhcmNoLXN0YXR1cy1iYXItcHJvZ3Jlc3MgewogICAgIHdoaXRlLXNw
YWNlOiBwcmU7CiB9CiAKLS5yZWNvcmQtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gLmdseXBoIHsK
Ky5yZWNvcmQtY3B1LXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIC5nbHlwaCB7CiAgICAgLXdlYmtp
dC1tYXNrLXBvc2l0aW9uOiAtMjg4cHggMDsKIH0KIAotLnJlY29yZC1wcm9maWxlLXN0YXR1cy1i
YXItaXRlbS50b2dnbGVkLW9uIC5nbHlwaCB7CisucmVjb3JkLWNwdS1wcm9maWxlLXN0YXR1cy1i
YXItaXRlbS50b2dnbGVkLW9uIC5nbHlwaCB7CiAgICAgLXdlYmtpdC1tYXNrLXBvc2l0aW9uOiAt
Mjg4cHggLTI0cHg7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIxNiwgMCwgMCkgIWltcG9y
dGFudDsKIH0K
</data>
<flag name="review"
          id="119176"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>