<?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>74292</bug_id>
          
          <creation_ts>2011-12-12 06:26:47 -0800</creation_ts>
          <short_desc>Web Inspector: [Styles] Update selected DOM element styles whenever applicable media queries change</short_desc>
          <delta_ts>2011-12-15 01:23:39 -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>
          
          
          <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>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>519161</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-12 06:26:47 -0800</bug_when>
    <thetext>Whenever media query aspects (like orientation, max-width, etc.) change, it would be useful to dynamically update the matched rules for the current DOM element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520871</commentid>
    <comment_count>1</comment_count>
      <attachid>119208</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-14 05:26:22 -0800</bug_when>
    <thetext>Created attachment 119208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520953</commentid>
    <comment_count>2</comment_count>
      <attachid>119208</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-14 08:45:03 -0800</bug_when>
    <thetext>Comment on attachment 119208
Patch

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

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:207
&gt; +    skip_js_bind_domains = set([&quot;Runtime&quot;, &quot;DOMDebugger&quot;])

I think we should unskip everything. Why does it even exists?

&gt; Source/WebCore/inspector/Inspector.json:1749
&gt; +                &quot;description&quot;: &quot;Fires whenever a MediaQuery result changes (the current implementation considers only viewport-dependent media features.)&quot;

This is not clear to me. Could you elaborate more on when the event is actually fired?

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:237
&gt; +        m_frontend-&gt;mediaQueryResultChanged();

Now that CSS domain emits events, we should make sure that it only does so when the agent is enabled. You need to introduce enable/disable methods pair as in the other domains and only generate messages while enabled. Actually, you might want to set CSS agent to the instrumentingAgents set in the ::enable.

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:859
&gt; +WebInspector.CSSDispatcher = function(cssModel)

Please jsdoc this new class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521010</commentid>
    <comment_count>3</comment_count>
      <attachid>119237</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-14 09:53:54 -0800</bug_when>
    <thetext>Created attachment 119237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521014</commentid>
    <comment_count>4</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-14 09:57:27 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 119208 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119208&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:207
&gt; &gt; +    skip_js_bind_domains = set([&quot;Runtime&quot;, &quot;DOMDebugger&quot;])
&gt; 
&gt; I think we should unskip everything. Why does it even exists?

I will file a bug for this.

&gt; &gt; Source/WebCore/inspector/Inspector.json:1749
&gt; &gt; +                &quot;description&quot;: &quot;Fires whenever a MediaQuery result changes (the current implementation considers only viewport-dependent media features.)&quot;
&gt; 
&gt; This is not clear to me. Could you elaborate more on when the event is actually fired?

This event fires (in the suggested implementation) whenever a viewport-dependent media feature value changes. Some examples are: orientation, width, height, aspect ratio. You resize the browser or rotate your smartphone and receive the notification, because entirely different CSS rules may get applied to the inspected element, and we want to observe this live.

&gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:237
&gt; &gt; +        m_frontend-&gt;mediaQueryResultChanged();
&gt; 
&gt; Now that CSS domain emits events, we should make sure that it only does so when the agent is enabled. You need to introduce enable/disable methods pair as in the other domains and only generate messages while enabled. Actually, you might want to set CSS agent to the instrumentingAgents set in the ::enable.

Done.

&gt; &gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:859
&gt; &gt; +WebInspector.CSSDispatcher = function(cssModel)
&gt; 
&gt; Please jsdoc this new class.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521365</commentid>
    <comment_count>5</comment_count>
      <attachid>119237</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-14 15:34:27 -0800</bug_when>
    <thetext>Comment on attachment 119237
Patch

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

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:197
&gt; +    , m_enabled(false)

you don&apos;t actually need to mimic the m_state-&gt;get(cssAgentEnabled) state.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:216
&gt; +    m_instrumentingAgents-&gt;setInspectorCSSAgent(this);

Can we do it even later? Like in enable?

&gt; Source/WebCore/page/FrameView.cpp:1005
&gt; +            InspectorInstrumentation::didMediaQueryResultChange(document);

We only use did* notation when there is a corresponding will* signal. ::mediaQueryResultChanged would be Ok in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521737</commentid>
    <comment_count>6</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-15 01:20:05 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 119237 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119237&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:197
&gt; &gt; +    , m_enabled(false)
&gt; 
&gt; you don&apos;t actually need to mimic the m_state-&gt;get(cssAgentEnabled) state.

Right, removed.

&gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:216
&gt; &gt; +    m_instrumentingAgents-&gt;setInspectorCSSAgent(this);
&gt; 
&gt; Can we do it even later? Like in enable?

Done.

&gt; &gt; Source/WebCore/page/FrameView.cpp:1005
&gt; &gt; +            InspectorInstrumentation::didMediaQueryResultChange(document);
&gt; 
&gt; We only use did* notation when there is a corresponding will* signal. ::mediaQueryResultChanged would be Ok in this case.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521738</commentid>
    <comment_count>7</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-15 01:23:39 -0800</bug_when>
    <thetext>Committed r102903: &lt;http://trac.webkit.org/changeset/102903&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119208</attachid>
            <date>2011-12-14 05:26:22 -0800</date>
            <delta_ts>2011-12-14 09:53:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74292-20111214172620.patch</filename>
            <type>text/plain</type>
            <size>15710</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjEyM2ZiZjViOGU3NWVm
YzdmZTQwMTg4NWNjOWE5N2EzN2Q2ZDU3OC4uYWRmNmQwMzlhYzFkYWNlYmE2NDA4ZGJmMzQ5OWI0
MmNiMzk1MTlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTEyLTE0ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1N0eWxlc10gVXBkYXRlIHNlbGVjdGVkIERPTSBlbGVtZW50IHN0eWxlcyB3aGVuZXZl
ciBhcHBsaWNhYmxlIG1lZGlhIHF1ZXJpZXMgY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDI5MgorCisgICAgICAgIFRoZSBjaGFuZ2UgaW50
cm9kdWNlcyBhbmQgaGFuZGxlcyBpbiB0aGUgZnJvbnRlbmQgYSBuZXcgZXZlbnQgdHlwZSBmb3Ig
dGhlIENTUyBkb21haW4sCisgICAgICAgICJtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCIsIHdoaWNo
IGdldHMgZmlyZWQgZXZlcnkgdGltZSBhIHZpZXdwb3J0LWRlcGVuZGVudCBtZWRpYSBmZWF0dXJl
CisgICAgICAgIGNoYW5nZXMgaXRzIHZhbHVlLiBUaGlzIGFsbG93cyB1c2VycyB0byBzZWUgbGl2
ZSBjaGFuZ2VzIG9mIHRoZSAobWVkaWEtZGVwZW5kZW50KSBtYXRjaGVkCisgICAgICAgIHJ1bGVz
IGZvciBpbnNwZWN0ZWQgZWxlbWVudHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToK
KyAgICAgICAgKERvbWFpbk5hbWVGaXhlcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpjbGVhckZyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWVkaWFRdWVyeVJlc3VsdENoYW5nZUltcGwpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWVkaWFRdWVyeVJlc3VsdENoYW5n
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
U1NEaXNwYXRjaGVyLnByb3RvdHlwZS5tZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5N
ZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLl9zdHlsZVNoZWV0T3JNZWRpYVF1ZXJ5UmVzdWx0
Q2hhbmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFu
ZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9zdHlsZVNoZWV0T3JN
ZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorCiAyMDExLTEyLTEzICBZb3Np
ZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5kZXJUaGVtZSBz
aG91bGQgaGF2ZSBhIGZ1bmN0aW9uIGZvciBkaXNhYmxlZCB0ZXh0IGNvbG9yIGFkanVzdG1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVj
dG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3Iu
cHkKaW5kZXggYzE5NWNiNjcwMTFmZmNjNDkzYmIzYjI5ZGMxMmEyOWU0MjE5MDMzYS4uNTc3MDQ3
MzI5ZWUwZmFjMjY4MzcwMTlmOGVhYWU1NDBmZGNkNmMxZSAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTIwNCw3ICsyMDQs
NyBAQCBjbGFzcyBEb21haW5OYW1lRml4ZXM6CiAKICAgICAgICAgcmV0dXJuIFJlcwogCi0gICAg
c2tpcF9qc19iaW5kX2RvbWFpbnMgPSBzZXQoWyJSdW50aW1lIiwgIkNTUyIsICJET01EZWJ1Z2dl
ciJdKQorICAgIHNraXBfanNfYmluZF9kb21haW5zID0gc2V0KFsiUnVudGltZSIsICJET01EZWJ1
Z2dlciJdKQogICAgIGFnZW50X3R5cGVfbWFwID0geyJOZXR3b3JrIjogIkluc3BlY3RvclJlc291
cmNlQWdlbnQiLCAiSW5zcGVjdG9yIjogIkluc3BlY3RvckFnZW50IiwgfQogCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCAxMmJhM2M2M2FhNDFlODI5MTY4MjQ5
YjhjZWVhZDc1MmI0MjMxOGYzLi5mM2U0MGU4MGU5NWQ5OGQ3MDk3OTM0OTllNmJiMTU5ODQwZTM0
ZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0xNzQyLDYg
KzE3NDIsMTIgQEAKICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJSZXR1cm5zIGFsbCBzdXBwb3J0ZWQgQ1NTIHByb3BlcnR5IG5hbWVzLiIKICAgICAg
ICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgImV2ZW50cyI6IFsKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCIsCisgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW5ldmVyIGEgTWVkaWFRdWVyeSBy
ZXN1bHQgY2hhbmdlcyAodGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gY29uc2lkZXJzIG9ubHkg
dmlld3BvcnQtZGVwZW5kZW50IG1lZGlhIGZlYXR1cmVzLikiCisgICAgICAgICAgICB9CiAgICAg
ICAgIF0KICAgICB9LAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCmluZGV4IGY1MDZhNWJmYjVhNGJkOTUwOTNlYTM0NTAwM2E4MDMyMjg3
OGNmNDcuLjkxYzBkOTlhMTA0NGJhZDdlYTU1MmZjNjAwNWY4OGJjOWZkMDVlY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMTg2LDYg
KzE4Niw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxl
KENTU1J1bGUqIHJ1bGUpCiAKIEluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSog
c3RhdGUsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCkKICAgICA6IEluc3BlY3RvckJhc2VB
Z2VudDxJbnNwZWN0b3JDU1NBZ2VudD4oIkNTUyIsIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRl
KQorICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKICAgICAs
IG1fbGFzdFBzZXVkb1N0YXRlKDApCiAgICAgLCBtX2xhc3RTdHlsZVNoZWV0SWQoMSkKQEAgLTE5
Myw3ICsxOTQsNiBAQCBJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSQogICAgICwgbV9sYXN0U3R5bGVJ
ZCgxKQogewogICAgIG1fZG9tQWdlbnQtPnNldERPTUxpc3RlbmVyKHRoaXMpOwotICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQ1NTQWdlbnQodGhpcyk7CiB9CiAKIEluc3Bl
Y3RvckNTU0FnZW50Ojp+SW5zcGVjdG9yQ1NTQWdlbnQoKQpAQCAtMjAzLDggKzIwMywxNyBAQCBJ
bnNwZWN0b3JDU1NBZ2VudDo6fkluc3BlY3RvckNTU0FnZW50KCkKICAgICByZXNldCgpOwogfQog
Cit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCog
ZnJvbnRlbmQpCit7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kKTsKKyAgICBtX2Zyb250ZW5kID0g
ZnJvbnRlbmQtPmNzcygpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9y
Q1NTQWdlbnQodGhpcyk7Cit9CisKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmNsZWFyRnJvbnRl
bmQoKQogeworICAgIEFTU0VSVChtX2Zyb250ZW5kKTsKKyAgICBtX2Zyb250ZW5kID0gMDsKICAg
ICBjbGVhclBzZXVkb1N0YXRlKHRydWUpOwogfQogCkBAIC0yMjIsNiArMjMxLDEyIEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0KCkKICAgICBtX2RvY3VtZW50VG9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNsZWFyKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZE1lZGlhUXVl
cnlSZXN1bHRDaGFuZ2UoKQoreworICAgIGlmIChtX2Zyb250ZW5kKQorICAgICAgICBtX2Zyb250
ZW5kLT5tZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOworfQorCiBib29sIEluc3BlY3RvckNTU0Fn
ZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1
ZG9UeXBlIHBzZXVkb1R5cGUpCiB7CiAgICAgaWYgKG1fbGFzdEVsZW1lbnRXaXRoUHNldWRvU3Rh
dGUgIT0gZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKaW5kZXggNzRhMGIwMmI2ZmVmNjk3Nzk1MTBmZGI4MTEwNzE4YTJjNmMzYzg5Ny4uNjQ1
MzVjYzVjYTdhMDE2MTVjOTI2MWQyMjBlZDVlMjdhMTc1YmJkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZp
bmUgSW5zcGVjdG9yQ1NTQWdlbnRfaAogCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVTaGVldC5o
IgpAQCAtNDksNiArNTAsNyBAQCBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOYW1lTm9kZU1hcDsKIGNsYXNzIE5vZGU7CitjbGFzcyBO
b3RpZnlTdHlsZVNlbGVjdG9yQ2hhbmdlZFRhc2s7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
CkBAIC02NSw5ICs2NywxMSBAQCBwdWJsaWM6CiAgICAgfkluc3BlY3RvckNTU0FnZW50KCk7CiAK
ICAgICBib29sIGZvcmNlUHNldWRvU3RhdGUoRWxlbWVudCosIENTU1NlbGVjdG9yOjpQc2V1ZG9U
eXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNj
YXJkQWdlbnQoKTsKICAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBkaWRNZWRpYVF1ZXJ5UmVz
dWx0Q2hhbmdlKCk7CiAKICAgICB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3Ry
aW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogZm9yY2VkUHNl
dWRvQ2xhc3NlcywgUmVmUHRyPEluc3BlY3RvckFycmF5Piogc3R5bGUpOwogICAgIHZvaWQgZ2V0
SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3RvckFycmF5PiogYXR0cmli
dXRlcyk7CkBAIC0xMTAsNiArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJQc2V1
ZG9TdGF0ZShib29sIHJlY2FsY1N0eWxlcyk7CiAKKyAgICBJbnNwZWN0b3JGcm9udGVuZDo6Q1NT
KiBtX2Zyb250ZW5kOwogICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50OwogICAgIFJl
ZlB0cjxFbGVtZW50PiBtX2xhc3RFbGVtZW50V2l0aFBzZXVkb1N0YXRlOwogICAgIHVuc2lnbmVk
IG1fbGFzdFBzZXVkb1N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBkNzg5NDIyYWEyMGNhOTNiZDY4ODVh
OWEzNDY4YTA0ZTQ1YWZhZWM4Li5jMDllYjY2NWNlZTc1ZTc3OGQ0ODBjZTRkM2U1ZWU0OTQ2ZWUz
YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcApAQCAtMTgyLDYgKzE4MiwxMiBAQCB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
IGlucwogICAgICAgICBjb25zb2xlQWdlbnQtPmZyYW1lV2luZG93RGlzY2FyZGVkKHdpbmRvdyk7
CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNZWRpYVF1ZXJ5UmVzdWx0
Q2hhbmdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQorewor
ICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LT5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgICAgICBjc3NBZ2VudC0+ZGlkTWVkaWFRdWVyeVJl
c3VsdENoYW5nZSgpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFn
cykKIHsKICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBhMWU4OTkyNDZiNGU1ZWQ1
ZjIxYjMyNDUxZTg2NjEyYmFhMDJlMWU5Li4xODJhYWJhOGI1YzZkZTI3NjAyZjE5ZThjM2Y1MTQy
OGZiOThlYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCkBAIC04Nyw2ICs4Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoRG9jdW1lbnQqLCBDaGFyYWN0ZXJEYXRhKik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihEb2N1bWVudCosIE5vZGUqKTsK
ICAgICBzdGF0aWMgdm9pZCBmcmFtZVdpbmRvd0Rpc2NhcmRlZChGcmFtZSosIERPTVdpbmRvdyop
OworICAgIHN0YXRpYyB2b2lkIGRpZE1lZGlhUXVlcnlSZXN1bHRDaGFuZ2UoRG9jdW1lbnQqKTsK
IAogICAgIHN0YXRpYyB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFBhZ2UqLCBjb25zdCBI
aXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CiAgICAgc3RhdGljIGJvb2wg
aGFuZGxlTW91c2VQcmVzcyhQYWdlKik7CkBAIC0yMjcsNiArMjI4LDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBDaGFyYWN0ZXJEYXRhKik7CiAgICAgc3RhdGljIHZvaWQgZGlkSW52YWxpZGF0ZVN0eWxl
QXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIE5vZGUqKTsKICAgICBzdGF0aWMgdm9pZCBm
cmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERPTVdpbmRvdyop
OworICAgIHN0YXRpYyB2b2lkIGRpZE1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqKTsKIAogICAgIHN0YXRpYyB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVk
IG1vZGlmaWVyRmxhZ3MpOwogICAgIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlUHJlc3NJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqKTsKQEAgLTQzNSw2ICs0MzcsMTUgQEAgaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChGcmFtZSogZnJhbWUs
IERPTVdpbmQKICNlbmRpZgogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZE1lZGlhUXVlcnlSZXN1bHRDaGFuZ2UoRG9jdW1lbnQqIGRvY3VtZW50KQoreworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQo
KSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAgICBkaWRNZWRp
YVF1ZXJ5UmVzdWx0Q2hhbmdlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKTsKKyNlbmRpZgorfQor
CiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KFBhZ2UqIHBhZ2UsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQg
bW9kaWZpZXJGbGFncykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IDYyZDhl
NGEzMThmNjQxY2YwMjg3NmNmMmMwOThlYjdjNzFhYjRkNDkuLjYyZGU4NzA3ZjBjODZiMGU5MzY2
OGU1YjE2YTZmZWVhMzViMjRjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTM1LDYgKzM1LDcgQEAKIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsID0gZnVuY3Rpb24oKQogewogICAgIG5ldyBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZyh0aGlzKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5k
LnJlZ2lzdGVyQ1NTRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIodGhp
cykpOwogfQogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wYXJzZVJ1bGVBcnJheVBheWxv
YWQgPSBmdW5jdGlvbihydWxlQXJyYXkpCkBAIC00Niw3ICs0Nyw4IEBAIFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1vZGVsLnBhcnNlUnVsZUFycmF5UGF5bG9hZCA9IGZ1bmN0aW9uKHJ1bGVBcnJheSkK
IH0KIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzID0gewotICAgIFN0eWxlU2hl
ZXRDaGFuZ2VkOiAiU3R5bGVTaGVldENoYW5nZWQiCisgICAgU3R5bGVTaGVldENoYW5nZWQ6ICJT
dHlsZVNoZWV0Q2hhbmdlZCIsCisgICAgTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQ6ICJNZWRpYVF1
ZXJ5UmVzdWx0Q2hhbmdlZCIKIH0KIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90
eXBlID0gewpAQCAtMjQ4LDYgKzI1MCwxMSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIENTU0FnZW50LmFkZFJ1bGUobm9kZUlkLCBzZWxlY3Rvciwg
Y2FsbGJhY2suYmluZCh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGZhaWx1cmVDYWxsYmFjaywgc2Vs
ZWN0b3IpKTsKICAgICB9LAogCisgICAgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWQ6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5NZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCk7CisgICAg
fSwKKwogICAgIF9kb2N1bWVudEVsZW1lbnRJZDogZnVuY3Rpb24obm9kZUlkKQogICAgIHsKICAg
ICAgICAgdmFyIG5vZGUgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQubm9kZUZvcklkKG5vZGVJZCk7
CkBAIC04NDksNiArODU2LDE4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsUmVzb3VyY2VC
aW5kaW5nLnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJj
ZUJpbmRpbmcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZURvbWFp
bk1vZGVsQmluZGluZy5wcm90b3R5cGU7CiAKK1dlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyID0g
ZnVuY3Rpb24oY3NzTW9kZWwpCit7CisgICAgdGhpcy5fY3NzTW9kZWwgPSBjc3NNb2RlbDsKK30K
KworV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIucHJvdG90eXBlID0geworICAgIG1lZGlhUXVl
cnlSZXN1bHRDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9jc3NNb2Rl
bC5tZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOworICAgIH0KK30KKwogLyoqCiAgKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWx9CiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKaW5kZXggZjg5
ZmI2ZDU1NDk5M2FkMDhkYzE0YTg2YmU4MWNkMzdmMTgxNzdkMC4uOTUyYTk2ODQ0ZDYxMTAzN2Zi
MjFkN2FjZTU3ZmZkZmI4MGNkZTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKQEAgLTM0LDcgKzM0LDgg
QEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBX
ZWJJbnNwZWN0b3IuU2lkZWJhclBhbmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik1ldHJpY3MiKSk7CiAKLSAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5bGVTaGVldENoYW5nZWQsIHRo
aXMuX3N0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5bGVT
aGVldENoYW5nZWQsIHRoaXMuX3N0eWxlU2hlZXRPck1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkLCB0
aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQsIHRoaXMu
X3N0eWxlU2hlZXRPck1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkLCB0aGlzKTsKICAgICBXZWJJbnNw
ZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZl
bnRzLkF0dHJNb2RpZmllZCwgdGhpcy5fYXR0cmlidXRlc1VwZGF0ZWQsIHRoaXMpOwogICAgIFdl
Ykluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2Vu
dC5FdmVudHMuQXR0clJlbW92ZWQsIHRoaXMuX2F0dHJpYnV0ZXNVcGRhdGVkLCB0aGlzKTsKIH0K
QEAgLTgyLDcgKzgzLDcgQEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRJbmxpbmVTdHlsZXNBc3lu
Yyhub2RlLmlkLCBpbmxpbmVTdHlsZUNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKLSAg
ICBfc3R5bGVTaGVldENoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICBfc3R5bGVTaGVldE9yTWVkaWFR
dWVyeVJlc3VsdENoYW5nZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2lubmVy
VXBkYXRlKCk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IGViY2U1OTJjNmIzOWQ5YjFhNzNm
ZWFhMDQyNjU0ZDU2MjViYmViZjIuLjNmOTU1YzFiOWFjOGFkMGQ4YzRlZDk0NDQxY2EzMWIzNTEx
OTAwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5
bGVzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtODksNyArODksOCBAQCBXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUgPSBmdW5jdGlvbihjb21wdXRlZFN0eWxlUGFuZSkKICAgICB0aGlzLl9z
ZWN0aW9uc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRo
aXMuYm9keUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VjdGlvbnNDb250YWluZXIpOwogCi0g
ICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNT
U1N0eWxlTW9kZWwuRXZlbnRzLlN0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0Q2hh
bmdlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlN0eWxlU2hlZXRDaGFuZ2VkLCB0aGlz
Ll9zdHlsZVNoZWV0T3JNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCwgdGhpcyk7CisgICAgV2ViSW5z
cGVjdG9yLmNzc01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9k
ZWwuRXZlbnRzLk1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0T3JNZWRp
YVF1ZXJ5UmVzdWx0Q2hhbmdlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5BdHRyTW9kaWZpZWQs
IHRoaXMuX2F0dHJpYnV0ZXNNb2RpZmllZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbUFn
ZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5BdHRyUmVt
b3ZlZCwgdGhpcy5fYXR0cmlidXRlc1JlbW92ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5k
b21BZ2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuU3R5
bGVJbnZhbGlkYXRlZCwgdGhpcy5fc3R5bGVJbnZhbGlkYXRlZCwgdGhpcyk7CkBAIC0yODYsNyAr
Mjg3LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX2V4ZWN1dGVSZWJ1aWxkVXBkYXRlKG5vZGUsIHVzZXJDYWxsYmFjayk7
CiAgICAgfSwKIAotICAgIF9zdHlsZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oKQorICAgIF9zdHls
ZVNoZWV0T3JNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX3VzZXJPcGVyYXRpb24gfHwgdGhpcy5faXNFZGl0aW5nU3R5bGUpCiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZmVjOTNmYzM3
OWRhNzg1MDg2OTFjOTZhZGVkNjNiMDRiODM5NDYxNy4uODdmZTU2YjdjMTlkZWFiMDUzYTE3ZTRj
Mzc4MmM3NjI5ZWQ0M2IyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTAwMCw4
ICsxMDAwLDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAK
ICAgICAgICAgLy8gVmlld3BvcnQtZGVwZW5kZW50IG1lZGlhIHF1ZXJpZXMgbWF5IGNhdXNlIHVz
IHRvIG5lZWQgY29tcGxldGVseSBkaWZmZXJlbnQgc3R5bGUgaW5mb3JtYXRpb24uCiAgICAgICAg
IC8vIENoZWNrIHRoYXQgaGVyZS4KLSAgICAgICAgaWYgKGRvY3VtZW50LT5zdHlsZVNlbGVjdG9y
KCktPmFmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpKQorICAgICAgICBpZiAoZG9jdW1lbnQtPnN0
eWxlU2VsZWN0b3IoKS0+YWZmZWN0ZWRCeVZpZXdwb3J0Q2hhbmdlKCkpIHsKICAgICAgICAgICAg
IGRvY3VtZW50LT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsK
KyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWVkaWFRdWVyeVJlc3Vs
dENoYW5nZShkb2N1bWVudCk7CisgICAgICAgIH0KIAogICAgICAgICAvLyBBbHdheXMgZW5zdXJl
IG91ciBzdHlsZSBpbmZvIGlzIHVwLXRvLWRhdGUuIFRoaXMgY2FuIGhhcHBlbiBpbiBzaXR1YXRp
b25zIHdoZXJlCiAgICAgICAgIC8vIHRoZSBsYXlvdXQgYmVhdHMgYW55IHNvcnQgb2Ygc3R5bGUg
cmVjYWxjIHVwZGF0ZSB0aGF0IG5lZWRzIHRvIG9jY3VyLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119237</attachid>
            <date>2011-12-14 09:53:54 -0800</date>
            <delta_ts>2011-12-14 15:34:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74292-20111214215352.patch</filename>
            <type>text/plain</type>
            <size>18089</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjEyM2ZiZjViOGU3NWVm
YzdmZTQwMTg4NWNjOWE5N2EzN2Q2ZDU3OC4uOTliNmFkMjEzOWVmMDNmODcwMmQyZDFkZTlkNGNl
YjRiYzQwMGQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTEyLTE0ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1N0eWxlc10gVXBkYXRlIHNlbGVjdGVkIERPTSBlbGVtZW50IHN0eWxlcyB3aGVuZXZl
ciBhcHBsaWNhYmxlIG1lZGlhIHF1ZXJpZXMgY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDI5MgorCisgICAgICAgIFRoZSBjaGFuZ2UgaW50
cm9kdWNlcyBhbmQgaGFuZGxlcyBpbiB0aGUgZnJvbnRlbmQgYSBuZXcgZXZlbnQgdHlwZSBmb3Ig
dGhlIENTUyBkb21haW4sCisgICAgICAgICJtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCIsIHdoaWNo
IGdldHMgZmlyZWQgZXZlcnkgdGltZSBhIHZpZXdwb3J0LWRlcGVuZGVudCBtZWRpYSBmZWF0dXJl
CisgICAgICAgIGNoYW5nZXMgaXRzIHZhbHVlLiBUaGlzIGFsbG93cyB1c2VycyB0byBzZWUgbGl2
ZSBjaGFuZ2VzIG9mIHRoZSAobWVkaWEtZGVwZW5kZW50KSBtYXRjaGVkCisgICAgICAgIHJ1bGVz
IGZvciBpbnNwZWN0ZWQgZWxlbWVudHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToK
KyAgICAgICAgKERvbWFpbk5hbWVGaXhlcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpjbGVhckZyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZE1lZGlhUXVlcnlSZXN1bHRDaGFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNZWRp
YVF1ZXJ5UmVzdWx0Q2hhbmdlSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0NTU1N0eWxlTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
b2RlbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUubWVk
aWFRdWVyeVJlc3VsdENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNo
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIucHJvdG90eXBlLm1lZGlh
UXVlcnlSZXN1bHRDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJp
Y3NTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBh
bmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUu
X3N0eWxlU2hlZXRPck1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlN0eWxlc1NpZGViYXJQYW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFy
UGFuZS5wcm90b3R5cGUuX3N0eWxlU2hlZXRPck1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKToKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OmxheW91dCk6CisKKwogMjAxMS0xMi0xMyAgWW9zaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmVuZGVyVGhlbWUgc2hvdWxkIGhhdmUgYSBmdW5jdGlvbiBmb3Ig
ZGlzYWJsZWQgdGV4dCBjb2xvciBhZGp1c3RtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CmluZGV4IGMxOTVjYjY3MDExZmZjYzQ5
M2JiM2IyOWRjMTJhMjllNDIxOTAzM2EuLjU3NzA0NzMyOWVlMGZhYzI2ODM3MDE5ZjhlYWFlNTQw
ZmRjZDZjMWUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnB5CkBAIC0yMDQsNyArMjA0LDcgQEAgY2xhc3MgRG9tYWluTmFtZUZpeGVz
OgogCiAgICAgICAgIHJldHVybiBSZXMKIAotICAgIHNraXBfanNfYmluZF9kb21haW5zID0gc2V0
KFsiUnVudGltZSIsICJDU1MiLCAiRE9NRGVidWdnZXIiXSkKKyAgICBza2lwX2pzX2JpbmRfZG9t
YWlucyA9IHNldChbIlJ1bnRpbWUiLCAiRE9NRGVidWdnZXIiXSkKICAgICBhZ2VudF90eXBlX21h
cCA9IHsiTmV0d29yayI6ICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50IiwgIkluc3BlY3RvciI6ICJJ
bnNwZWN0b3JBZ2VudCIsIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b24KaW5kZXggMTJiYTNjNjNhYTQxZTgyOTE2ODI0OWI4Y2VlYWQ3NTJiNDIzMThmMy4uOWEzYzIz
NTM0YmUwZjYxNzkxMTZkODNhOGU0MzgyZWFjZTM2OGNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTYxNyw2ICsxNjE3LDE0IEBACiAgICAgICAgIF0sCiAg
ICAgICAgICJjb21tYW5kcyI6IFsKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFt
ZSI6ICJlbmFibGUiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbmFibGVzIHRo
ZSBDU1MgYWdlbnQgZm9yIHRoZSBnaXZlbiBwYWdlLiBDbGllbnRzIHNob3VsZCBub3QgYXNzdW1l
IHRoYXQgdGhlIENTUyBhZ2VudCBoYXMgYmVlbiBlbmFibGVkIHVudGlsIHRoZSByZXN1bHQgb2Yg
dGhpcyBjb21tYW5kIGlzIHJlY2VpdmVkLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCisgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIkRpc2FibGVzIHRoZSBDU1MgYWdlbnQgZm9yIGdpdmVuIHBhZ2UuIgorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRN
YXRjaGVkU3R5bGVzRm9yTm9kZSIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJ
ZCIgfSwKQEAgLTE3NDIsNiArMTc1MCwxMiBAQAogICAgICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgYWxsIHN1cHBvcnRlZCBDU1MgcHJvcGVy
dHkgbmFtZXMuIgogICAgICAgICAgICAgfQorICAgICAgICBdLAorICAgICAgICAiZXZlbnRzIjog
WworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogIm1lZGlhUXVlcnlSZXN1
bHRDaGFuZ2VkIiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZXMgd2hlbmV2
ZXIgYSBNZWRpYVF1ZXJ5IHJlc3VsdCBjaGFuZ2VzIChmb3IgZXhhbXBsZSwgYWZ0ZXIgYSBicm93
c2VyIHdpbmRvdyBoYXMgYmVlbiByZXNpemVkLikgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24g
Y29uc2lkZXJzIG9ubHkgdmlld3BvcnQtZGVwZW5kZW50IG1lZGlhIGZlYXR1cmVzLiIKKyAgICAg
ICAgICAgIH0KICAgICAgICAgXQogICAgIH0sCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggZjUwNmE1YmZiNWE0YmQ5NTA5M2Vh
MzQ1MDAzYTgwMzIyODc4Y2Y0Ny4uMTlhNDYxM2U5Mjk4ZDFmYjg0NzI1MzFlNmRmOThjMTIxODZi
YzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
SFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC0xMjgs
NiArMTI5LDEwIEBACiAvLyAgICB0ZXh0ICAgICAgICAgOiA8c3RyaW5nPiAvLyBPcHRpb25hbCAt
IHdoZW5ldmVyIHRoZSB0ZXh0IGlzIGF2YWlsYWJsZSBmb3IgYSB0ZXh0LWJhc2VkIHN0eWxlc2hl
ZXQKIC8vIH0KIAorbmFtZXNwYWNlIENTU0FnZW50U3RhdGUgeworc3RhdGljIGNvbnN0IGNoYXIg
Y3NzQWdlbnRFbmFibGVkW10gPSAiY3NzQWdlbnRFbmFibGVkIjsKK30KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBlbnVtIEZvcmNlUHNldWRvQ2xhc3NGbGFncyB7CkBAIC0xODYsMTQgKzE5MSwx
NSBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0NTU1N0eWxlUnVsZShDU1NS
dWxlKiBydWxlKQogCiBJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRl
LCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCiAgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8
SW5zcGVjdG9yQ1NTQWdlbnQ+KCJDU1MiLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSkKKyAg
ICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1fZG9tQWdlbnQoZG9tQWdlbnQpCiAgICAgLCBtX2xh
c3RQc2V1ZG9TdGF0ZSgwKQorICAgICwgbV9lbmFibGVkKGZhbHNlKQogICAgICwgbV9sYXN0U3R5
bGVTaGVldElkKDEpCiAgICAgLCBtX2xhc3RSdWxlSWQoMSkKICAgICAsIG1fbGFzdFN0eWxlSWQo
MSkKIHsKICAgICBtX2RvbUFnZW50LT5zZXRET01MaXN0ZW5lcih0aGlzKTsKLSAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckNTU0FnZW50KHRoaXMpOwogfQogCiBJbnNwZWN0
b3JDU1NBZ2VudDo6fkluc3BlY3RvckNTU0FnZW50KCkKQEAgLTIwMyw5ICsyMDksMTkgQEAgSW5z
cGVjdG9yQ1NTQWdlbnQ6On5JbnNwZWN0b3JDU1NBZ2VudCgpCiAgICAgcmVzZXQoKTsKIH0KIAor
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZy
b250ZW5kKQoreworICAgIEFTU0VSVCghbV9mcm9udGVuZCk7CisgICAgbV9mcm9udGVuZCA9IGZy
b250ZW5kLT5jc3MoKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckNT
U0FnZW50KHRoaXMpOworfQorCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpjbGVhckZyb250ZW5k
KCkKIHsKKyAgICBBU1NFUlQobV9mcm9udGVuZCk7CisgICAgbV9mcm9udGVuZCA9IDA7CiAgICAg
Y2xlYXJQc2V1ZG9TdGF0ZSh0cnVlKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldElu
c3BlY3RvckNTU0FnZW50KDApOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaXNjYXJk
QWdlbnQoKQpAQCAtMjE0LDYgKzIzMCwxNCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaXNj
YXJkQWdlbnQoKQogICAgIG1fZG9tQWdlbnQgPSAwOwogfQogCit2b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpyZXN0b3JlKCkKK3sKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihDU1NBZ2VudFN0
YXRlOjpjc3NBZ2VudEVuYWJsZWQpKSB7CisgICAgICAgIEVycm9yU3RyaW5nIGVycm9yOworICAg
ICAgICBlbmFibGUoJmVycm9yKTsKKyAgICB9Cit9CisKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OnJlc2V0KCkKIHsKICAgICBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LmNsZWFyKCk7CkBAIC0y
MjIsNiArMjQ2LDI4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0KCkKICAgICBtX2Rv
Y3VtZW50VG9JbnNwZWN0b3JTdHlsZVNoZWV0LmNsZWFyKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCit7CisgICAgaWYgKG1fZW5hYmxlZCkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fZW5hYmxlZCA9IHRydWU7CisgICAgbV9zdGF0ZS0+c2V0Qm9v
bGVhbihDU1NBZ2VudFN0YXRlOjpjc3NBZ2VudEVuYWJsZWQsIHRydWUpOworfQorCit2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKK3sKKyAgICBpZiAoIW1fZW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZW5hYmxlZCA9IGZhbHNlOworICAgIG1fc3Rh
dGUtPnNldEJvb2xlYW4oQ1NTQWdlbnRTdGF0ZTo6Y3NzQWdlbnRFbmFibGVkLCBmYWxzZSk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZE1lZGlhUXVlcnlSZXN1bHRDaGFuZ2UoKQor
eworICAgIGlmIChtX2Zyb250ZW5kICYmIG1fZW5hYmxlZCkKKyAgICAgICAgbV9mcm9udGVuZC0+
bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKK30KKwogYm9vbCBJbnNwZWN0b3JDU1NBZ2VudDo6
Zm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlw
ZSBwc2V1ZG9UeXBlKQogewogICAgIGlmIChtX2xhc3RFbGVtZW50V2l0aFBzZXVkb1N0YXRlICE9
IGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5o
CmluZGV4IDc0YTBiMDJiNmZlZjY5Nzc5NTEwZmRiODExMDcxOGEyYzZjM2M4OTcuLjc0ZWQ1MmM2
MTNiZmRlNmYzMWM4MmI1ZDQzMGI5ODcyYmMwYWMxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjZGVmaW5lIElu
c3BlY3RvckNTU0FnZW50X2gKIAogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxlU2hlZXQuaCIKQEAg
LTQ5LDYgKzUwLDcgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnN0cnVtZW50
aW5nQWdlbnRzOwogY2xhc3MgTmFtZU5vZGVNYXA7CiBjbGFzcyBOb2RlOworY2xhc3MgTm90aWZ5
U3R5bGVTZWxlY3RvckNoYW5nZWRUYXNrOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAt
NjUsOSArNjcsMTQgQEAgcHVibGljOgogICAgIH5JbnNwZWN0b3JDU1NBZ2VudCgpOwogCiAgICAg
Ym9vbCBmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSk7
CisgICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZEFn
ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKKyAgICB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyopOworICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgcmVz
ZXQoKTsKKyAgICB2b2lkIGRpZE1lZGlhUXVlcnlSZXN1bHRDaGFuZ2UoKTsKIAogICAgIHZvaWQg
Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+KiBzdHlsZSk7CiAgICAgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGlubGluZVN0eWxl
LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBhdHRyaWJ1dGVzKTsKQEAgLTExMCw5ICsxMTcsMTEg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJQc2V1ZG9TdGF0ZShib29sIHJlY2FsY1N0eWxl
cyk7CiAKKyAgICBJbnNwZWN0b3JGcm9udGVuZDo6Q1NTKiBtX2Zyb250ZW5kOwogICAgIEluc3Bl
Y3RvckRPTUFnZW50KiBtX2RvbUFnZW50OwogICAgIFJlZlB0cjxFbGVtZW50PiBtX2xhc3RFbGVt
ZW50V2l0aFBzZXVkb1N0YXRlOwogICAgIHVuc2lnbmVkIG1fbGFzdFBzZXVkb1N0YXRlOworICAg
IGJvb2wgbV9lbmFibGVkOwogCiAgICAgSWRUb0luc3BlY3RvclN0eWxlU2hlZXQgbV9pZFRvSW5z
cGVjdG9yU3R5bGVTaGVldDsKICAgICBDU1NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0
IG1fY3NzU3R5bGVTaGVldFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZDc4
OTQyMmFhMjBjYTkzYmQ2ODg1YTlhMzQ2OGEwNGU0NWFmYWVjOC4uYzA5ZWI2NjVjZWU3NWU3Nzhk
NDgwY2U0ZDNlNWVlNDk0NmVlM2JkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTE4Miw2ICsxODIsMTIgQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lV2luZG93RGlzY2FyZGVkSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnMKICAgICAgICAgY29uc29sZUFnZW50LT5mcmFtZVdpbmRv
d0Rpc2NhcmRlZCh3aW5kb3cpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkTWVkaWFRdWVyeVJlc3VsdENoYW5nZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cykKK3sKKyAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAgICAgICAgY3NzQWdl
bnQtPmRpZE1lZGlhUXVlcnlSZXN1bHRDaGFuZ2UoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVu
c2lnbmVkIG1vZGlmaWVyRmxhZ3MpCiB7CiAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21B
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5k
ZXggYTFlODk5MjQ2YjRlNWVkNWYyMWIzMjQ1MWU4NjYxMmJhYTAyZTFlOS4uMTgyYWFiYThiNWM2
ZGUyNzYwMmYxOWU4YzNmNTE0MjhmYjk4ZWI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtODcsNiArODcsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKERvY3VtZW50Kiwg
Q2hhcmFjdGVyRGF0YSopOwogICAgIHN0YXRpYyB2b2lkIGRpZEludmFsaWRhdGVTdHlsZUF0dHIo
RG9jdW1lbnQqLCBOb2RlKik7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVXaW5kb3dEaXNjYXJkZWQo
RnJhbWUqLCBET01XaW5kb3cqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRNZWRpYVF1ZXJ5UmVzdWx0
Q2hhbmdlKERvY3VtZW50Kik7CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxl
bWVudChQYWdlKiwgY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3Mp
OwogICAgIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlUHJlc3MoUGFnZSopOwpAQCAtMjI3LDYgKzIy
OCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiwgQ2hhcmFjdGVyRGF0YSopOwogICAgIHN0YXRpYyB2b2lk
IGRpZEludmFsaWRhdGVTdHlsZUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBOb2RlKik7
CiAgICAgc3RhdGljIHZvaWQgZnJhbWVXaW5kb3dEaXNjYXJkZWRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCBET01XaW5kb3cqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRNZWRpYVF1ZXJ5UmVzdWx0
Q2hhbmdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAKICAgICBzdGF0aWMgdm9pZCBtb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IEhpdFRl
c3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKICAgICBzdGF0aWMgYm9vbCBoYW5k
bGVNb3VzZVByZXNzSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CkBAIC00MzUsNiArNDM3LDE1
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNj
YXJkZWQoRnJhbWUqIGZyYW1lLCBET01XaW5kCiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlKERvY3VtZW50
KiBkb2N1bWVudCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50
KSkKKyAgICAgICAgZGlkTWVkaWFRdWVyeVJlc3VsdENoYW5nZUltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cyk7CisjZW5kaWYKK30KKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChQYWdlKiBwYWdlLCBjb25zdCBIaXRUZXN0UmVzdWx0
JiByZXN1bHQsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5
bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVN
b2RlbC5qcwppbmRleCA2MmQ4ZTRhMzE4ZjY0MWNmMDI4NzZjZjJjMDk4ZWI3YzcxYWI0ZDQ5Li5m
YTE2ZDVmNzNhNTg0ZThjYWViNGMxNTA3MDRjMDY3MDk5NDM3ZmY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC0zNSw2
ICszNSw4IEBACiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbCA9IGZ1bmN0aW9uKCkKIHsKICAg
ICBuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcodGhpcyk7Cisg
ICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNTU0Rpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rv
ci5DU1NEaXNwYXRjaGVyKHRoaXMpKTsKKyAgICBDU1NBZ2VudC5lbmFibGUoKTsKIH0KIAogV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucGFyc2VSdWxlQXJyYXlQYXlsb2FkID0gZnVuY3Rpb24o
cnVsZUFycmF5KQpAQCAtNDYsNyArNDgsOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5w
YXJzZVJ1bGVBcnJheVBheWxvYWQgPSBmdW5jdGlvbihydWxlQXJyYXkpCiB9CiAKIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cyA9IHsKLSAgICBTdHlsZVNoZWV0Q2hhbmdlZDogIlN0
eWxlU2hlZXRDaGFuZ2VkIgorICAgIFN0eWxlU2hlZXRDaGFuZ2VkOiAiU3R5bGVTaGVldENoYW5n
ZWQiLAorICAgIE1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkOiAiTWVkaWFRdWVyeVJlc3VsdENoYW5n
ZWQiCiB9CiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKQEAgLTI0
OCw2ICsyNTEsMTEgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewog
ICAgICAgICBDU1NBZ2VudC5hZGRSdWxlKG5vZGVJZCwgc2VsZWN0b3IsIGNhbGxiYWNrLmJpbmQo
dGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2FsbGJhY2ssIHNlbGVjdG9yKSk7CiAgICAg
fSwKIAorICAgIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
b2RlbC5FdmVudHMuTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQpOworICAgIH0sCisKICAgICBfZG9j
dW1lbnRFbGVtZW50SWQ6IGZ1bmN0aW9uKG5vZGVJZCkKICAgICB7CiAgICAgICAgIHZhciBub2Rl
ID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJZChub2RlSWQpOwpAQCAtODUwLDYgKzg1
OCwyMSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5
cGUgPSB7CiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlJlc291cmNlRG9tYWluTW9kZWxCaW5kaW5nLnBy
b3RvdHlwZTsKIAogLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworV2ViSW5zcGVjdG9yLkNTU0Rp
c3BhdGNoZXIgPSBmdW5jdGlvbihjc3NNb2RlbCkKK3sKKyAgICB0aGlzLl9jc3NNb2RlbCA9IGNz
c01vZGVsOworfQorCitXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7Cisg
ICAgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRo
aXMuX2Nzc01vZGVsLm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CisgICAgfQorfQorCisvKioK
ICAqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbH0KICAqLwogV2ViSW5zcGVjdG9y
LmNzc01vZGVsID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKaW5kZXggZjg5ZmI2ZDU1NDk5M2FkMDhk
YzE0YTg2YmU4MWNkMzdmMTgxNzdkMC4uOTUyYTk2ODQ0ZDYxMTAzN2ZiMjFkN2FjZTU3ZmZkZmI4
MGNkZTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9N
ZXRyaWNzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKQEAgLTM0LDcgKzM0LDggQEAgV2ViSW5zcGVjdG9y
Lk1ldHJpY3NTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNwZWN0b3IuU2lk
ZWJhclBhbmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1ldHJpY3MiKSk7CiAK
LSAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5bGVTaGVldENoYW5nZWQsIHRoaXMuX3N0eWxlU2hlZXRD
aGFuZ2VkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuU3R5bGVTaGVldENoYW5nZWQsIHRo
aXMuX3N0eWxlU2hlZXRPck1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkLCB0aGlzKTsKKyAgICBXZWJJ
bnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
b2RlbC5FdmVudHMuTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQsIHRoaXMuX3N0eWxlU2hlZXRPck1l
ZGlhUXVlcnlSZXN1bHRDaGFuZ2VkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkF0dHJNb2RpZmll
ZCwgdGhpcy5fYXR0cmlidXRlc1VwZGF0ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kb21B
Z2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuQXR0clJl
bW92ZWQsIHRoaXMuX2F0dHJpYnV0ZXNVcGRhdGVkLCB0aGlzKTsKIH0KQEAgLTgyLDcgKzgzLDcg
QEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRJbmxpbmVTdHlsZXNBc3luYyhub2RlLmlkLCBpbmxp
bmVTdHlsZUNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKLSAgICBfc3R5bGVTaGVldENo
YW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICBfc3R5bGVTaGVldE9yTWVkaWFRdWVyeVJlc3VsdENoYW5n
ZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2lubmVyVXBkYXRlKCk7CiAgICAg
fSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxl
c1NpZGViYXJQYW5lLmpzCmluZGV4IGViY2U1OTJjNmIzOWQ5YjFhNzNmZWFhMDQyNjU0ZDU2MjVi
YmViZjIuLjNmOTU1YzFiOWFjOGFkMGQ4YzRlZDk0NDQxY2EzMWIzNTExOTAwYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFy
UGFuZS5qcwpAQCAtODksNyArODksOCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUg
PSBmdW5jdGlvbihjb21wdXRlZFN0eWxlUGFuZSkKICAgICB0aGlzLl9zZWN0aW9uc0NvbnRhaW5l
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuYm9keUVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fc2VjdGlvbnNDb250YWluZXIpOwogCi0gICAgV2ViSW5zcGVjdG9y
LmNzc01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZl
bnRzLlN0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdlZCwgdGhpcyk7Cisg
ICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNT
U1N0eWxlTW9kZWwuRXZlbnRzLlN0eWxlU2hlZXRDaGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0T3JN
ZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVs
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk1lZGlh
UXVlcnlSZXN1bHRDaGFuZ2VkLCB0aGlzLl9zdHlsZVNoZWV0T3JNZWRpYVF1ZXJ5UmVzdWx0Q2hh
bmdlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5BdHRyTW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0
ZXNNb2RpZmllZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5BdHRyUmVtb3ZlZCwgdGhpcy5fYXR0
cmlidXRlc1JlbW92ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuU3R5bGVJbnZhbGlkYXRlZCwg
dGhpcy5fc3R5bGVJbnZhbGlkYXRlZCwgdGhpcyk7CkBAIC0yODYsNyArMjg3LDcgQEAgV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
X2V4ZWN1dGVSZWJ1aWxkVXBkYXRlKG5vZGUsIHVzZXJDYWxsYmFjayk7CiAgICAgfSwKIAotICAg
IF9zdHlsZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oKQorICAgIF9zdHlsZVNoZWV0T3JNZWRpYVF1
ZXJ5UmVzdWx0Q2hhbmdlZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3Vz
ZXJPcGVyYXRpb24gfHwgdGhpcy5faXNFZGl0aW5nU3R5bGUpCiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZmVjOTNmYzM3OWRhNzg1MDg2OTFjOTZh
ZGVkNjNiMDRiODM5NDYxNy4uODdmZTU2YjdjMTlkZWFiMDUzYTE3ZTRjMzc4MmM3NjI5ZWQ0M2Iy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTAwMCw4ICsxMDAwLDEwIEBAIHZv
aWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAKICAgICAgICAgLy8gVmll
d3BvcnQtZGVwZW5kZW50IG1lZGlhIHF1ZXJpZXMgbWF5IGNhdXNlIHVzIHRvIG5lZWQgY29tcGxl
dGVseSBkaWZmZXJlbnQgc3R5bGUgaW5mb3JtYXRpb24uCiAgICAgICAgIC8vIENoZWNrIHRoYXQg
aGVyZS4KLSAgICAgICAgaWYgKGRvY3VtZW50LT5zdHlsZVNlbGVjdG9yKCktPmFmZmVjdGVkQnlW
aWV3cG9ydENoYW5nZSgpKQorICAgICAgICBpZiAoZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3IoKS0+
YWZmZWN0ZWRCeVZpZXdwb3J0Q2hhbmdlKCkpIHsKICAgICAgICAgICAgIGRvY3VtZW50LT5zdHls
ZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWVkaWFRdWVyeVJlc3VsdENoYW5nZShkb2N1bWVu
dCk7CisgICAgICAgIH0KIAogICAgICAgICAvLyBBbHdheXMgZW5zdXJlIG91ciBzdHlsZSBpbmZv
IGlzIHVwLXRvLWRhdGUuIFRoaXMgY2FuIGhhcHBlbiBpbiBzaXR1YXRpb25zIHdoZXJlCiAgICAg
ICAgIC8vIHRoZSBsYXlvdXQgYmVhdHMgYW55IHNvcnQgb2Ygc3R5bGUgcmVjYWxjIHVwZGF0ZSB0
aGF0IG5lZWRzIHRvIG9jY3VyLgo=
</data>
<flag name="review"
          id="119190"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>